2,836 Commits over 700 Days - 0.17cph!
Clean(editor): get rid of if bypass for drawing LightOccludee gizmos
Optim: LightOccludee - use a smaller occlusion sphere for spotlights with angle < 120deg
- updated editor gizmo vizualization to run without starting (still needs sticky gizmos)
Tests: booted on appt, went to roof and looked up, penthouse appt lights were culled. Ran around - everything looked okay, no popin
Update(editor): change window title label for MotionVectorsChecker
Tests: none, trivial change
New(editor): MotionVectorsChecker - categorizes all renderers by motion vector mode
Can be found at "Tools/Find/List Motion Vector generators"
Tests: looked at appt monument - almost everything has per-object mode
New(editor): CulledMeshesChecker - finds all meshes without some sort of culling setup
Can be found in "Tools/Find/Meshes without Occlusion setups".
Tests: ran the tool on appt monument, found ~360 issues
New(editor): CulledLightsChecker, reports lights that don't have a culling setup
Inspired by ShadowProxyChecker. Can be found in Tools/Find/Lights without Occlusion setups.
Tests: Used it to inspect the appt scene
Merge: from unity_frame_dump
- New(editor): frame debugger dump utility(https://github.com/sputnicyoji/unity-frame-dump) to help analyze what is rendered
Tests: used it to dump out a couple passes
Update(editor): move the exporter to Window/Analysis
We've got too much in Tools
Tests: editor compiles
New(editor): import and change https://github.com/sputnicyoji/unity-frame-dump
- Changed full export to run on the provided user range
- added stop full export that still emits the resulting json instead of aborting
- Added license
Tests: exported a frame from standalone client
Buildfix: expose NetworkPosTickCallback setter
Tests: none, trivial change
Merge: from cargoship_bot_replication_fix
- Buildfix: expose setter for NetworkPosTickCallback
Tests: editor compiles
Merge: from cargoship_bot_replication_fix
- Bugfix: fix bots/sleepers disappearing from cargoship
Tests: spawned cargoship event, spawned bot, followed them for a couple mins - no houdini
Bugfix: ensure netgroup of sleepers/bots is updated when parented to a moving global entity
Tests: spawned cargo ship, spawned a bot and moved through net grid for a minute - bot didn't disappear
Merge: from dropspectators_nre_fix
- Bugfix: fix for NRE that happens when multiple spectators watch a player being banned
Tests: 2 players spectated 3rd, banned them - no NRE
Bugfix: use reverse traversal avoid NRE caused by iterator invalidation when dropping spectators
Tests: 2p spectated 3rd, banned them - no more NRE
Merge: from alloc_clean_july2026
- Optim: avoid ~15 separate allocations related to scheduling/cancelling invokes
Tests: none, trivial changes
Optim: cache FogMachine invokes
- StartFogging, EnableFogFieldCB, DisableNozzleCB, FinishFoggingCB
There were invoked in StartFogging, which can oscilate with power.
Tests: none, trivial changes
Optim: skip BeeSwarmMaster.StartDie call if already dying
Saves on ActuallyDie invoke and allocation
Tests: none, trivial change
Optim: avoid repeated invoke scheduling in BeeSwarmAI
- SetOnFire gets skipped if bees are already on fire (saves StartDie scheduling)
- StartDie gets skipped if bees are already dying (saves Egress scheduling)
Tests: none, trivial changes
Bugfix: fix caching of DiveSiteBuoy.updateAction
Tests: checked IL
Optim: cache Sprinkler.DoSplash invoke
Tests: none, trivial change
Optim: cache HBHFSensor.UpdatePassthroughAmount invoke
Tests: none, trivial change
Optim: cache ElectricBattery.TickUsage invoke
Tests: none, trivial change
Optim: cache ElectricBattery.AddCharge invoke
Tests: none, trivial change
Optim: cache CoalingTower.CheckWagonLinedUp invoke
Tests: none, trivial change
Optim: Cache StrobeLight.SelfDamage invoke
Tests: none, trivial change
Optim: cache SamSite.WeaponTick invoke
Tests: none, trivial change
Merge: from fullserverdemo_removal
- Clean: Remove FullServerDemo implementation (RustRelay will take us to the promised land)
Tests: compiles, recorded client and server demos and was able to play them back
Clean: get rid of Network.ServerInfo
Was added for FullServerDemo support, no longer needed
Tests: compiles
Clean(editor): rip out DemoSever framework
It could technically emulate server state from client demos, but required too much compromising, so not worth it.
Tests: compiles
Clean: delete Demos folder from Facepunch.Network
Tests: compiles
Clean: delete full-server-demo convars
Tests: compiles
Clean: remove IServerCallback save request support
Keeping the core functionality on SaveRestore
Tests: compiles
Clean: remove FullServerDemos.cs
Tests: compiles
Clean: remove BaseNetwork.SupportsServerDemos
Tests: compiles
Clean: remove demo.full_server_demo
- rip out a bunch of stuff related to it, including transient entity serialization
- remove MessageType.DemoDisconnect and DemoTransientEntities (no need for protocol change)
Tests: compiles
Clean(editor): remove ServerDemoPlayer
Tests: compiles
Clean: remove AntiHackDemoProcessor
- drive by deprecated API fixup
Starting process of removing full server demos
Tests: compiles
Resave TimeManager
Tests: nothing specific, but have been running with this changed for a couple days
Merge: from waterlevel_deepsea_sample_fix
- Bugfix for water level queries incorrectly mixing deep sea and overworld states
- Bugfix for deep sea ocean sim using overworld heightmap
- Simplified TerrainHeightMap API
Tests: ran unit tests, booted into craggy, explored deep sea and swam around
Bugfix: avoid NRE when ocean sim is not initialized and we don't need it
Tests: booted into craggy
Clean: simplifyy WaterSystemBurst.GetHeightArray_Burst
Tests: none, trivial changes
Clean: minor adjustments to WaterLevel.GetWaterLevels impl
- use FillJobIndirect instead of FillJob when waves are not needed
- get rid of namespace qualifier
Tests: ran unit tests
Bugfix: OceanSimulation.GetHeightAttenuation - handle positions in deep sea
Tests: WaterLevel unit tests pass
Bugfix: Rewrite WaterLevel.GetWaterLevel to properly take in deep sea state
Tests: ran unit tests, water level consistency tests fail due to bug on OceanSimulation side, serial path, will fix next
Update: TerrainHeightMap.GetQueryStructure now takes in a flag for deep sea data
- got rid of bespoke height and normal sampling from HeightMapQueryStructure
- bugfix: buoyancy - WaterSystemBurst.GetHeightArray_Burst now samples relevant heightfields instead of assuming deepsea heightfield is a single const
Last duplicate is gone, yay. Can finally look at fixing WaterLevel.GetWaterLevel and other spots
Tests: booted into craggy, generated deepsea and teleported to it - swam around, went to the islands, went to scientist tugboats
Clean: rip out TerrainHeightMap.GetHeightsFastIndirect
GetHeightsIndirect is similarly fast(~10%) and consistent at borders with GetHeight
Tests: ran water level tests (but they're falsely passing)