7,903 Commits over 1,004 Days - 0.33cph!
Fixed server hip movement causing the horse to never sleep (regression from
167107
Fixed dismounted horses keeping their head turned and hip braced
Fixed pooling bugs messing with horse animations
We can now get rid of the duped ridersync in the LateUpdate now that we don't control the spine pos from the IK
Chops another 0.42ms per frame for 50 moving horses
Removed LegsAnimator on the server, we now use the existing ground normal raycasts to calculate the hip position
Hip pos calulcation on the server for 50 moving horses:
2.2ms -> 0.09ms
LegsAnimator batched raycast commands
50 moving horses: server legs 4.5 ms down to 2.1 ms per frame in the editor (still too much)
Removed so dead code in TerrainConfig following
167041
LegsAnimator optim: legs that haven't moved reuse their last ground hit instead of raycasting every frame, with a fresh raycast at least every 30 frames
Reduced the legs animator culling distance if the horse is not ridden. Force fade out when stationnary
Skip animator updates once settled, ScaleBySpeed stops rewriting its scale while standing still
Disable the 4 RotationConstraint on horses when not wearing the LNY armour
Fixed map UI allocating 2.5KB per frame when open, UpdateTerrainShaderConstants now reads the splat settings directly instead of going through the TerrainConfig getters
merge from entityflagtoggle_skipsounds
Fixed the map fade never settling after closing it, every frame for ~4s it was notifying all its children UI behaviours (0.3ms/frame)
merge from entityflagtoggle_skipsounds
Added 3 new listener kinds to EntityFlag_Toggle so BBQ and flame turrets can benefit from the optim on
166947
Fixes BBQ and flame turrets playing wrong sounds when deployed
EntityFlag_Toggle events now skips one shot sounds the first time it runs, when entity spawns
- fixes furnaces playing their extinguish sound when spawned (many other entities had the same issue: campfire, mixing table..)
- it didn't cause any perf issues before: the sound manager drops one shot sounds beyond their audible range, and entities spawned at network range, far beyond it
- now that we have base occlusion, you could hear them spawning which was an issue for both gameplay and performance
merge from entityspawning_optims
Pooled industrial conveyors switch their hum off when retired
merge from arabic_ellipsis_fix
merge from genericpopup_rrp_fix
Fixed oversized and misplaced ellipsis "..." on Arabic text, was causing "Line breaking recursion max threshold hit"
Fixed generic popup sorting issue with rrp enabled
merge from genericpopup_rrp_fix
Fixed flying horse bullshit
merge from flyinghorse_fix
merge from console_autocomplete_improvements
merge from console_autocomplete_improvements
Fixed entity and item auto completion always showing SERVER realm
Same change as
166970 but for all furnace prefabs (furnace, electric furnace, large furnace)
Conveyors are poolable
We prewarm 10 copies
We now prefill our pool with up to 30 copies of the most used io entities. The first time you load a big base will be a tad faster at the expense of more upfront memory
You're going to load them as soon as you load the local zerg base anyway
Added SoundPlayerCull to industrial conveyors looping hum sound. It was spawned regardless of distance then paused
Editor profiling, 30 conveyors spawned 150m away:
- 9ms -> 2.3ms total
- ~470us -> ~220us per conveyor spawn
- Sound.DoUpdate per frame: 112us -> 20us (the 30 paused hums were still updated every frame)
Removed the pref to skip unity event listener baking in editor, wasn't necessary
(renamed the branch to entityspawning_optims)
Added entity/item autocompletion to more commands
spawngrid and teleportany autocomplete entity names
merge from console_autocomplete_improvements
Optimized entities with flag toggles spawning: EntityFlag_Toggle now bakes its listeners at prefab preprocessing and calls them directly instead of invoking its UnityEvent
The first UnityEvent invoke on every new instance looked its listeners up by reflection.
Rough profiling from the editor, loading in a mix of 248 entities (io, locks, doors and some random deployables)
EntityFlag.DoUpdate
26ms -> 2ms total
~100us -> ~9us per entity
~940 KB -> ~231 KB total
Fixed deep sea layer nuking all the monument markers
Fixed shop markers cache being filled with junk when disconnecting/reconnecting
merge from quickcraft_optims
Optimized prefab lookups by path, we now cache exact spelling hits. Makes each FindPrefab ~7x faster on repeat calls
(was around 6us per call in builds, up to 0.5ms in frames that spawn a lot when entering network range of a base)
We could make prefab paths case sensitive instead, but I'm not gonna change the million callers and that could break plugins
Fixed QuickCraft.FindItems spending ~2ms checking if you own a dlc after looting an item, SteamDownloadableContent now caches the answer for each DLC