2,957 Commits over 730 Days - 0.17cph!
Update(tests): patch BaseCorpse
- also create NPCFoodManager for TestServer
Tests: TestMTSave(LootableCorpse) passes
Update(tests): bypass trigger spawning in unit tests
Tests: TestMTSave(Lift) - passes
Update(tests): patch HotAirBalloon
Tests: TestMTSave(HotAirBalloon), no longer NREs but fails on TimeSince
Update(tests): patch HackableLockedCrate
Tests: TestMTSave(HackableLockedCrate) passes
Update(tests): patch GrowableEntity
- also skip TOD queries in testing mode
Tests: TestMTSave(GrowableEntity) passes
Update: patch FreeableLootContainer and LootContainer
Tests: TestMTSave(FreeableLootContainer) passes
Update(tests): patch ElevatorLiftStatic
Tests: TestMTSave(ElevatorLiftStatic) - passes
Update(tests): patch ElevatorLift
Tests: TestMTSave(ElevatorLift) - passes
Update(tests): patch ElectricWaterWheel
Tests: TestMTSave(ElectrictWaterWheel) - passes
Update(tests): TestServer now sets up empty topomap
Tests: TestMTSave(ElectricWaterWheel) - no longer NREs, but still fails
Update(tests): patch DPV
Tests: TestMTSave(DiverPropulsionVehicle) - passes
Update(tests): bypass TOD_Sky sampling by DigitalClock when running unit tests
Tests: TestMTSave(DigitalClock) passes
Update(tests): patch DeployableBoomBox
Tests: TestMTSave(DepoyableBoomBox) passes
Update(tests): patch ComputerStation
Tests: TestMTSave(ComputerStation) - passes
Update(tests): patch BoatBuildingStation
Tests: TestMTSave(BoatBuildingStation) - passes
Update(tests): patch BuildingBlock
- also skip EnsurePopulatedTriggersList if boatskin is null(it is in tests)
Tests: TestMTSave(BoatBuildingBlock) - passes
Update(tests): Patch BlackjackMachine
- skip sub entity spawning in testing mode
Tests: TestMTSave(BlackjackMachine) - passes
Update(tests): patch Bike
- also implemented TestFuelSystem.GetFuelAmount and Capacity
Tests: TestMTSave(Bike) - fails on transform access
Update(tests): patch BaseSiegeWeapon and BatteringRam
- implemented TestFuelSystem.GetFuelFraction
Tests: TestMTSave(BatteringRam) - now fails on transform access
Update(tests): patch BaseSubmarine
Tests: TestMTSave(BaseSubmarine) - now fails on TimeSince
Update(tests): patch BasePlayer
Tests: TestMTSave(BasePet - a lil weird, but okay) - fails on TimeUntil
Update(tests): patch BaseBoat
Tests: TestMTSave(BaseBoat), now fails on TimeSince
Update(tests): patch AutoTurret
Tests: TestMTSave(AutoTurret) passes
Update(tests): patch PlayerHelicopter for TestMTSave
- added IFuelSystem.TestFuelSystem, mostly duds
Tests: ran TestMTSave(PlayerHelicopter), still fails, but now around TimeSince
Update(tests): patch BaseVehicle, BaseHelicopter for TestMTSave(TwitchBus)
- also skip spawning marker for CH47 in unit test mode
Tests: TestMTSave(TwitchBus) passes
Bugfix(tests): path CargoShip and skip some prefab logic for TestMTSave
Tests: TestMTSave(CargoShip) passes
Bugfix(tests): patch OreHopper.oreOutputMesh in TestMTSave
Tests: TestMTSave(OreHopper) passes
Bugfix(tests): patch up ItemContainers.allowedItems in TestMTSave setup
Tests: ran TestMTSave tests, 343 -> 298 failures
Bugfix(tests): catch exceptions raised when killing spawned entities on test cleanup
Allows us to clean up entire spawnable list, permitting other tests in the queue to succeed if they don't mind the poisoned state
Tests: ran all TestMTSave, 354 failures out of 637
Update(tests): patch up CoalingTower.unloadingBounds for TestMTSave
Tests: TestMTSave(CoalingTower) passes
Update(tests): do minimum initialization for IOEntities
Allows FogMachine and StrobeLight to pass tests
Tests: ran TestMTSave, these 2 cases pass
Bugfix(tests): exclude abstract BaseEntities from test cases
Tests: ran unit tests
Bugfix(tests): bypass ferry error checks when initializing during unit test
Can be fixed properly, but don't think we need it right now
Tests: ran TestMTSave(NexusFerry) - it passes
Bugfix: bypass marker spawning when unit testing
Unrelated blocker to MT saving test
Tests: Ran TestMTSave(NexusIsland), now passes
Optim: avoid struct copy in ExtractTransformAccess, just reinterpet the pointer
shrinks asm to 8 instructions from 40+
Tests: ran TransformEx unit tests
Merge: from remove_jobs2
- Bugfix for exceptions when server gets more than 32 players
Tests: compiles
Bugfix: expand TickDeltaTime & TickNeedsFinalizing server state arrays as players join
Prevents NRE when server gets >32 players - missed this during rewrite
Tests: compiles
Update: ensure BaseEntities with networkEntityScale can be saved in MT
- added GetLocalScaleMT + unit tests
- increased TestMTSave(BaseEntity) coverage
Tests: ran unit tests - 219 pass/425 fail
Bugfix(tests): rewrite test proto comparison to use serialized buffers
Was naive to hope NUnit would fall back to reflection-based Equals for objects.
Tests: ran TestMTSave(BaseEntity) - it passes (though there's 1 branch that's not covered, gotta fix)
Update: add GetNetworkTime(ThreadSafeTime) overload
Going to use it to gradually convert entity saving code (instead of modifying all 40 callsites from the get go)
Tests: ran unit test for BaseEntity - no longer complains about scripting API, but thinks outputs differ
Update: Convert BaseNetworkable.GetNetworkPosition/Rot to use GetLocalPosMT/RotMT
- every BaseEntity now caches it's TransformHandle on spawn
Only active when UsePlayerJobs >= 4
Tests: ran unit tests (now fails further). spawned a boat on craggy and sailed for a bit - no replication issues.
Update: Implement GetLocalPosMT and GetLocalRotMT that can bypass unity scripting restrictions
- added unit tests
These are dangerous and can only be used if it's known that there's no other overlap with transform hierarchy changes. WIll be slower than TransformHandle read in editor/staging, but should be similarly fast in release
Tests: ran unit tests
Update: cache Time values into ThreadSafeTime so we can avoid unity api calls
- replaced Time.frameCount read in BaseNetworkable
BaseNetworkable can now save, now the rest of BaseEntity
Tests: ran TestMTSave(BaseEntity) - still fails, but now further
New(tests): BaseNetworkableTests.TestMTSave - saves each subclass of BaseNetworkable twice on thread pool, compares results
Tests: ran all 644 cases, all fail, picks up scripting API asserts as hoped
Merge: from remove_jobs2
- Removal of UsePlayerUpdateJobs 2 supporting code, setting it lower will run at least mode 3
- Bugfix for potentially invalid buffer usage when fetching WaterInfos
- Moved more BasePlayer state to NativeArrays
Tests: ran unit tests, ran around on craggy
Update: Codegen
Tests: compiles
Clean: pass around ReadOnly instead of mutable collection where possible
Tests: compiles