134,032 Commits over 4,444 Days - 1.26cph!
merge from render_pipeline_testing
merge from prototype -> apartment_complex_monument
Adjust the position of the front vendor forwards so they are easier to interact with
Move vendor & apartment building entity from the scene -> apartment_complex_core.prefab to prevent merge conflicts
refactor airfield terminals to use a "charge up" type of powering
made general ChargeUpIOEntity to inherit from for this style of behaviour
Stop WaterSystem from making the scene view continuously render for no reason
You can enable Always Refresh in the scene view if you want it back
merge from main -> apartment_complex_monument/prototype
Merge from clan_tab_refresh_button
update apartment_complex_monument/prototype
merge from prototype -> apartment_complex_monument
Clan score and log tabs now show last refresh time with a button to refresh the data if it has been more than 30s
When opening the spraycan reskin menu, the currently applied skin object you are looking at is now greyed out, instead of always being accessible and confusing - works with wallpaper too
https://files.facepunch.com/cipeaX/2026/June/17_19-28-ScratchyBass.mp4
Ability to enable/disable seat by socket height dynamically on each entity
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)
Add unitask branch to run server occlusion pair gathering in parallel with useplayerupdatejobs >= 4, add tests
- initial perf tests suggest ~40-50% faster execution in a 400-player scenario
- consistency tests pass
add some additional RRP client-only guards
Clean: remove TerrainHeightMap.GetHeightFast, replace with GetHeight
- added GetHeight(Vec2) overloads to avoid accidental GetHeight(Vec3) call via implicit conversion
GetHeightFast is ~55% faster in managed land, but it's not used in very hot loops, so doubt we'll notice the difference. If we really care, we can replace it with available burst jobs.
Tests: ran unit tests
Compile fixes, metas, codegen
Update(tests): add TestGetHeightsIndirect_UV_Overworld and TestGetHeightsIndirect_UV_DeepSea tests
Tests: ran all unit tests
Fix crash in DrawProcedural() due to wrong shaderPassId
added sprint sub system script to blunderbus,lmg,l96,m39,waterpipe shotgun,hm smg, sks entities and exported/linked unique 3p sprint idle pose for each weapon
Update: TerrainHeightMap - redirect all height and normal calcs to go via HeightMapData impl
- Renamed HeightMapData.GetHeight -> GetHeight01
Tests: all unit tests pass, perf tests results seem same
Glowing Wallpapers - foxfire wallpaper initial setup
Update: fill in some missing overloads in TerrainHeightMap
- get rid of commented methods
Tests: ran unit tests
adding roll container prop
Removed Tests/Open Property Drawer Test Window
Was introduced by the TMP update, never gonna use and its a stupid path
merge from horse_cactus_fix
Clean: replace GetHeightsFastIndirect with GetHeightsIndirect
- also fix a bug with invalid indexing
- TerrainMap<T> now exposes internal src buffer as a ReadOnly view
Starting cleanup effort, rough path ahead
Tests: ran unit tests
Fixed player dying instantly when touching a cactus while mounting a horse
Could happen rarely when the rider sat on the edge of the cactus TriggerHurtEx trigger. When mounted, the mount sync force updates the player triggers every frame, so the overlap test flickered in and out of the trigger and fired OnTriggerEnter
Can happen with any mountable in theory, just more common with horses
TriggerHurtEx now debounces damage applied to the same entity multiple times in a single frame
merge from PlayerMaintainedMonuments
Further spraycan refactor progress
Entities restrict whether they are in a valid state for reskinning by overriding CanBeReskinned / CanBeRedirectSwapped
Unified the way the reskin error toasts are sent, added 2 more - getting toasts when a reskin failed is now more consistent vs just not being able to open the menu
Fixed not seeing the amount of seconds you need to wait when trying to reskin a recently damaged entity
Some cleanup, moved BaseEntity.Reskinning to its own file
merge from PlayerMaintainedMonuments
Remove concept of global available power amount for now, instead each powergrid access point has a base amount it provides when powered. Inserted powerplant fuses increase this amount at every access point. Felt like the cleaner way of distributing power regardless of map size and number of access points.
Rename powergrid_generator.static prefab as it isn't really a generator
Add option to electric generators for what they should do if they require the powergrid but server has powergrid disabled (do we want certain powergrid connected circuits then always powered on or off)
updates to gas station circuitry/garage door from meeting feedback
merge from workshopskinnable_metal_shop_front
fixed workshop materials not displaying on metal shop front, also fixed gibs showing correct material. Triangulated mesh and fixed a few unwelded verts
vending_machine_admin_typo -> main