20,831 Commits over 1,522 Days - 0.57cph!
Fix EventSystem null exception
LibrarySystem read/save version property, support switching versions
Add new Interpolation stage - the updates need to happen at the right point. Clear interpolation if interpolation isn't enabled and we receive a transform update
Add InterpolationSystem (GameObjectSystem) - update GameTransform to Add/Remove GameObjects from this system as appropriate
Add overloads for filtering RPC recipients based on a predicate
VR: keep track of input deltas manually
Test
Clean up - use TransformInterpolate class
Can't modify transform if we're a network object root and a proxy - we must stay true to network transform target
Hook up Interpolation enable/disable from Inspector. When Owner calls ClearInterpolation, set a bit on the update msg to have other clients do so as well. Hook up Network.Interpolation and Enable/DisableInterpolation() on the accessor.
Fix to allow interp property to be set by GameObjectHeader
Serialize the interpolation bool with GameObject
Combination of fixed update interpolator and networked interpolation buffer. Working nicely
Some cleanup
Some extra docs + let's call it Query to match the other class
Use Time.Now
Restore backward compat LerpTo
Cull after, ensure move direct to last tx if query out of time but entries remaining
Fix formatting
Tiny tidyup
RPC in log for consistency
BufferedHashSet<T>: For safely iterating over a hashset that can be modified without needing a copy
Optimize GameObject.Network, we do not need to constantly find the network root, it should only be set on network spawns and parent changes
Sandbox.Game convars work in editor again
Codegen IUpdateSubscriber and others on Components that implement those methods
Scene update loop only iterates over enabled components that implement each of their methods; OnUpdate, OnFixedUpdate, OnPreRender
Add single Connection overloads
Same logic for static Rpcs
Update documentation
Add recipient filter struct, type, and Rpc.FilterOnly and Rpc.AllExcept methods
Update documentation
Change filtertype options
Move to Connection.Filter. Can pass optional filter to Broadcast. Use this for Rpcs with current filter.
More docs
BufferedHashSet<T>: For safely iterating over a hashset that can be modified without needing a copy
Optimize GameObject.Network, we do not need to constantly find the network root, it should only be set on network spawns and parent changes
Sandbox.Game convars work in editor again
Codegen IUpdateSubscriber and others on Components that implement those methods
Scene update loop only iterates over enabled components that implement each of their methods; OnUpdate, OnFixedUpdate, OnPreRender
Always explicitly keep a reference to delegates passed to native (#1546)
Always explicitly keep a reference to delegates passed to native (#1546)
BufferedHashSet<T>
Use BufferedHashSet<Component> to safely iterate components without a copy
Name this ComponentSubscriberInterfaces, name interfaces IUpdateSubscriber etc.
Write the version id with downloaded package
Update library template
Update library template
Cleanup
Test out this iterator safe workset collection, this probably has some fancy standard name
Codegen adds Sandbox.Internal.IWantsOnUpdate etc. when those methods are found on Component derived classes
New update mode, iterating over components with IWants interfaces
Sandbox.Game convars work in editor again
Run legacy game loop on older assemblies
Make sure we run interpolation on the new loop, this is being rewritten atm so I don't wanna touch it
Optimize GameObject.Network, we do not need to constantly find the network root, it should only be set on network spawns and parent changes
Check Component.IsValid() just in case they've been immediately deleted
Add mutex on read/writing m_CulledLights, guarantees it won't be overwritten twice while doing a callback before finishing rendering next frame or would write while allocating lights
Fix baked fog on scenes, only enable volumetric fog if there are any fog volumes in scene
https://files.facepunch.com/sampavlovic/1b2511b1/image%20%289%29.png
Temporarily use batch publisher for "Upload" button in AssetPublishWidget, since it's doing nothing currently
Don't make asset metadata for cloud assets, since we're mounting downloaded cloud stuff first, asset browser tag code is generating fake metadata for all this cloud stuff and causing problems when we're wanting the real metadata
CitizenAnimationHelper: FootShuffle becomes more generic MoveRotationSpeed, update docs for what this parameter is doing now
Citizen/animgraph: renamed "move_shuffle" to "move_rotationspeed" & made damping on the feet shuffle nodes more aggressive
View package details
Fix local packages not showing detail
Start on Uninstalling, Switching Versions
Cleaner library adding
Make sure we run interpolation on the new loop, this is being rewritten atm so I don't wanna touch it
Optimize GameObject.Network, we do not need to constantly find the network root, it should only be set on network spawns and parent changes
Ensure can't use different RPC attributes together, doesn't make sense
Add some more documentation to the other RPC attributes
lb_indexed_pointlight_shadows. By default for now, don't cast shadows to indexed point lights if the cvar is set, rarely worth anything useful
Implement MethodArguments attribute, use it for UnicastAttribute ensure that first parameter is Connection
Fix file move on vpc for shadowmap_texturebarrier_renderer.h
Fuck off with subrect clearing on shadowcache, we do it much simpler on draw now which is guaranteed to be clean, our goal is to go bindless too so it doesnt even apply
Pass per view lighting constants to shadow, transition barriers to fog
Make CSM to be re-rendered for each view since they are view-dependent, but we can keep the same tiles we reserved
Static vs. Dynamic object rendering for FindOrCreateShadowMapsForLight
Remove shadow template views, doesn't make sense to have this code duplicated and makes it harder to work with it, I don't think we use those HLVR constants the code mentions, and if we do it should just be on the standard pipeline
Vulkan: Fix ClearImpl not respecting layer viewports smaller than the screen, and instead just clearing everything with a fast renderpass, this caused issues when we want to just clear a small rect
lb_time_sliced_shadows, fix directional lights not showing up, clear each rect when wanting to draw rather than having a complicated shadow atlas clear system
Make sure we run interpolation on the new loop, this is being rewritten atm so I don't wanna touch it
Shift StartCentered property and logic out of Widget and into Window/BaseWindow, plus special cases fixes for splash and launcher
Prevent main editor window from attempting to centre on itself
Codegen adds Sandbox.Internal.IWantsOnUpdate etc. when those methods are found on Component derived classes
New update mode, iterating over components with IWants interfaces
Sandbox.Game convars work in editor again
Run legacy game loop on older assemblies
Move ControlModeSettings into Sandbox.Engine (from tools addon)
Launcher displays VR button for projects with VR support
Add quick editor option to enable/disable VR without restarting the editor
New Hat - Trapper Hat
Cosy winter hat, LODs coming asap
https://files.facepunch.com/daniel/1b2411b1/sbox-dev_LhRhTPsrhS.jpg