branchsbox/magic-component-methodscancel
9 Commits over 0 Days - ∞cph!
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
BufferedHashSet<T>
Use BufferedHashSet<Component> to safely iterate components without a copy
Name this ComponentSubscriberInterfaces, name interfaces IUpdateSubscriber etc.
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
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
Make sure we run interpolation on the new loop, this is being rewritten atm so I don't wanna touch it
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
Use interfaces instead of attributes
Unused GameObject.PreRender
Component.OnStart works on components that don't implement OnUpdate
Codegen applies attributes if OnUpdate, OnFixedUpdate or OnPreRender are implemented
Only call OnUpdate, OnFixedUpdate, OnPreRender on components that implement them. Also call them flat instead of recursing every GO 3 times