branchrust_reboot/main/stableobjectcache_taa_nullscancel
22 Commits over 0 Days - ∞cph!
Bugfix: ensure PlayerTransformsAccess stays in sync with PlayerCache when players are removed
- also removed safety if as it's obsolete after recent change to cleanup player before shutting down the server
Tests: had 2nd client connect-disconnect to me on Craggy (though technically it's not enough, I'm relying on unit test logic)
Update: StableObjectArray gets GetIndexForSyncRemove to support removing from linked collections
- used it to fix TestTransformAccessArraySync
Need to update actual game code since it's bugged
Tests: ran unit test
Update(tests): add unit test that validates StableObjectArray is in sync with TransformAccessArray
Tests: ran the test - they're not, gotta fix it tomorrow
Bugfix(editor): cleanup connected players before we shutdown server when stopping playing in editor
Tests: started and stopped play mode
Bugfix: if shorevector caching is disabled, then make sure we generate it
Prev version skipped if it found the cache files on disk even though it didn't load them
Tests: booted into craggy
Bugfix: properly dispose of BasePlayer.PlayerCache
- also invoke DisposeInternalState on assembly reload
Tests: started and stopped playing on Craggy
Clean: rename BasePlayer.StableIndex -> BasePlayer.ActivePlayerInd
Eventually we'll have SleeperInd and etc, so doing this change early
Tests: compile all modes pases
Clean: delete PlayerCache and it's unit tests
Tests: compiles
Bugfix(editor): rengerate client-side shorevector cache if it's size changed
Tests: connected to a server running craggy
Update: StableObjectArray rewrite - version 2
- Replaces PlayerCache on the server in all the relevant paths
Still need to do clientside projectiles stable cache before ripping it out
Tests: booted into Craggy, ran around. Need to test 2p, but being stopped by some shore vector out of bounds access, hoping sync fixes it
Bugfix: StableObjectArray.StableIndexLookup was returning unbounded array
Tests: booted into craggy and ran around
Update: useful bits from the first failed StableObjectArray conversion
It ended up being too pervasive for my liking, going to try a simpler approach
Tests: compiles as part of rewrite, but none otherwise
Update: StableObjectArray now exposes stable index lookup map (needed for transform access array jobs)
- moved NativeArrayEx to Facepunch.UnityEngine plugin, enabled unsafe code, added Unity.Collections dep
Tests: none, code is in the middle of breaking rewrite
Clean: dead test code removal
Tests: compiles
Update: conversion to StableObjectArray - step 2, WaterLevel tests
Tests: ran WaterLevel unit and perf tests
Update: conversion to StableObjectArray - step 1, AntiHack unit tests
Tests: ran antihack unit and perf tests
Update: implement StableObjectArray.Repack
- update unit tests to better track consistency of the state
- expand StressTest to validate Repack
Going to start replacing StableObjectCache in code tomorrow. Also gotta stop unit test from allocating, it takes too long
Tests: ran StableObjectArrayTests
Update(tests): add StressTest unit test
Next up going to try to figure out how to support Repacking
Tests: ran unit tests
New: StableObjectArray, a pending replacement for StableObjectCache
- added basic tests, needs more
Follows TransformAccessArray API, provides similar stability guarantees as StableObjectCache but requires to be interacted with differently.
Tests: ran unit tests