2,791 Commits over 669 Days - 0.17cph!
▊▋▊▅▊▊▄ ▄▄▊▉ ▄▊▋▉▅▅▄▊▆▇▇▅▊▊▍▇▅▅▄▆█▅▇▄▍▅ ▌▆▉▆▋▅█ ▅▍▄▍▄▉ ▍██▊▆▆▊▍▉ ▊▇▍▌▄▇ ▄▍ ▇▊ ▉▍▆ ▌▄▍▊▆▊▉▊▍▇▅ ▊▅▌▄█▅▋▇ ▅▇▊▆▇▌▄▅▄ ▍▋▇█▉▊▊▇▋▊ ▄▍▇▌▋▍▌▆▍▉▄█▅▌▆▋▍▅ ▌▉▋▅▉ ▉▋▅▄▊▄█ ▆▊▋█▋▇
▄█▍▍▅▌▊▉ ▍▇▌▆▍▅ ▌█▊█▊▌▆▄▄ ▇▉▇▉▉▌▆▍▆ ▋▇▊▌▆ ▅▄▍▉█▉▇▉▄ ▋▍▍▇▋▍ ▋█ ▄▍█▉ █ ▌▆▄▊▋ ▇▊ ▉▊█▍▆ ▉▇▊▇▋▉ ▊▋█ ▊▉▉██▍█ ▆▆▋ ▇▋▋▆▊█▌ ▌▍ ▍█▄█▄▅▆▊▅ ▅▆ █▌ ▌▍▆▋█ ▆▇█▅▆▇ ▋▉ █▋▅▍ ▌▍▋▊▋▍ ▉▄▉▆▅▆▇▅ ▍▆ ▉▌ ▌ ▄▍▍▊█▉▌▆▋▊█▋▉▉▅▆▇▊▅ ▄▍▊▋▍ ▍▅▅▋▅▇▉ ▄▊▍▄▄▍
Merge: from alloc_clean_june2026
- Optim: amortise or remove 19 allocation sources
Tests: on craggy, gathered resources, built a mini base
Optim: Replace Physics.OverlapBox with Physics.CheckBox in BaseVehicle.VehicleFixedUpdate
Saves allocating the results array, and should be cheaper as well
Tests: none, trivial change
Optim: get rid of string alloc in BaseCombatEntity.Hurt
1alloc/32b
Tests: none, trivial change
Optim: SpawnGroup - SpawnInstances not returns a List instead of IEnumerable
Allows to save on iterator allocation, 40b
Tests: none, trivial change
Optim: cache UpdateNetworkGroup invoke
Saves 1 alloc/128b
Tests: none, trivial change
Optim: cache PlayRadioChatter invoke
Saves 1 alloc/128b
Tests: none, trivial change
Optim: cache 2 invokes in Buoyancy.CheckSleepState
Saves 2 allocs/256b
Tests: none, trivial change
Optim: cache RemoveCorpse invoke
Saves 3 allocs, 384b total
Tests: none, trivial change
Undo of previous change - since entities can only be demolished once, the change was useless (and wasted memory)
Optim: cache StopBeingDemolishable invoke
1 alloc/128b
Tests: none, trivial change
Optim: use static action in ServerBuildingManager.Split
Should save another 2 allocs/160b per building block
Tests: none, trivial change
Clean: tabs -> spaces, get rid of explicit generic args
Tests: none, trivial change
Optim: use static callback to avoid allocs in ServerBuildingManager.CheckMerge
Saves 2 allocs, 160b total
Tests: none, trivial change
Optim: get rid of LINQ in Planner.FindSocket
Saves 3 allocs/180b total
Tests: none, trivial change
Optim: cache UpdatedVisibleHolsteredItems invoke
Saves 1 alloc/128b
Tests: none, trivial change
Optim: avoid boxing allocs in Azure.LogResource
Weirdly Enum.ToString has 2 boxing allocs, totalling 48b.
Tests: none, trivial change
Clean: fixup formatting in BasePlayer.OnProjectileAttack
Tests: none, trivial change
▍ ▊▋▌▇▅▋ ▄▆▄█▍ ▄▊█ ▊▇▋▆▉ ▄▇▄▇ ▌▇▊ ▄ ▋▅▉▉▇▉▋▄▍▌█▉▋▍▍▉▅█ ▅▋ ▇█ ▅█▄▄ ▉ ▊▊█▄▍█▋▇▅ █▌▉█ ▍▇▊▉▆▋▋▅█ █▅ ▇▅▍▊▆▍▅▉ ▇▍ ▄█▉▌▉▄▍▉▋▄▇▍▋ ▋▄▋▊▅ ▇▆█▅▅▇▊ ▋▉▅▄▅▇
Optim: cache RemoveOldNoises invoke
Saves 1-2 allocs, 128b each
Tests: none, trivial changes
Optim: use pooling in BaseNetworkable::OnNetworkLimitStart
Saves us 3 allocs, 100b min
Tests: none, trivial change
Optim: cache action in PlayerLoot.MarkDirty
1 alloc/128b
Tests: none, trivial change
Optim: cache PlayerLoot.MarkDirty action creation
Saves 1 alloc/128b per container
Tests: none, trivial change
Optim: cache actions in TrainEngine.PlayerServerInput
Saves 2 actions, 128b per
Tests: none, trivial change
Optim: cache BasePlayer.ForceUpdateTriggersAction allocation
Saves a single 128b alloc
Tests: none, trivial change
Merge: from buildcommand_allocs
- Bugfix for enable_marker_teleport teleporting to wrong Z
Tests: unit tests + enable_marker_teleport
Optim: get rid of a string alloc in teleportpos
Forgot it when expanding string view compatibility
Tests: used enable_marker_teleport
Bugfix: fix invalid trimming in ToVector(StringView)
- StringView - add 2- and 3-char Trim overloads
- add a unit test
Tests: unit tests + enable_marker_teleport
Clean: add root-level *.slnx to plastic ignore list
Tests: plastic doesn't show it as a new file
Merge: from player_benchmark_improvements
- New: added PlayerModelBenchmark scene that tracks rendering cost of new player model
Tests: ran benchmark a couple times
Clean: remove UNITY_EDITOR ifdefs around logging
Tests: none, trivial change
Update: disable lightmap baking on scene load for PlayerModelBenchmark
Tests: deleted generated assets, reopened scene - no new lightdata
Update: add PlayerModelBenchmark scene to the build list
- also add it to recognized +autobench list
Tests: none, trivial change
Update: add PlayerModelBenchmarks cene shortcut to Scenes menu
Tests: compiles
Update: resave after unity 6 upgrade
Tests: ran benchmark
Merge: from player_benchmark_improvements
Clean: remove naked player bench from ClothingBenchmark
Superceded by PlayerModelBenchmark
Tests: none, trivial change
Bugfix: avoid NRE when no recorders are requested by a benchmark
Tests: ran ClothingBenchmark
Update: PlayerModelBenchmarkScene - record bone count of spamed player models
Tests: ran benchmark
Update: BenchmarkScene - add support for selecting which recorders to activate
- added Scripts and Physics recorders
- PlayerModelBenchmark uses only Rendering + Animation ones
Tests: ran benchmark with various category bitfields
Update: add "CPU Total Frame Time" recorder
Tests: ran baseline
Update: add mainthread-only Camera.Render recorder
Tests: ran baseline
Update: PlayerModelBenchmark - add baseline run (0 models)
- change bench naming convention
Tests: none, trivial changes