3,021 Commits over 730 Days - 0.17cph!
Bugfix: batch of replacement for Time usage with ThreadSafeTime
Only 1 skipped out for now, BuildingPriviledge - that one does lazy-eval, which is problematic
Tests: TestMTSave - 42 -> 32
Bugfix: BasePlayer - avoid Time.time when evaluating mortarCooldown
There's one more issue to resolve, but it doesn't affect unit tests, will resolve later
Tests: TestMTSave - 59 -> 42 fails
Bugfix: vehicle related Time api fixes
- TimeSince and TimeUntil now have a member method allowing to calculate from passed time (to avoid Time.time invoke)
- TrainCar uses GetNetworkTime(ThreadSafeTime) overload
Tests: ran TestMTSave, 74 -> 59 fails
Tests: TestMTSave
Bugfix: don't use cached fuel fraction, just calculate it when saving
Avoids TimeUntil sample, which isn't safe in MT
Tests: TestMTSave(AttachHelicopter) pass
Update(tests): another small batch of patches and skips that I missed
Tests: TestMTSave 81 -> 75 failures
Bugfix: BaseNPC - fallback to original GetNtworkRotation implementation for server side entity
It knows how to fetch local rotation in MT-safe way
Tests: TestMTSave - 94 -> 81 failures
Update(tests, editor): last batch of patches and bypasses to spawn entities
- Renamed Prefabs editor script into PrefabTools, as it was conflicting with PRefabs.Misc.GhostShip
I can finally get to fixing save issues for MT
Tests: relevant TestMTSave pass
Update(tests): batch of various patches and prefab spawn skips
Got about 10 patches to apply before starting to fix saving for MT
Tests: relevant TestMTSave pass
Update(tests): skip marker spawning in tests for DeliveryDrone
Tests: TestMTSave(DeliveryDrone) pass
Update(tests): patch GraveyardFence
Tests: TestMTSave(GraveyardFence) pass
Update(tests): patch StringFirecracker
Tests: TestMTSave(StringFirecracker) pass
Update(tests): patch CookingWorkbench
Tests: TestMTSave(CookingWorkbench) fails on Save now (realtimeSinceStartup)
Update(tests): patch WaterInflatable
Tests: TestMTSave(WaterInflatable) pass
Update(tests): TestServer now creates TreeManager
Tests: TestMTSave(TreeEntity) pass
Update(tests): patch ThrownBoomerang
Tests: TestMTSave(ThrownBoomerang) pass
Update(tests): patch SingleUseMissionStorageContainer
- also have TestServer explicitly create InvokeHandlerFixedTime to avoid DontDestroy call
Tests: TestMTSave(SingleUseMSC) pass
Update(tests): patch SantaSleigh
Tests: TestMTSave(SantaSleigh) pass
Update(tests): patch MobilePhone
Tests: TestMTSave(MobilePhone) pass
Update(tests): patch DisplayingBoxStorage
Tests: TestMTSave(DisplayingBoxStorage) pass
Update(tests): patch ConstructableEntity
Tests: TestMTSave(ContainerCorpse) pass
Update(tests): patch BallistaGun
Tests: TestMTSave(BallistaGun) pass
Update(tests): patch WildlifeHazard
Tests: TestMTSave(WildlifeHazard) pass
Bugfix(editor): rename TreeManager.Reset into ResetTrees
Unity was derping trying to call instance Reset when it was marked as static
Tests: TestMTSave(TreeManager) pass
Update(tests): ensure patched BaseCombatEnt have non-0 starting health
Allows for Stocking to survive during initial damage tick on spawn
Tests: TestMTSave(Stocking) pass
Update(tests): redirect relationship db location to temp path in tests
Tests: TestMTSave(RelationshipManager) pass
Update(tests): skip generation and map marker of ProceduralDynamicDungeon in tests
Tests: TestMTSave(ProceduralDynamicDungeon) pass
Update(tests): patch PatrolHelicopter
- also bypass map marker spawn in unit tests
Tests: TestMTSave(PatrolHelicopter) - fails on transform access in save
Update(tests): bypass mapMarkerPrefab spawning in unit tests
Tests: TestMTSave(MLRSRocket) pass
Update(tests): patch MiningQuarry
- also bypass deposit spawning in unit tests
Tests: TestMTSave(MiningQuarry) pass
Update(tests): patch InvisibleVendingMachine
Tests: TestMTSave(InvisibleVendingMachine) - fails on translation token
Update(tests): bypass grid spawn in HexagonGridGenerator tests
Tests: TestMTSave(HexagonGridGenerator) pass
Update(tests): patch HeldBoomBox
Tests: TestMTSave(HeldBoomBox) pass
Update(tests): bypass reclaim manager spawn in GameModeSoftcore unit testing
Tests: TestMTSave(GameModeSoftcore) pass
Update(tests): patch BaseHuntEvent
Tests: TestMTSave(EggHuntEvent) pass
Update(tests): patch DynamicDungeon
Tests: TestMTSave(DynamicDungeon)
Update(tests): bypass createdObject spawning of DroppedItem in unit tests
Tests: TestMTSave(DroppedItem) pass
Update(tests): bypass self-destroy of DeepSeaManager if we're in unit testing mode
Tests: TestMTSave(DeepSeaManager) pass
Update(tests): patch BradleyAPC
Tests: TestMTSave(BradleyAPC) pass
Update(tests): patch BasicCar
Tests: TestMTSave(BasicCar) pass
Update(tests): patch BaseProjectile
Tests: TestMTSave(BaseProjectile) pass
Update(tests): patch BaseGameMode
Tests: TestMTSave(BaseGameMode) pass
Bugfix(editor): add NRE check for OnValidate of HeldEntity
Tests: TestMTSave(BaseFishingRod) pass
Update(tests): patch WeaponRack
Tests: TestMTSave(WeaponRack) pass
Update(tests): patch VendingMachine
Tests: TestMTSave(VendingMachine) pass
Update(tests): patch VehicleModuleStorage
Tests: TestMTSave(VehicleModuleStorage) - pass
Update(tests): skip module spawning for VehicleModuleCamper in tests
Tests: TestMTSave(VehicleModuleCamper) - pass
Update(tests): patch TravelingVendor
- skip spawning mapMarker and preventBuilding trigger when testing
Tests: TestMTSave(TravelingVendor) - fails on IsGrounded while updating flags
Update(tests): patch TrainEngine
Tests: TestMTSave(TrainEngine) - fails on GetNetworkTime
Update(tests): patch TrainCar
Tests: TestMTSave(TrainCar) falls over in GetNetworkTime
Update(tests): patch Telephone
Tests: TestMTSave(Telephone) passes