138,469 Commits over 4,474 Days - 1.29cph!
Update: in UseParallelSaves mode, Ragdol component samples transform handles
Tests: on playground enabled Jobs 4 and ragdolled a bunch of times
improved sculpting ux massively, keeps collider as-is during carve (only updating visuals) so that carving depth doesn't feed into itself or need messy plane logic
Merge from playermaintainedmonuments
Update: use handles to get pitch and yaw rotations for AttackHelicopterTurret in UseParallelSaves mode
- amended test to cover turret saving path
Tests: TestMTSave pass
Fix scientists not spawning in deep sea
Workbench recycle bin upgrade is now interactable and gets its own 16 slot storage.
Reycle upgrade automatically puts all returned ingredients into the recycle bin storage.
Bin storage is take-only - can't put anything in or add to existing stacks manually.
Merge from render_pipeline_testing
Fixed the normal maps not being present on the deploy meshes
thickened up X sprays and set O sprays to white
Update: move OrientableLight interpolation invoke from Save to rpc + ondeply
Scheduling invokes won't be safe in MT
Tests: none
Fix hit animation not working
adding for Damian to check
Update: avoid transform call in TravellingVendor.Save when it's following a spline
Tests: none
Supply signal animation updates
Update: move Privelege caching from DisplayingBoxStorage.Save to OnPrivelegeUpdated
We can't have it in Save as it is self-modifying and can call Vis.Entities - lets see how this holds
Tests: none
No longer create pie close action if there isn't a closing command
- Added a fast path for root canvas toggling, that lets us toggle the main menu root canvas without triggering a lot of stuff on every graphic
- Graphic::CacheCanvas walks up and stops at the first enabled canvas instead of doing a nasty GetComponentsInParent, saves ~560KB of GC per menu toggle
- Each main menu page now has a canvas component too
Toggling the menu:
- ~134ms → ~45ms
- GC ~600KB -> 24KB
Update: force TimeZone caching in WipeTimer.ServerInit
While smashing TestMTSave(WipeTimer) I saw it NRE while resolving timezone. Couldn't repro again, but this should make it safe
Tests: none, trivial change
Update: get rid of WipeTimer rounding to second, just pass DateTime from external source
Old version would always have a sporadic fails when serialization test would run across second boundary, this way we can control it in tests
Tests: a bunch of times for hacked version of TestMTSave(WipeTimer) that has 1k serialization tasks
fix double free on pooled array in sculpting
Pooltable:
Show 'turn processing' if the balls are still moving. Have reset game as a second option
Dont show reset game if players are mounted to the pool table
merge from vehicle_emojis
Improved emoji search in chat
- Can search for items with their display name (had to guess their shortname before), works in different languages
- Emoji autocomplete now also works with Contains instead of just StartsWith
Fix car and chassis vehicle items having whitespace in their shortname - its bad and breaks using them as emojis in chat
Changing shortnames is cursed but these are only used for the f1 vehicle tab and I've applied the FreezeItemId tag so the id will stay the same
Update(tests): add various missing TestServer setup and unit testing bypass for entity logic
Tests: ran all TestMTSave, no sporadic failures, except WipeTimer - guess my prev fix didn't work >.>
SoftMask optims:
- Don't bother updating disabled soft masks from OnCanvasHierarchyChanged
- NearestMask cache disabled masks, so we can skip the second walk
SoftMask.OnCanvasHierarchyChanged 30ms -> 0.03ms when opening the main menu
Better snapping.
Can also now snap placement of a new fence to a post of an existing fence.
TryFindNearbySnapPost uses the grid too.
Folder setup and start of initial greyboxing for underground player basement blocks (WIP and continuing)
Merge from render_pipeline_testing
Added missing shader passes back to all main subshaders
Update: made MarketTerminal.Save MT friendly
- get rid of TimeUntil aliases from Entity.proto
- ran protobuf gen
Doesn't need protocol update, as the underlying type/serialization doesn't change
Tests: TestMTSave - all 636 tests pass, though gotta work on cleanup consistency
merge from Increase_spoiled_produce_stacksize
merge from SnowJacketBuff
Addding squirrel asset for test implementations. Added materials, textrures, prefabs, animations and models.
Merge from render_pipeline_testing
Added the shadow caster pass back to the cloth shaders
Update: WipeTimer now returns time rounded to a second
No change for gameplay, but makes serialization tests consistent
Tests: 20 runs of TestMTSave(WipeTimer), all pass
Update(tests): TestMTSave - move protobuf serialization to worker threads to catch more invalid API usages
Revealed 2 failures
Tests: ran all TestMTSave - MarketTerminal (TimeUnitl) and WipeTimer(missmatching stream) failed
Bugfix: avoid Time call in ChickenCoop.Save to make it MT friendly
- added chicken as part of test setup to trigger this path
Tests: TestMTSave pass
Updating m92 viewmodel mesh
Also updated wire slack and snap attraction point game tip to use tokenized binds
Added support for tokenized phrase in settings tooltips, updated deployable snapping tooltip to use [+snapping]
Update: BasePlayer - don't mutate own model state on save
We modify the copy as we send it, and the original value should be modified on every tick, so should be safe
Tests: none, trivial change
Update: make ItemBlueprint.FindBlueprint MT friendly
GetComponent is not thread safe, so caching item->blueprint pairs at init time
Tests: setup TC, made sure it has right upkeep calculated