947 Commits over 580 Days - 0.07cph!
Implement EditorPreferences.ShowStartScreen
Tools cleanup
Implement remaining missing functionality (file menu, templates)
Remove old Utility.Projects.SetActive(), error if setting non-gamemode project
Fix NRE when launching projects through jump list
Use direct path to project through jump lists instead of addon ident
We can add the project manually if it exists but we don't know about
it (can happen if you pin something on the jump list, then remove it
from registered addons list, and then try to launch the pinned addon)
Remove sections from start screen, use existing project creator (with new layout)
Use SegmentedControl in TabWidget rather than doing the same thing twice
Game editor menu, contains options for uploading, opening explorer, etc.
Command line project loading
Remove Game.IsEditorEmpty, can do this better later
Auto-start cloud projects when downloaded from start screen
Rename "empty" to "content mode", add "-skip_start_screen" command line switch, works with jump list
StartScreen Section -> Page
Shut down engine properly when start screen is closed 🤦
Fix cloud project cloning, move into Utility
StartScreen home sections are ExpandGroups
Item rows handle longer names better + display VR compatibility where appropriate
Tidy up SegmentedControl
[Squash] Native editor JumpList support, JumpList content, minor editor tweaks
cl_list_project is ordered, shows active & type
Separator light variant
Segmented control widget
https://files.facepunch.com/alexguthrie/1b0511b1/sbox-dev_SglhcDRI9f.mp4
StartScreen sorting
StartScreen search filter
ToRelativeTimeString adjustments: "just now" for <30 minutes, "recently" for <6 hours
Make loading progress messages more explanatory
Sort jump list by last opened, cleanup
Show progress windows in center of screen
New project sets newly created project as active
Use existing progress class
Make ProgressWindow a dialog without close button
Wait for project compile to finish before showing game menu
Basic indicator while game project is loading
Only read/write addons.json in tools mode, cl_list_projects debug command
Startup flow
Cleanup
Move editor menus around
PopupWindows are dialogs
"Compile Optimized Shaders" displays confirmation dialog
StartScreen cleanup
Window.IsDialog doesn't display "Help" button that nobody uses
Give StartScreen obvious sections
https://files.facepunch.com/alexguthrie/1b0111b1/sbox-dev_vviZ78o95D.png
Show "Last Opened" on last opened game row
Template descriptions
NewProject section titles
Simplify launcher
Use rows for templates, auto-fill info based on template, find best available folder
Move "empty environment" option inline with most recent game project
Custom StartScreenSection attribute
LocalProject.LastOpened, sort start screen games
MenuAttribute priority property
File -> New Game, File -> Open Game
StartScreen sections
Derive ProjectRow from generic ItemRow
Experimental - show cloud projects inside start screen
Show available cloud packages in startscreen
Clean up Home.UpdateProjectList
Squash commit of everything so far
Tests use AddFromFileBuiltIn when adding base addon
Move JumpList into Sandbox.Engine, set up in ToolsDll
JumpList icons
https://files.facepunch.com/alexguthrie/1b2811b1/JumpList_Icons.png
Better JumpList API, add multiple & set categories, show projects in there
Use ProjectRow instead of custom LaunchpadProject, move some stuff in there
Use Global.BackendTitle and BackendUrl for asset.party link
Remove borders from ProjectRow and SidebarButton
Experimental JumpList support
"Open Empty Environment" button
For anyone that isn't working on a specific game (addon creators, mappers, etc)
SidebarButton.Clear acts more like a link
Draw pin button on right, make it blue when project is pinned
SidebarButton.Link functionality
Don't need to show the "show on startup" toggle outside of editor prefs
Fix ToggleSwitch not displaying correct value when starting value is true
StartScreen layout - pin menu row to top, only scroll through project launchpad itself
Make EditorPreferencesWindow modal
StartScreen settings button, opens editor prefs
ToRelativeTimeString extensions for TimeSpan and DateTime (moved from PackageCard)
Launchpad project card displays relative time string
Project pinning
SidebarButton Link and Clear types are classes
Fancy switch button
https://files.facepunch.com/alexguthrie/1b2711b1/sbox_CXvCYYRATC.mp4
Remove Window.IsOnTop, calling Window.SetModal does the same thing
Rename switch to ToggleSwitch, move into Widgets/
StartScreen UI improvements, move custom widgets into partial class
Button.Clear (similar to Button.Primary)
New start screen UI
https://files.facepunch.com/alexguthrie/1b2611b1/sbox_uofPG8ktak.png
Initial "one game project" logic
Basic start screen
Add Window.IsOnTop
Show start screen on boot if selected, display on top of editor
Apply WindowStaysOnTopHint on top of existing window flags
UI: When building transforms, apply inverse of parent
UI: Temp ordered transform list when building matrix
Make border-wrap size resolution independent
UI: Flip top & bottom angles to match spec
UI filter & text shader cleanup
Split panel layer logic, clean up
Add attributes to shaders where dynamic params were being used before
Compile optimized ui border wrap shader
Initial `filter: border-wrap( ... )` implementation
For alpha-based borders, e.g. images
https://files.facepunch.com/alexguthrie/1b2011b1/sbox-dev_D1MzaQjB8X.mp4
Use FromShader for UI materials, delete vmats
Editor console filter (#1085)
https://files.facepunch.com/alexguthrie/1b1911b1/sbox-dev_ULtfmHPA94.png
Basic console filtering
Highlight matches
https://files.facepunch.com/alexguthrie/1b0911b1/sbox-dev_RpdUULtu5w.mp4
Also apply filter to logger name
Switch to using filter terms (list of keywords separated by spaces)
Use stringbuilder instead of regex for highlighting
Use .Any instead of .All when checking filter terms
Do filter highlighting in 2 steps to prevent HTML tag contamination
Cleanup
Move filter inline
Move language cvar over to managed, add more languages
Language list matches Steam's fully supported language list (see https://partner.steamgames.com/doc/store/localization/languages under "Full Platform Supported Languages")
Update shaders to new API + build optimized shaders
VR: Move high-resolution menu rendering behind IsHighQualityVR property on RootPanel
VR: Only wait for present if we have a valid swapchain handle
UI: Save default render target when iterating through layer stacks
UI: Fix division by zero inside KeyFrames when startBlock and endBlock intervals match
UI: Implement animation-fill-mode
UI: Implement background-blend-mode