132,366 Commits over 4,262 Days - 1.29cph!
Bugfix: early out when double-remove happens
Not sure why yet, but saw the same with double-add before, so going to replicate. Also noticed that we can be tracked, but have null-entitycontents, which leads to wasted Invokes, adding overhead - checking
Tests: built boat, spawned npc, went to edit mode - no more errors
Fixed slim gap in half wall hard side
Added brutalist skin roof top line mesh and conditional prefabs
Flagged steering wheel lock model and effects as dynamic
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
Split Autoturret into multiple work queues:
Ammo,
Scan,
Tick
Keep Aiming/Rotating code in the 66hz loop
Move TargetAquisition/Thinking/Firing to a 10hz work queue scheduling loop
Around a 0.3ms in improvement (in spikes) on idle with 500 turrets.
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
Split off autoturret ammo updating into its own queue
No need to sort rays - we are looping over them all anyway
I'm sure theres some minor concerns with the relevant collider 'usually' being first, but the loop isnt the expensive bit
The scale of the sorting is
Don't need to check peekers if the target isn't a player. Should save us some cycles
main -> autoturret_improvements
Added debug.spawnOvenStressTest, spawns 1000 ovens with wood and metal ore and turns them on
Undo: `139927` (merge: from triggerparentdelayedexit_optim)
Basic cooking tests, checks smelting ore and cooking food on all ovens
Enable on foundation & triangle foundation
Add ability for certain SocketMod_TerrainCheck to count as in-ground when clipped into rock (so we don't introduce bugs on other deployables)
* Make instances identifiable by a single never changing integer
* Speed up adding/removing instances by using various look up tables to find instances instead of staged linear searching
Fixed tutorial island error
Use Antihack.IsInsideMesh() to determine if a terrain corner is clipped into a rock, fixing foundations placed on top of tall rocks and clipped into it not being buildable
Introduce some inaccuracy and bursts when Scientists are firing the mounted weapons on the PT Boat
- Codegen
scientist_boat_ai_inaccuracy -> main
- Setup customizable properties (servervars)
- Codegen
adjust bouyancy pausing step
Set y height to 0 now instead of trying to grab the water level (failing and giving us -16?)
Block pickup of easel when painting is socketed
Convert to interface for easel paintables, add photoframe support
Merge: from triggerparentdelayedexit_optim
- Optim: triggerparent.tickmode 0-3 (0 default) - various implementations for TriggerParent.OnTick execution, can be switched at runtime.
Tests: unit tests + building a boat, jumping around on it, trying going under it and climbing ladders and stairs.
Update: Codegen
Tests: ran "check compile errors"
Added space station skin roof top line mesh and conditional prefabs
Set patrol heli global network group to main island, so you can't see or hear it from the deep sea
Optim: in tickmode 3, run OverlapOBB and TraceRealm queries in parallel
Should help in many-boats-players scenarios, in theory
Tests: built a boat and jumped around as it was moving
Bugfix: SelectNearestNHitsJob - ensure we emit an end if we couldn't select requested number of hits
- Added couple early returns to avoid div by 0 issues
Tests: rode a boat with tickmode 3
Update: initial full version of TriggerParent.ShouldParentEntitiesJobs
inlines ToClipping so that we can batch OverlapOBB, but doesn't batch expensive-but-rare checks - need to see if we need this during playtest
Tests: built a boat, finished it, enabled tickmode 3, tried jumping on/off the boat
Add a convar for debugging the boat ai flipping eject
- Codegen
main -> mountplayersync_ai_bypass
missing_script_errors -> main
Update: Added GamePhysics.OverlapOBBs
- added basic consistency unit test: TestOverlapOBBsConsistency
Tests: ran unit test
merge from spacestation_storepages