874 Commits over 519 Days - 0.07cph!
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
UI: Don't cut, copy or paste if alt is held
Windows interprets AltGr as ctrl+alt, some keyboard layouts use AltGr + x/c/v for characters
sboxgame/issues/680
Do filter highlighting in 2 steps to prevent HTML tag contamination
Use .Any instead of .All when checking filter terms
Switch to using filter terms (list of keywords separated by spaces)
Use stringbuilder instead of regex for highlighting
Basic console filtering
Highlight matches
https://files.facepunch.com/alexguthrie/1b0911b1/sbox-dev_RpdUULtu5w.mp4
Also apply filter to logger name
Card gradient styling tweaks, cleanup
https://files.facepunch.com/alexguthrie/1b1011b1/sbox-dev_L54Q6vUdyX.mp4
Start splitting menu into multiple sections (e.g. Home)
Add MenuSectionAttribute, automatically populate navbar based on these
Cards accept custom images
When in-game, make background very slightly transparent
Clean up card styling
Cards use smaller gap between lines, lighten button color
More consistent card hover effect, just use white for subtext color
Remove $small-text
Only allow co-op list refresh if there are no servers
Also apply filter to logger name
Basic console filtering
Highlight matches
https://files.facepunch.com/alexguthrie/1b0911b1/sbox-dev_RpdUULtu5w.mp4
Use mask image for main menu GameGroup
Tidy up MenuCharacter a bit + give citizen "interest"
If you stop moving your mouse the citizen will eventually lose interest in it, and the lookat weight will return back to 0
Use adjust-hue, lighten for some scss variables, based on accent color
Card gradient underlay
Move menu navbar away from window control buttons
Add mouse pitch & yaw invert options
Related to sboxgame/issues/2708
Add adjust-hue to color parser
RenderAttributes: add GetComboInt, GetComboBool, GetComboEnum functions
SceneObject: add getters for ClipPlane and ClipPlaneEnabled
SceneObject.ClipPlane and SceneObject.ClipPlaneEnabled
For sboxgame/issues/2260
Quick loading screen implementation
Reduce menu character lookat weight when cursor is close
Apply mask image & border images in the same way as background images
CSS: Fix parsing multiple filters, add a test for it
Menu citizen looks at mouse
Just display server name and player counts in co-op for now
Display player counts in co-op card
Secondary hover gradient for cards
Move MainMenu into Menus/