704 Commits over 610 Days - 0.05cph!
Turn BaseStyles members into a table containing type, default value, and inheritance state, generate BaseStyles.Defaults
Auto-generate layout cascading based on inheritance state
Use BaseStyles.Default instead of hardcoding defaults
Similar to `css-defaults` branch but this does it better - so I'm
deleting that in favour of this.
Rather than hard-coding the default value every time we fetch it:
```cs
var value = Styles.BackgroundColor ?? Color.White;
```
We should be doing something like:
```cs
var value = Styles.BackgroundColor ?? Default.BackgroundColor;
```
Provide default values as fallbacks for style transitions, use LerpProperty inside BaseStyles.FromLerp
In FromLerp, check if the property we're trying to change is actually changing
Prevents us from stomping property changes when a transition is running
with `transition: all` if you have an animation running simulataneously
Move default styles into `DefaultStyles`, make everything readonly
Generate Style.Unset(), start using IsSet()
Remove nullability from public-facing BaseStyles properties
We'll keep the internal nullable fields, allowing us to automatically
refer back to default property values if these are null (these are now
defined alongside the properties themselves).
This means we don't have to keep remembering the default values for each
CSS property and check for null manually each time - which is a massive
pain in the ass and was spilling over into our menu addon(!)
Mirror UV when sampling inside filter - prevents ugly border around some elements when using `filter: blur()`
Default to using opposite value inside BaseStyles.Lerp functions if a value is null
PanelTransform.Lerp will handle null for us, we don't need to do it inside BaseStyles.Lerp
Pull Styles.FromLerp up to BaseStyles, auto-generate for all properties matching select types
Add auto-generated BaseStyles.LerpProperty
Update transition logic to use new auto-generated functions
Handle box-shadow transitions / animations separately for now
Welcome screen link tweaks: "Wiki" becomes "Getting Started", move to top
UI: Add support for keyframed box shadows - should probably take a look at changing this so that we have consistent property support between transitions and animations
CSS: Flex shorthand support
CSS: Fix nesting inside `background` (fixes devcam)
CSS `background` shorthand no longer requires specific order, more compliant with spec
st&alone: Use test grid texture instead of non-existent burger billboard texture (moved to asset.party)
`background` shorthand color transition
CSS `animation` shorthand, same syntax as web (https://drafts.csswg.org/css-animations/#animation) - any order
Can opt out of drag scrolling with `Panel.CanDragScroll = false;`, enabled by default (sboxgame/issues/issues/3491)
`@readonly` and `@editable` asset browser filters (sboxgame/issues/issues/3205)
Basic parsing support for CSS `background` shorthand
Move position/length shorthand parsing into Parse.TryReadPositionAndSize (used for both mask & background shorthands)
UI: don't clamp UVs in shader when BgRepeat mode is Clamp, fixes angled gradients
Background angles conform to css spec - add offset to match +x as being 0 degrees instead of +y
Local transforms for hand info, we'll convert back to world transforms in managed after anchor transform changes
When loading game project (through welcome screen), if it fails to compile, don't immediately bail - load the project but don't show menu
Disable all game projects when entering content mode
Use s&box logo as window icon for welcome screen 👋
Revert "Don't clean up Release path when running processor codegen shit, fixes razor gen when testing release builds"
This reverts commit 738d6ef11f5591743600177ff476b7d5138f9741.
Don't clean up Release path when running processor codegen shit, fixes razor gen when testing release builds
Max 32 chars for ident edit, don't show sandbox gamemode twice
Add icons for all file menu items
Add "Open in Editor" context menu option to ProjectRow, shows up for library/tools/addon projects
Make StartScreen a BaseWindow, add HasMaximizeButton
StartScreen is no longer modal
Cap IdentEdit to 16 chars
Split out Explorer into 3 tabs now that our docking doesn't suck
Draw active project at top of Project tab
When closing or opening a game project, run disconnect & close active menu
Always show "edit configurations" option in launcher regardless, open project settings or global config editor based on context
Make package selector modal
Add IsContentMode to tools Global class
Load local menu when clicking menu toolbar button
Bring back launch configs with some changes:
In content mode:
- Load global configs from `launcher.launchconfigs`
- Display "Edit Launch Configurations" option
With game loaded:
- Load project-specific configs from .addon (edit these in project settings)
Remove primary styling from SidebarLink, makes the content button gray
Single Game Project (#1129)
Better control over currently mounted project in Explorer dock
"Open game menu" on launch bar
Run localaddons.changed when project is activated
Show active game in projects list
Small UI tweaks
File -> New Project (for non-game projects)
Try to fix DPI scaling by manually adjusting window size
Don't wait for cloud project fetch when displaying start screen, run inside task
Throw exception if git returns non-zero exit code
Handle exception thrown when git isn't installed differently
Don't show irrelevant options in welcome screen context menus
Set modal properly on ProjectDownload 🤦
"Open Game Project..." -> "Close Game Project"
"Open Menu Screen" option in Game menu
Filter by open-source projects in welcome screen
Project name first in editor window title
Fix black screen when loading into non-existent game projects
Globe/folder button functionality, indicate disabled projects, single-click for project loading, finger cursor
Context menu for cloud packages
Move content mode button to sidebar
Default launcher to sandbox gamemode (if in content mode)
Show "select folder" dialog when cloning cloud project from welcome screen
LocalProject.CurrentGame is manually set, change ProjectTemplate default description
Make LaunchToolbar play button work again
Spaceship test addon is type "addon"
Rather than disabling new game projects by default, disable existing game projects instead
cl_list_project is ordered, shows active & type
Add test for desired single project behaviour
Tests use AddFromFileBuiltIn when adding base addon
[Squash] StartScreen has "Home" and "Create new game" sections
Simplify launcher
Show "Last Opened" on last opened game row
Give StartScreen obvious sections
[Squash] General editor tweaks and improvements
Only read/write addons.json in tools mode, cl_list_projects debug command
[Squash] Editor startup flow
[Squash] Show progress when loading projects, wait until complete before showing editor
New project sets newly created project as active
[Squash] StartScreen sorting and filtering
Minor fixes
[Squash] Native editor JumpList support, JumpList content, minor editor tweaks
StartScreen home sections are ExpandGroups
[Squash] SegmentedControl and ItemRow cleanup
Rename "empty" to "content mode", add "-skip_start_screen" command line switch, works with jump list
Shut down engine properly when start screen is closed 🤦
Fix cloud project cloning, move into Utility
Command line project loading
Use SegmentedControl in TabWidget rather than doing the same thing twice
Game editor menu, contains options for uploading, opening explorer, etc.
Implement remaining missing functionality (file menu, templates)
Tools cleanup
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