671 Commits over 549 Days - 0.05cph!
In standalone, run CreateGame after doing all our standalone setup - because otherwise we'll be loading the game assembly without any info
(cherry picked from commit 1102b357f284b26b2bab11bedfc23bb5e15c47a1)
Separate DevUI (console, errors) addon code out into its own addon
Clean up MenuSystem and MainMenuPanel
In standalone, run CreateGame after doing all our standalone setup - because otherwise we'll be loading the game assembly without any info
DevUI gets its own ContextLocal scope
Add DevUIDll
Test for DevUI
Standalone: move IsWhitelistDisabled option into project config, so that it saves into the .sbproj like everything else
Standalone: blacklist DLLs we don't need (cuts down export size by ~130mb)
Mark scenes as needing to call OnJoined before we call OnStart() on components etc.
I don't know if this is the best way to do this - please change
if there's something better
Don't tell the network system we've finished loading if we're loading an editor scene
Don't call NetworkSpawnRecursive in editor 🤦♂️🤦♂️
Networked scene load (#1648)
Loading a scene over the network now just sends a fresh snapshot and re-handshakes with clients, rather than telling them to reconnect later and disconnecting them all.
OnChangingLevelMsg -> OnSceneLoadMsg
Separate scene loading & finished loading, broadcast to clients as soon as we start loading a new scene
Move SceneLoadOptions into Sandbox.Engine, forward to Sandbox.Game
Send SceneLoadOptions over network
We only need to worry about ShowLoadingScreen - both IsAdditive and
DeleteEverything would be handled by the host and then applied to the
fresh snapshot that we send over, so we shouldn't have to worry about
those
Remove auto-added using
protocol++
Cut all this down some more so we're not changing things for no reason
Register handler instead of using internal message type (same as before)
Make it clear that all of this is called after the scene has loaded, clean up
Enable lingering on TCP channel
Reload scene data on clients rather than disconnecting and rejoining when calling `Scene.Load` on a networked game
UI: Layered backdrop filters require different UVs (because they render in a different space)
Fixes broken rendering when both filters/masks and backdrop filters are used in conjunction with each other
Mount assembly filesystem here too
Mount assemblies from downloaded packages
Init API earlier
Init API in unit tests
Squash game-exporting branch
Bring everything up to date
Exit whole app in standalone mode
Export option in Project menu
CMaterialSystem2AppSystemDict uses struct for initialisation instead of parameters
Custom steam app ID for standalone games
Put steam appid field here for now - we might wanna rethink this later though
would help if I labelled this correctly
Init steamclient in standalone
Explicit copy sounds
Reject API access in Standalone (we should probably dependency inject this stuff, it'd be cleaner)
Slightly better time estimate
Generate .ico from thumbnail, try changing it on the exe
Can't get this working no matter what, just corrupts the exe header, disable it
Use correct exit function
Get networking working, even if it's a bit hacky
Move API into backends for standalone/platform, stub out standalone backend
Standalone.Init()
Get rid of LoadStandaloneGameAsync, roll diff into LoadGamePackageAsync
Make a StandaloneGameInstance in standalone
Remove all these file hacks so I'm forced to do something to fix them
Fix file hacks
Add missing sbox-standalone exe back to sln
We only need to copy core/scripts/soundmixers.txt as far as I know
Move gamecontrollerdb.txt into core/cfg/
Get rid of `IsCitizenEnabled` hack
Don't override window title with gameinfo name, apply it nice and early when making app dict
Can't think of any other way to filter out citizen assets, cuts down build by 1.8gb(!) so we'll have to live with this for now
Copy all compiled assets from enabled addons again, because sometimes they'll be referenced at runtime even though they're not in a dependency tree
Rebase fixes
Standalone config / wizard changes:
- Can either export standalone or publish to sbox.game, but not both
- Add dialog warning about no whitelist, sbox.game access
- Export step is similar to sbox.game upload rather than being its own thing
- Tell people not to distribute their games or anything
- Remove AppID, Icon entries for now
Remove logs
Respect desired executable name
Delete IconChanger, it don't work
Revert formatting this entire file
Add missing ctor
Can export without having to disable whitelist
Don't need loads of warnings here, people can read
Unify terminology, icons
Allow disabling whitelist on projects - prevents uploading to sbox.game, will only let you export
Allow disabling whitelist on projects - prevents uploading to sbox.game, will only let you export
Revert formatting this entire file
Add missing ctor
Can export without having to disable whitelist
Don't need loads of warnings here, people can read
Unify terminology, icons
Squash game-exporting branch
Bring everything up to date
Exit whole app in standalone mode
Export option in Project menu
CMaterialSystem2AppSystemDict uses struct for initialisation instead of parameters
Custom steam app ID for standalone games
Put steam appid field here for now - we might wanna rethink this later though
would help if I labelled this correctly
Init steamclient in standalone
Explicit copy sounds
Reject API access in Standalone (we should probably dependency inject this stuff, it'd be cleaner)
Slightly better time estimate
Generate .ico from thumbnail, try changing it on the exe
Can't get this working no matter what, just corrupts the exe header, disable it
Use correct exit function
Get networking working, even if it's a bit hacky
Move API into backends for standalone/platform, stub out standalone backend
Standalone.Init()
Get rid of LoadStandaloneGameAsync, roll diff into LoadGamePackageAsync
Make a StandaloneGameInstance in standalone
Remove all these file hacks so I'm forced to do something to fix them
Fix file hacks
Add missing sbox-standalone exe back to sln
We only need to copy core/scripts/soundmixers.txt as far as I know
Move gamecontrollerdb.txt into core/cfg/
Get rid of `IsCitizenEnabled` hack
Don't override window title with gameinfo name, apply it nice and early when making app dict
Can't think of any other way to filter out citizen assets, cuts down build by 1.8gb(!) so we'll have to live with this for now
Copy all compiled assets from enabled addons again, because sometimes they'll be referenced at runtime even though they're not in a dependency tree
Rebase fixes
Standalone config / wizard changes:
- Can either export standalone or publish to sbox.game, but not both
- Add dialog warning about no whitelist, sbox.game access
- Export step is similar to sbox.game upload rather than being its own thing
- Tell people not to distribute their games or anything
- Remove AppID, Icon entries for now
Remove logs
Respect desired executable name
Delete IconChanger, it don't work
Delete IconChanger, it don't work
Remove logs
Respect desired executable name
Rebase fixes
Standalone config / wizard changes:
- Can either export standalone or publish to sbox.game, but not both
- Add dialog warning about no whitelist, sbox.game access
- Export step is similar to sbox.game upload rather than being its own thing
- Tell people not to distribute their games or anything
- Remove AppID, Icon entries for now
Squash game-exporting branch
Bring everything up to date
Exit whole app in standalone mode
Export option in Project menu
CMaterialSystem2AppSystemDict uses struct for initialisation instead of parameters
Custom steam app ID for standalone games
Put steam appid field here for now - we might wanna rethink this later though
would help if I labelled this correctly
Init steamclient in standalone
Explicit copy sounds
Reject API access in Standalone (we should probably dependency inject this stuff, it'd be cleaner)
Slightly better time estimate
Generate .ico from thumbnail, try changing it on the exe
Can't get this working no matter what, just corrupts the exe header, disable it
Use correct exit function
Get networking working, even if it's a bit hacky
Move API into backends for standalone/platform, stub out standalone backend
Standalone.Init()
Get rid of LoadStandaloneGameAsync, roll diff into LoadGamePackageAsync
Make a StandaloneGameInstance in standalone
Remove all these file hacks so I'm forced to do something to fix them
Fix file hacks
Add missing sbox-standalone exe back to sln
We only need to copy core/scripts/soundmixers.txt as far as I know
Move gamecontrollerdb.txt into core/cfg/
Get rid of `IsCitizenEnabled` hack
Don't override window title with gameinfo name, apply it nice and early when making app dict
Can't think of any other way to filter out citizen assets, cuts down build by 1.8gb(!) so we'll have to live with this for now
Copy all compiled assets from enabled addons again, because sometimes they'll be referenced at runtime even though they're not in a dependency tree
Can't think of any other way to filter out citizen assets, cuts down build by 1.8gb(!) so we'll have to live with this for now
Copy all compiled assets from enabled addons again, because sometimes they'll be referenced at runtime even though they're not in a dependency tree
Use correct exit function
Get networking working, even if it's a bit hacky
Move API into backends for standalone/platform, stub out standalone backend
Standalone.Init()
Get rid of LoadStandaloneGameAsync, roll diff into LoadGamePackageAsync
Make a StandaloneGameInstance in standalone
Remove all these file hacks so I'm forced to do something to fix them
Fix file hacks
Add missing sbox-standalone exe back to sln
We only need to copy core/scripts/soundmixers.txt as far as I know
Move gamecontrollerdb.txt into core/cfg/
Get rid of `IsCitizenEnabled` hack
Don't override window title with gameinfo name, apply it nice and early when making app dict
Explicit copy sounds
Reject API access in Standalone (we should probably dependency inject this stuff, it'd be cleaner)
Slightly better time estimate
Generate .ico from thumbnail, try changing it on the exe
Can't get this working no matter what, just corrupts the exe header, disable it
would help if I labelled this correctly
Init steamclient in standalone
CMaterialSystem2AppSystemDict uses struct for initialisation instead of parameters
Custom steam app ID for standalone games
Put steam appid field here for now - we might wanna rethink this later though
Export option in Project menu
Exit whole app in standalone mode
Squash game-exporting branch
Bring everything up to date
Add `position: relative` to devui console (fixes sbox-issues/issues/5817)
Split out VR input into multiple files, delete Finger
VR: Calculate tracked object velocities
VR: Call UpdateHaptics() on VR controller
VR: Only offset for skeletal hand poses - not for raw /input/grip/pose data
VR: Add Delta to DigitalInput - WasPressed works as intended, but isn't the same as a delta, so maybe this is helpful?
VR: Might as well obsolete these while I'm here
Initial VR scene for main menu
https://files.facepunch.com/alexguthrie/1b2011b1/sbox_pKFaTyqkgq.png
UI: Fix worldpanel depth issues, treat worldpanel roots as layers
Render VR menu at 4k, scale down to fit
Basic VR world input component, menu works properly
https://files.facepunch.com/alexguthrie/1b2511b1/Desktop%202024.06.25%20-%2015.51.37.05.mp4
Line hands up better in VR menu scene
Quick little test map just so I'm not staring at an orange texture
VR: Get skeletal data from OpenXR
VR: Match controller positions with SteamVR ones, which better represent where the controller is
VR Input cleanup
Update Facepunch.XR to d7212d3, fixes broken digital actions
Detect hand tracking, if not available (meta runtime) fallback to /input/grip/pose
Update Facepunch.XR to 915dcf5
Fix poses not working if you didn't have fully tracked hands
Remove VR suffixes from enums
Split Input.Vr.cs out into separate files within a VR folder
Update menu scene
Hand tracking elements
Pull velocity up into TrackedObject, calculate manually
Move input related enums into their own files
VRController -> TrackedController
Remove TrackedControllerType, HMDType - not supported by OpenXR
VR anchor sets Input.VR.Scale based on transform scale (so that IPD matches)
Remove `Finger`, `FingerValue` already exists
Initial support for skeletal data, supports both SteamVR skeleton estimate (controllers) and full hand tracking (leap motion, virtual desktop)
https://files.facepunch.com/alexguthrie/1b0311b1/Desktop%202024.07.03%20-%2018.56.33.85.mp4
Add support for finger curls, update Facepunch.XR to 98dab99
Hand joint data
Obsolte VR Model Renderer
Initial support for full hand skeleton on VR Hand component
Rename VRHand to VRHandSkeleton
Initial VR scene for main menu
https://files.facepunch.com/alexguthrie/1b2011b1/sbox_pKFaTyqkgq.png
Remap worldpanel depth correctly, fixes depth issues
Treat worldpanels as layers
Render VR menu at 4k, scale down to fit
Basic VR world input component, menu works properly
https://files.facepunch.com/alexguthrie/1b2511b1/Desktop%202024.06.25%20-%2015.51.37.05.mp4
Update Facepunch.XR to 92bea5f
Provide poses for Facepunch.XR submit, prevents jittery and spongey tracking
Line hands up better in VR menu scene
Quick little test map just so I'm not staring at an orange texture
Init package string table before loading menu
Main menu panel has background if running in VR
Update map, add references (ideally we should be shipping these with the game, but this is easier to iterate with)
Update Facepunch.XR to 8839c8e
Remove unused InputSource and InputSourceHandle properties on TrackedDevice
Make headset a tracked object, means it can appear in Input.VR.TrackedObjects & matches controllers
Changes the API without breaking it, e.g.:
`var headTransform = Input.VR.Head;`
becomes:
`var headTransform = Input.VR.HMD.Transform;`
VR: revert back to using grip pose because it's closer to what we want
VR haptic bindings
VR: Use aim instead of grip pose for controller positions + update fpxr to 8839c8e