982 Commits over 610 Days - 0.07cph!
Actions, action sets, action state, analog input data
Delete VR project
Simplify MaterialSystem2 VR code, don't do any native VR setup
Initial basic managed openvr setup - just logs hmd position to console for now
Debug all tracked devices
Skeletal input data
`mask-repeat`: `no-repeat` uses border sampler, `round` acts like `clamp`
sboxgame/issues/issues/4061
Don't enable D_WORLDPANEL combo inside panel layers, avoids multiple uses of worldpanel matrix when a filter is active
sboxgame/issues/issues/4056
Angles, Rotation, Vector2, Vector3, Vector4 all implement IParsable, have both TryParse and Parse + tests
sboxgame/issues/issues/4051
ui_cssbox uses custom samplers for border image
sboxgame/issues/issues/4054
Make StartScreen inside EditorMainWindow, instead of going through an event
Fix text gradients 🤦♂️
Fix keyword-based transform origin values
Don't hide EditorMainWindow on startup if there isn't a StartScreen
e.g. if tools fail to compile
Lettters -> letters (sboxgame/issues/issues/4030)
Fix for transform-origin values not correctly being applied
Add GlobalEngineNamespace, move TypeLibrary into it so that we can access it from Sandbox.Game and Sandbox.UI
Bring clipboard back in case people were using it, forward to Sandbox.Game
Move UseTemplate attribute
TypeLibrary fixes
Move input, UISystem
Move controls over, delete unused clipboard class
Temp fix for route attribute
Move Screen
Move textblock code into Sandbox.UI, compile with /unsafe
Forward various types to Sandbox.Game
Move from Sandbox.Game into Sandbox.UI: anim, data, input, panel, parser, razor, render, styles, util, yoga wrapper
Move to Tier1, remove Raster and just use Texture
Sandbox.UI
Abstract Sandbox.UI input, move over RootPanel, data classes, IPanel
Move BaseStyles into Sandbox.UI
Fix flawed equality logic
Sizes passed to ImageRect.Calculate with Undefined unit will correctly use default size
Default text overflow to "None", spec default is clip but ours behaves differently - this will do for now
Give `line-height`, `letter-spacing` and `word-spacing` default values, no need to null check them
Don't implicitly clamp backgrounds if background-size is `cover`
Handle LengthUnit.Undefined gracefully, document
Call GetPixels() on backdrop filter props instead of getting Value directly, fixes percentage/fraction-based filters
CSS: Better Autogen (#1222)
Leaves out nullability changes for a later pain day, but includes layout cascade auto-gen, transition/animation default value handling w/ auto-generated defaults, and guarantees a value for every property in ComputedStyles (although the compiler isn't aware of this yet).
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
VirtualScrollPanel uses DefaultStyles
Only use fallback inside Lerp functions if from/to are null
Move null checks into Lerp functions, remove logs
Tidy up, use same code path for lerps
Refer to default values in docstrings, inherited/cascading values lerp to their initial `from` values if `to` is unset
Merge fixes, Name -> TypeName
Generate FillDefaults() function, call inside PreLayout.BuildFinal, add Length.Undefined
Fix a bunch of defaults (need better way to check if a property is set tho)
Add `Style.IsDefault( name )`
Bad idea to call FillDefaults here since it will stomp previous keyframes
backdrop-filter-hueRotate is backdrop-filter-hue-rotate (oops)
mask-position defaults to 0,0
Use IsDefault when necessary inside tests (HasValue will always be true for ComputedStyle properties), only check where necessary (i.e. if we're not also checking the value itself)
Scrolling fixes
Remove DefaultStyles, internalize IsDefault, FillDefaults, ApplyCascading
Handle `overflow` prop defaults separately
Use HasScrollY inside panel input
Get rid of remaining null coalescing shit - ComputedStyle properties are no longer null
ComputedStyles has its own class w/ no nullables, helps clean things up
Remove unused, clean up
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
VirtualScrollPanel uses DefaultStyles
Only use fallback inside Lerp functions if from/to are null
Move null checks into Lerp functions, remove logs
Tidy up, use same code path for lerps
Refer to default values in docstrings, inherited/cascading values lerp to their initial `from` values if `to` is unset
Merge fixes, Name -> TypeName
Generate FillDefaults() function, call inside PreLayout.BuildFinal, add Length.Undefined
Fix a bunch of defaults (need better way to check if a property is set tho)
Add `Style.IsDefault( name )`
Bad idea to call FillDefaults here since it will stomp previous keyframes
backdrop-filter-hueRotate is backdrop-filter-hue-rotate (oops)
mask-position defaults to 0,0
Use IsDefault when necessary inside tests (HasValue will always be true for ComputedStyle properties), only check where necessary (i.e. if we're not also checking the value itself)
Scrolling fixes
Remove DefaultStyles, internalize IsDefault, FillDefaults, ApplyCascading
Handle `overflow` prop defaults separately
Use HasScrollY inside panel input
Get rid of remaining null coalescing shit - ComputedStyle properties are no longer null
ComputedStyles has its own class w/ no nullables, helps clean things up
Remove unused, clean up
ComputedStyles has its own class w/ no nullables, helps clean things up
Get rid of remaining null coalescing shit - ComputedStyle properties are no longer null
Use HasScrollY inside panel input
Handle `overflow` prop defaults separately
Remove DefaultStyles, internalize IsDefault, FillDefaults, ApplyCascading
backdrop-filter-hueRotate is backdrop-filter-hue-rotate (oops)
mask-position defaults to 0,0
Use IsDefault when necessary inside tests (HasValue will always be true for ComputedStyle properties), only check where necessary (i.e. if we're not also checking the value itself)
Add `Style.IsDefault( name )`
Bad idea to call FillDefaults here since it will stomp previous keyframes
Fix a bunch of defaults (need better way to check if a property is set tho)
Generate FillDefaults() function, call inside PreLayout.BuildFinal, add Length.Undefined
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
VirtualScrollPanel uses DefaultStyles
Only use fallback inside Lerp functions if from/to are null
Move null checks into Lerp functions, remove logs
Tidy up, use same code path for lerps
Refer to default values in docstrings, inherited/cascading values lerp to their initial `from` values if `to` is unset
Merge fixes, Name -> TypeName
Initial support for `calc( ... )`
Length.Calc (LengthUnit.Expression), evaluate on demand
Add failing test for nested calc (`calc( ... + calc( ... ) )`)
Add support for nested `calc()` statements
Do GetPixels inside calc functions (for percentages)
Division by zero throws correct DivideByZeroException
Tests & support for invalid syntax, constants (e, pi, nan), scaling percentages
Remove token count check, will need to re-think this validation later
Rename test class to CalcTests, clean up
Check if length unit is expression & evaluate on demand
Implicit eval
Pass parent property values into ToYoga() for calc
Implicit eval
Pass parent property values into ToYoga() for calc
Rename test class to CalcTests, clean up
Check if length unit is expression & evaluate on demand
Tests & support for invalid syntax, constants (e, pi, nan), scaling percentages
Remove token count check, will need to re-think this validation later
Do GetPixels inside calc functions (for percentages)
Division by zero throws correct DivideByZeroException
Length.Calc (LengthUnit.Expression), evaluate on demand
Add failing test for nested calc (`calc( ... + calc( ... ) )`)
Add support for nested `calc()` statements
Initial support for `calc( ... )`
VR: apply mouse scroll with correct direction, only apply if this panel is focused
Implement metadata, invalidate cache if version numbers don't match (so we can change things between updates)
Fix icons not fetching correctly
Add Entity.IsPawn
Fixes sboxgame/issues/issues/3927
Stats.GetPlayerStats uses steamid parameter
Fixes sboxgame/issues/issues/3766
Menu GameGroup inner div takes pointer events, so that the gaps between cards don't affect scrolling
Compatibility - legacy MouseWheel has setter, add obsolete TryScroll( float )