6,776 Commits over 851 Days - 0.33cph!
Reduced the amount of flags OR AND and XOR switches are setting
Reduced the amount of TryGetComponentRecord calls
Circuit merge do not set the whole circuit as dirty + eval pass micro optims
No allocations when running the flood fill when rebuilding circuits
Updated all SimpleLight prefabs to use the HasPower flag instead of On
Simple light don't switch the ON flag anymore, we can just use HasPower and save a setflag when turning a light on/off (they're batched but that saves some overhead)
Added a max flag flip per tick per circuit budget too (too many flag changes can stall the client)
Circuit budgeting: all circuits share a 0.25ms budget per frame to evaluate. When the budget is depleted mid circuit, we save where we stopped and continue later. The starting circuit is never the same so a single circuit can't eat the whole budget and clog everything
Also moved the drain pass to the 1hz battery tick, it doesnt have to run on every tick
Optimised the evaluation pass. we now starts from the dirty components specifically instead of evaluating the entire circuit from start to finish
When evaluating, if a component output didnt change, we stop there
Ceiling lights just use the HasPower flag instead of On
More io entities using the new flag update
Auto turret is not sending full network update when turned on or off
Split the circuit dirty flag into two: Dirty and NeedsRebuild
so setting a circuit dirty doesnt trigger a rebuild every time
Added rebuild timings
Moved the tick to every frame
Added timings command to debug circuit perf
▄▇▌▊▇▄▋▊▍█ ▆▌▄▌▅▌ ▅▉▍▌▇▉▋▅▊▍▊▋▊█▄█▋ ▌▍ ▋█▌▍█▄▄▊▌ ▍▊ █▄▌▆█ ▆▅▉▆ ▉▊▊▄ ▇▇▄▍▉█▋▄ ▅ ▌█▇▇▊█ ▋▆▌▌ ▆▍ ▉▉▌▇ ▍▋▆▆ ▊█▄▌▋▉▄▄▅ ▅█▆▊▆▆▇ ▌▅▉ ▊▋▄▊▌
merge from automated_testing
Moved server block in TestScenario_RocketSplashDamage
Don't catch exceptions in WrapTestAsCoroutine
Bug fixes and optims, only snapshots dirty slots
Trace debug commands, logs when something happens on a circuit
Added some mint ddraw and debug commands to help debugging circuits
merge from wiretool_reconnect_fix
Fixed wiretool connection rejected by the server in some cases after clearing previous connection
Fix battery charging issue with closed loop circuits
Fixed batteries not considered as sources when building the evaluation order
merge from iolines_shader_fix
Swapped all IO wires to use the standard shader instead of standard wire. Fixes some rendering issues, they were made transparent after some changes to the wire shader
They don't really need all the features from the wire shader
More items converted to the new io system
Registered entities aren't allocating a new circuit until wired
Don't tick circuit system while loading a save, so we only rebuild everything once all the io entities and wires are registered
Converting more items to new IO system: entities are PowerConsumer by default so all lights and simple consumer work by default
Button and counter evaluators
Added baked config at register time
Batteries are data based
Root combiner distributes drain evenly on batteries connected to its inputs
Branch and blocker evaluators
Some cleanup and fixes
Batteries tick flow. Charged and depleted on the same tick
Bug fixes and refactoring
Updated some legacy input code to use the new input system
Generator, switch and light use the new IO system
Got a simple circuit working
Entity bridge first pass
Added debug commands
Drain calculation pass
New evaluators: battery and and,or,xor logic gates
merge from f1_savecategory