138,475 Commits over 4,474 Days - 1.29cph!
Update: avoid Time calls in BasePlayer.GetUnderwearSkin
- UnderweatManifest now initialized in ServerMgr.StartServer
Tests: switched to jobs 4 and toggled underwear
Add an assertion to catch rare error spam from WaterCamera
merge from game_room_dlc -> main
switch left side of darts scoring to just show points earned in each round (doesnt accumulate on the left anymore)
Satellite list serialization fixes
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