7,924 Commits over 1,004 Days - 0.33cph!
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
Fixed the player name cache being cleared on every team update, causing the team UI to refilter every name through Steam (~1.5ms every 4s with 7 teammates)
merge from animalanimation_optims
Fixed AnimalAnimation out of range errors
merge from notices_rtl_fix
Fixed item dropped and item pickup notices not working with RTL languages
Fixed CraftingNotice allocating every frame when crafting an item
Also converted them to RustText so they can display RTL languages
merge from boateffects_optims
Optimized MotorRowboat.Update, it has a slow water height check for its effects, around 0.10ms
- culled by distance
- skipped when stationnary for >3s
Fixed AnimalAnimation allocating 80 bytes for each footstep
merge from animalanimation_optims
▊▉▉▋▋▋█ ▉ ▋▌▍ ▇▉▌▇▊▌ ▄▅ ▆▍▋▉ ▉▉▄▆▊▊▅ ▌▄ ▋█▋ ▊▆▋▋▄▉▇▋ ▄▄▌▅▌▄▍▆▆▌▅▊▍▍▍▆ ▋ ▉▌▍▉▍▍▉▄ ▅ ▋█▅▇▄▊▊▍ ██▋▍█▊ ▋▍▉▅▊▌▋▊▆▉▄▉▋█▆▄▅▆▄▊▇█▅▍▋█▍▄▉▉▉▋▄▅▆▉█▋▍▆█▄▆▉▆▉▍▅▋▇▇█▌▋▆▆▌▊█▅▌▋▄▊
merge from texturestreaming_texturepropertiescache_fix
Fixed TextureStreaming never filling its shader texture property cache, every belt swap was allocating all shader property names (18KB down to 1KB per swap)
merge from lightlod_optims
Cache DistanceFlareLOD fading action
Fixed shadowlights convar handler stacking up across editor play sessions
Fixed LightLOD.Awake and OnDestroy allocating
The shadow caching convar callback was subscribed per light, every light spawn and destroy copied the whole handler list (had 1500 lights, 10KB every time)
Cache AmbientLightLOD fading action
merge from drinkingpoint_optims
merge from drinkingpoint_optims
Fixed UpdateWaterDrinkingPoint running when not needed:
- now runs in the entity looking at tick every 0.1s
- skipped when mounted, or when move speed is above drinkMovementSpeed
Its a trace so it wasnt scaling well in big bases
Cache vending machines and skip rebuilding all their markers when opening the map
Saves around 80ms on a server with 170 vending machines
merge from console_autocomplete_improvements
merge from lookatboat_optim
Cache LandmarkInfos so we only rebuild them when necessary
When opening the map, only rebuild the mission provider states when they changed, saves ~100ms when opening the map on my machine
Cache LookAtBoatBuildingBlock action so it doesnt allocate every frame