13,873 Commits over 1,552 Days - 0.37cph!
VR: check for headset in PreInit() instead of Init()
VR: init g_pVrSystem before finishing material system setup
Add GameObject.IsDestroyed - to detect objects that have Destroy() called on them, but haven't been destroyed enough to be IsValid false yet
Don't return components on objects that are IsDestroyed
Fix mass ratio typo in box3d
Calculate mass factor to apply to ground velocity to avoid building up massive ground velocity when walking on small props https://files.facepunch.com/layla/1b2011b1/sbox-dev_7NKHr5o1K5.mp4
Humans: added citizen_human_female_staging.vmdl
Editor: When losing focus of scene hierarchy rename popup, treat it as a successful rename
AssetBrowser: stopped pinned asset bricking the whole sidebar
Add recast/detour tile cache
AssetPublishWidget: when ticking publishing, update the widget properly instead of having to de-select and re-select asset
Fixed ReadOnly behavior for TextAreaControlWidget, resolves Facepunch/sbox-issues#6968
Virtual Cursor: rewritten, much simpler now, mimics mouse, so works for everything (#1704)
- Also tracking pressed controller buttons now
Fix TextArea not updating on value change
Add a bunch of stats to ingame console
Simplify networking options in header bar in editor - drop down options in Network for Simulate Lag, Lobby Privacy
Optimize navmesh geometry collection by fully utilizing the BVH of a physics mesh
Clear volumetric fog texture on creation, this seems to could've caused problems even back on Alyx but issue is bigger now that we don't write to all volumetric fog froxels at once
Fix ClearUnorderedAccessViewUint not clearing properly for Texture2DArray and Texture3D
Handle TcpSocket not being able to start more gracefully
Auto Switch to Best Host Candidate (#1705)
Previously anyone could be assigned as a host when the host leaves. Now we'll score lobby members by their average ping and average connection quality to all other peers and use that score to determine who to give the host to.
When a host leaves, we'll try to find a good candidate and set the owner immediately first, but if that fails, it'll happen the next time someone is automatically assigned to be the host.
Previously, a connecting client could be assigned the host, but this is no longer the case as clients must be fully connected to be considered as a candidate.
In addition, we'll periodically attempt to find and change to the best host candidate. This particular behavior can be disabled per project or per lobby.
Stop reloading cookies, history etc whenever the asset browser becomes revisible
Move project-aware location logic to AssetBrowserLocation, special cases for Core/Citizen, use root title in path widget
Refresh asset browser sidebar, hide built in content behind 'Show Base Content' toggle
FindProjectByDirectory prefers closest match in case of nested project paths (eg libraries)
Disable ShowBaseContent by default
Fix long FolderNode labels getting cut off early
Selecting sidebar node for current location works with all node types
Optimize navmesh generation by pooling generators (#1703)
This also fixes sbox-issues/issues/6941 by limiting the degree of parallelism for the generation.
Fixed regressions in CPhysicsShape::GetTriangulation
Yeet the weird pointer iteration that fucked me 3 times by now.
Bump up pose recipe param buffer size to 4kb
Clear out unused InputManifestTemplate ItemGroup in Sandbox.Game
Remove old SCENEOBJECTFLAG_HIDEINFIRSTPERSON
Remove old SCENEOBJECTFLAG_SUPPORTS_ENV_INTERACTION
Write GameOverlay depth to main scene, so things like bloom layer don't render over it
Create attachment gameobjects on renderer root, transform them on animation update instead of attaching them to bones
Revert "Optimize navmesh generation by pooling generators 2.0"
This reverts commit 54123afcdceb6e924eb14625985a3501f2d801e4.
Optimize navmesh generation by pooling generators 2.0
This also fixes sbox-issues/issues/6941 by limiting the degree of parallelism for the generation.
Revert "Optimize navmesh generation by pooling generators"
This reverts commit 263974a602d63b4b817b5561b9a010689859b01f.
Until we can figure out why an unrelated test started failing.
Humans: copy ring fingers onto pinky fingers while we're still reusing Citizen animations — avoids the "tea cup" look
Optimize navmesh generation by pooling generators
This also fixes sbox-issues/issues/6941 by limiting the degree of parallelism for the generation.
Specify .net 9 for shaders.yml
Fix sampletexture_bicubic (is anything using it)?
Compiled shaders with correct specular brdf
Optimize Memory Allocations in CPhysicsShape::GetTriangulation
Make editing BaseItemWidget/ListView contents thread safe
Thread asset browser populate, remove arbitrary and teeny weeny MaxFiles cap
'everything' location shows more than just up to the As now, search/type filtering works as you'd expect
Fix path/search widgets not updating correctly for meta locations
Fix NRE
Properly restore all Scene/Prefab tabs from previous session without Task.Delay hack
Tone down ByteStreamTest.DecompressStressTest
Hackweek resource extensions (#1694)
I don't think this is complete - but it's a good start
Expose EditorActionGraph.CanModifyParameters
IAssetEditor: focus existing editor if it's a BaseWindow
Improved async behavior of navmesh tile generation
Set same tags for dedicated servers as lobbies for consistency. Fixed case when connection doesn't close properly.
Expose initial API for navmesh tile(re)generation
Expose NavMesh.GenerateTile( PhysicsWorld world, Vector3 worldPosition )
Expose NavMesh.GenerateTiles( PhysicsWorld world, BBox bounds )
Human Head 02 initial setup
Instead of the host crashing and disconnecting when a connecting user tries to send handshake messages with the wrong state, log it to console and kick them with a debug reason
Try to create lobby socket - if it errors and returns null, back out of creating the lobby
Make sure we clear removed and changed lists when resetting a string table
Make sure we disconnect properly if failing to create a Steam Lobby