2,798 Commits over 700 Days - 0.17cph!
Clean: remove NetWrite.BytesWithSize(byte[]...) overloads
Tests: editor compiles
Clean: remove acouple obsolete things
- Get rid of IStreamReader/Writer - they're not used anywhere
- get rid of NetWrite.Bytes(byte[]) overload - superceded by Bytes(ReadOnlySpan<byte>)
Tests: editor compiles
Merge: from player_benchmark_improvements
- Bugfix for PlayerModelBenchmark scene missing from builds
Tests: none, trivial change
Bugfix: mark PlayerModelBenchmark.unity for maps bundle
Tests: none, trivial change
Update: in progress work to support ReadOnlySpan<byte> in NetWrite
- Rust.SourceGenerator updated to support ReadOnlySpan<byte>-like types in RPC sigs
- NetWrite pipes most byte[] calls to ReadOnlySpan overload
Still need to cleanup and figure out if IStreamWriter is needed
Tests: editor compiles
▊▋▊▅▊▊▄ ▄▄▊▉ ▄▊▋▉▅▅▄▊▆▇▇▅▊▊▍▇▅▅▄▆█▅▇▄▍▅ ▌▆▉▆▋▅█ ▅▍▄▍▄▉ ▍██▊▆▆▊▍▉ ▊▇▍▌▄▇ ▄▍ ▇▊ ▉▍▆ ▌▄▍▊▆▊▉▊▍▇▅ ▊▅▌▄█▅▋▇ ▅▇▊▆▇▌▄▅▄ ▍▋▇█▉▊▊▇▋▊ ▄▍▇▌▋▍▌▆▍▉▄█▅▌▆▋▍▅ ▌▉▋▅▉ ▉▋▅▄▊▄█ ▆▊▋█▋▇
▄█▍▍▅▌▊▉ ▍▇▌▆▍▅ ▌█▊█▊▌▆▄▄ ▇▉▇▉▉▌▆▍▆ ▋▇▊▌▆ ▅▄▍▉█▉▇▉▄ ▋▍▍▇▋▍ ▋█ ▄▍█▉ █ ▌▆▄▊▋ ▇▊ ▉▊█▍▆ ▉▇▊▇▋▉ ▊▋█ ▊▉▉██▍█ ▆▆▋ ▇▋▋▆▊█▌ ▌▍ ▍█▄█▄▅▆▊▅ ▅▆ █▌ ▌▍▆▋█ ▆▇█▅▆▇ ▋▉ █▋▅▍ ▌▍▋▊▋▍ ▉▄▉▆▅▆▇▅ ▍▆ ▉▌ ▌ ▄▍▍▊█▉▌▆▋▊█▋▉▉▅▆▇▊▅ ▄▍▊▋▍ ▍▅▅▋▅▇▉ ▄▊▍▄▄▍
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