12,984 Commits over 2,376 Days - 0.23cph!
Added a cached list of dynamic objects in range of the sprinkler, only check line of sight if they move 1m away from their last position
Will remove any cost for splashing dynamic, non-moving objects (sleepers, dud explosives, idle players, etc)
Possible refactor of how we handle finding Splashable entities for the sprinkler
Uses a new SplashableStaticGrid that supports updating grid positions of deployables that are parented to moving objects (like boats)
Use a new trigger attached to the sprinkler for dynamic entities (players, explosives, bees, etc), this actually results in much more responsive behaviour
This removes the expensive Vis.Entities but has unfortunately introduced a raycast on the dynamic entites for every splash, still needs some thought
Fixed small ramp colliders not on wood layer
Increased resolution of auto generated collider mesh to fix some hioles that should be shootable
Map marker edit UI now appears above fog of war
Inventory null check in Mailbox
Fixed not being able to switch to softcore on craggy island
Don't drop softcore corpses if the deployable is on a player boat
Only calculate position and scale once in ImpostorBatching
Hooked up missing Impostor component and fixed incorrect LOD4 material on:
palm_tree_tropical_small_a
palm_tree_tropical_med_b
palm_tree_small_a
palm_tree_small_b
S2P all tropical islands
Small engine now switches to a non shadow casting static mesh at LOD 3+4
Added a boat building player inventory loadout
Fixed being able to place engines and small ramps in prevent building volumes
Removed some client allocations in RepairCostIndicator
Fixed tutorial islands getting the wrong ID when loading a save
Fix player collider not being the right size when waking up for a frame, caused incorrect triggers to be picked up by ForceUpdateTriggers
This resulted in the player being affected by the TriggerPlayerForce attached to boat blocks when waking up, which happens when entering/exiting the deep sea
Merge from boat_water_fx_optim
Even more fx optimisations, move the blocks into a work queue and support breaking out mid processing if we take too long to avoid queue overruns
Also added early returns for disabling fx (so fully occluded blocks are now effectively free) and bypassed the Angle calculation if a block is fully occluded
Fixed a tarp on the elevator shaft that had LOD1 at a different position
Fixed delay when first opening a ramp after entering network range if that ramp was in it's closed state
Improved the island appearance on the map, just gradient from sand to grass based on terrain height
Better than greyscale, not quite as good as the mainland
Possible fix for all boat blocks showing splash fx in builds (should only show when their edge is unobstructed and in the water)
Fixed GrowableGenetics and UpdateResourcePings pool leaks
Fixed boogie board LOD not marked as dynamic
Fixed every impact fx in the deep sea being sand
Make cooking tests editor only for now
Update tests to better reflect new update flow
Cache HasAttachedStorageAdaptor
Don't mark items as dirty every update, only when they pass a 5s increment
Eliminates most of the MarkDirty calls and brings the 1000 oven test case under the 0.25ms budget some of the time
Convert ovens to a persistent work queue, budgeted to 0.25ms by default
In the 1000 oven test case this caps out at processing around 40-50 ovens a frame
Added quick add paths for creating byproducts (charcoal) and cooking results (cooked meat or frags, sulphur, etc)
This skips creating a new item and triggering the MoveToContainer process if there is already a stack of that item that we can stack onto
Reorder ConsumeFuel so that the fuel item is only marked dirty once (was happening twice)
Takes the worst case oven cycle for 1000 ovens creating a new item in the same frame from 270kb alloc and 18.3ms to 0b alloc and 4.62ms
Added debug.spawnOvenStressTest, spawns 1000 ovens with wood and metal ore and turns them on
Basic cooking tests, checks smelting ore and cooking food on all ovens
Fixed tutorial island error
Added GetMaterialAtPosition to MeshTerrainRoot, hooked up to evaluate when a position is in the deep sea
This solves footstep sounds and impact fx on the deep sea islands not working as expected
Had to emulate the SetupSplatLookup process from TerrainSplatMap
This will be skipped on the server as MeshTerrainRoot is an IClientComponent, which I believe should be fine since we largely use this for fx
S2P all islands
Fixed GroundWatch not working on small ramps
Merge from main
Merged PlayerModel.IK.cs and party_hat.prefab automatically
Merge from naval_update/industrial_optim