982 Commits over 610 Days - 0.07cph!
Old MouseWheel should be float not vector2
Make mouse wheel a Vector2, implement initial horizontal mouse wheel support for UI
MouseWheel -> MouseScroll, obsolete old
Ignore scroll if it's not moving in the same direction that the panel overflows in
e.g. stops us interfering with vertical scrolls on horizontally
scrolling panels:
https://files.facepunch.com/alexguthrie/1b3011b1/sbox-dev_12znz25nJC.mp4
Invert scroll X axis
Update some more places where I forgot to change MouseWheel to MouseScroll, obsolete `Input.MouseWheel` and `InputData.MouseWheel`
WorldInput uses Vector2 for scroll
Pass keyboard modifiers to mouse wheel event, and interpret mouse scrolls as horizontal if shift key is held
Invert scroll value for emulated horizontal scroll (scrolling down should scroll to the right)
Invert scroll value for emulated horizontal scroll (scrolling down should scroll to the right)
Pass keyboard modifiers to mouse wheel event, and interpret mouse scrolls as horizontal if shift key is held
Invert scroll X axis
Update some more places where I forgot to change MouseWheel to MouseScroll, obsolete `Input.MouseWheel` and `InputData.MouseWheel`
WorldInput uses Vector2 for scroll
Ignore scroll if it's not moving in the same direction that the panel overflows in
e.g. stops us interfering with vertical scrolls on horizontally
scrolling panels:
https://files.facepunch.com/alexguthrie/1b3011b1/sbox-dev_12znz25nJC.mp4
MouseWheel -> MouseScroll, obsolete old
Make mouse wheel a Vector2, implement initial horizontal mouse wheel support for UI
Body groups no longer affect hitboxes / hitbox sets
Should fix sboxgame/issues/issues/2922
CModel::GetAllHitboxSets and CModel::GetAllHitboxes
Ignores mesh group mask when fetching
Max stack size of 64 like that one popular video game
Dragged inventory item UI shows thumb
Inventory UI tweaks, resize inventory to 40 + 10 slots
Prefer async IO operations
Allow configurable FileSystem for caching
Write to cache at the FS root directory
Allow file system cache to be set in Razor*
* S&box doesn't seem to call SetPropertyObject right now. Instead it just ToStrings everything and sends it through SetProperty so this won't actually function until that's fixed.
Merge branch 'master' into peter-r-g/fs-changes
Fix build error
Move cache FS to a library options class
Merge branch 'master' into peter-r-g/fs-changes
Merge pull request #3 from peter-r-g/peter-r-g/fs-changes
FileSystem cache changes
Add `GameUtil` class
Implement `Container.Add()`, `Container.FindFirstSlot()`, `Container.Move()`, write docs & import them using <include ...>
Slot can access private members on Container, all mutative operations are documented as such and call Game.AssertServer()
Start refactoring into Container, handles networking for all contained Slots
Containers have IDs, have "ownership" over slots
Containers can have names, implement FindFirstEmptySlot, Add, store all containers inside static list on server
Convert everything to use nullables
Enable nullables, treat all nullability warnings as errors
Add WarningsAsErrors support for projects
Supports a list of errors (e.g. `CS8613;CS8601;CS8625`).
Does not support the `nullable` shorthand yet because of a .NET issue
(would need to expand manually, which is messy)
Remove hard-coded dimension stripping by passing `?width=100%` to the API
Experimental `<emojify>` element test
Parses a single string into multiple emojis
e.g. `:factory: test :alien: hello :winking-face: :smiling-face-with-sunglasses: :pilot:`
https://files.facepunch.com/alexguthrie/1b2311b1/sbox-dev_dV2aIi4uPW.png
Fix NRE inside inventory
Rebuild node.vmat (didn't have texture??)
ResourceNode grants 1 iron ingot per hit for now
Fix NRE when fetching font color, fetch font color from current element (will cascade from parent)
Icons render at least 32x32 in size
Add support for `iconify-icon` alias
Make errors nicer when parsing icon name
Allow `icon` or `name` for property
Refactor fetching etc. into IconifyIcon + support non-tintable icons (e.g. twemoji)
Switch `name` over to `icon` in README to match standard Iconify element behaviour
Bail from SetIcon when no icon found
Reset dirty bool at the start of SetIcon
This prevents situations where OnAfterTreeRender is called multiple times and in turn SetIcon before the first one has finished and reset the dirty bool.
Don't update Icon if it's passed the same value
Fix weird formatting
Add S&box .editorconfig
dotnet format
Merge pull request #1 from peter-r-g/peter-r-g/small-fixes
Small Fixes
Cleanup
Use iconify for icons, inventoryitem displays item count instead of name
Smooth camera Z axis for small changes (better crouching, stairs, etc)
Modify default styling to better match text, set dirty in OnLayout to re-render when size changes
Run texture fetching async, don't save anything if we failed to fetch icon
Fix nullref inside RecipeLibrary if no recipes exist on an item
Interaction refactor
"Foundry simple" shader w/ point filtering
Placeholder resource node model
Basic resource node ent
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
Refer to default values in docstrings, inherited/cascading values lerp to their initial `from` values if `to` is unset
Tidy up, use same code path for lerps
Only use fallback inside Lerp functions if from/to are null
Move null checks into Lerp functions, remove logs
VirtualScrollPanel uses DefaultStyles
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()
Use separate map for menu scene, designed for that specific purpose
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(!)
Triangulate quads inside obj loader
Conveyor is ModelEntity, uses model exported from Hammer w/ hotspot textures
Mirror UV when sampling inside filter - prevents ugly border around some elements when using `filter: blur()`
Fix chat
Set tickrate in project settings
Dev map update + full compile
Use vmap inside menu scene
Tweak menu card styling, don't filter
Squash merge of mainmenu branch
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