160,370 Commits over 4,566 Days - 1.46cph!
merge from base_occlusion/vending_door_fix -> base_occlusion
Add support for doors to be "always closed" but still treated like portals between rooms
- allows vending machines to block visibility between rooms while keeping the same code as doors
Add the "door blocker" component for base occlusion to the vending machine prefab too
Fix entities placed in sockets (vending machines) not linking up with their sockets until stability runs (which doesn't apply for vending machines) or server restart
- part of the reason vending machines didn't block occlusion: they sometimes had no links
Fix entities that were forced dynamic due to being parented never resetting the flag when pooled and staying dynamic when reused without a parent
Update tests to be aware of the extra faces on foundations now
Fix a foundation surrounded by walls being connected to a foundation outside the base offset half below
- add faces on the sides of foundations & rely on existing face linking behavior to work properly
Reserialize foundation prefabs before adding new faces (for clean diff)
added example mesh for jarryd -
idea is to box’s position, dimensions and rotation
Use object-name suffixes to assign physics materials, e.g. floor_01_wood uses Wood.
Remove material suffixes from generated child names
Place aligned colliders directly on the parent; create separate children for rotated boxes
Remove the reference instance after conversion, with Undo/Redo support
Cherry pick old animals fixes (flee when attacked from afar, do not sleep)
UIBlurCanvasesBehind skips the capture while a CanvasGroup above is faded out
Improve DImage shader replacement system
* Uses case insensitive check for VertexLitGeneric, includes LightmappedGeneric now
* Handles SubRect shader materials by drawing the correct part of the texture
Try to have Paint tool UI with previews
* https://files.facepunch.com/rubat/2026/October13-3318-SecondhandWoodborer.png
Lets try ignoring UV adjustments in surface.DrawTexturedRectUV
* So the function's UV arguments work like expected, without the "sub pixel adjustment" stuff, which seems unnecessary?
* Only the Lua binding is affected
Refine DImage subrect support and KeepAspect features
Minor cleanups
Remove leftover debug panel from Paint tool, KeepAspect the icons
Update GHA actions to version 6 for Linux and Windows
Add trigger_portal_cleanser to entity override whitelist
Fixed a crash with render.UpdateScreenEffectTexture
Remove widgets.RenderMe and properties.GetHovered serverside
* widgets would just do nothing, but shouldn't exist on the server, properties.GetHovered would just error out
Minor cleanups of various methods to match wiki and vice versa
Fixed a couple memory leaks with multicore rendering
* Mostly relates to functions such as render.UpdateScreenEffectTexture and render.PushCustomClipPlane
Try downgrading actions/checkout to v5
* goddamn github man
Port a fix for math.ceil/floor
Add some self checks for corrupted map files
"load" concommand doesn't boot you from session for missing saves
* So "load quick" bind doesn't disconnect you if you accidentally press it without having a quick save
Fixed ZFunc not being set when overriding depth testing
Fixed regression with DPanel:OnMousePressed due to recent changes
Merge Pull Requests
* Make ENT:StoreOutput treat times=0 same as times=-1, making it consistent with engine entities
Try to add the file path to CWin32ReadOnlyFile::FS_fread warnings
Move DrawTexturedRectUV changes to a separate func
* DrawTexturedRectRawUV
Prediction errors on arrays include array index for ints and floats
Try to add classname to CUtlRBTree overflow message
Rename ErrorFromLua to ErrorNoHaltStack
Added CLuaInterface::FormatError
Fixed some compile warnings
Allow mesh.BoneData to be called with index 2
* Weight value is ignored in this case
* Mesh() global now allows 3 bone weights
* Mesh:BuildFromTriangles will now read up to 3 weights, depending on the input above
Added 2 new sub scopes to PhysFrame
* `PhysFrame-CPhysicsEnvironment::Simulate` and `PhysFrame-VPhysicsShadowUpdate`
Added OnChangedFromMin/Max to math_counter entity
* Also added SetMax/MinValueNoFire inputs for it
Improve error handling of Autorefresh
Fixed memory leak with Windows auto refresh with symlinks
* Hopefully without regressions, as the system was changed somewhat substantially
Fixed a crash with inputs firing from removed triggers
Fixed wrong lookup function used in Hunter NPC code
Add m_hStoredPathTarget to SetSaveValue whitelist
Minor Hammer code fixes
Fixed wrongful error with Mesh:DrawSkinned with 52 bones
Fix Folder addons being searched in mountable games/platform
Add "Engine Error" to Sys_Error_Internal printf
Disable some unused Bootil stuff that spits out warnings
Fixed an issue with prediction error counting affecting certain fields
Make "SetPos touch triggers" change opt-in via argument
* This change causes infinite loops in existing addons, such as TTT.
Fixed auto complete for lua_refresh_file
rename `demo.newui` to `demo.oldui`, enable demoui2 by default.
[old ui stays. we really don't have a reason to nuke it for now and there are still some people that prefer the old one.]
Adjust empty model file handling
* Change where it bails so maybe its less error prone?
Fixed an issue with prediction error counting affecting certain fields
Added icons for the 5 new TF2 maps
Set "occlusion_door_immediate" to false by default (was supposed to be since we show everything within 32m)
merge from aizone_sleep_fix
Add special staging-only gamepad UI button option that hackily enables gamepad override just for that session.
Hide all other gamepad options in the gamepad section until it is enabled.
Fix navmesh building on top of cargoship
Fix AI Sleep Zones not working correctly since May
- race condition fix earlier this year inadvertently made any zone outside of a BaseEntity not initialise correctly (all except underwater labs)
- before / after on fresh procmap: https://files.facepunch.com/ryanw/2026/October/26_19-06-IndelibleBlackrhino.png / https://files.facepunch.com/ryanw/2026/October/26_18-54-FluffyDaddylonglegs.png
Fix sheeps starving despite a trough, their feed time was lower than cows so they wasted time shuffling with each other for a turn, now feeding time can't desync between sheep and cows
Update: Item.UseItem now returns if the entire item was consumed
- bugfix IndustrialConveyor's use-after-free of item in QuickMove path
Tests: ran conveyor tests, no longer failing
▉ ▄▅▄▌▇ █▆ ▍▅▉▇ ▋▋▄▍▌▉▅▄█▅▌ ▋▆▋▆▉ ▊█▆██ ▌█▋▍▊▇▇▍█▇ ▄ ▍▄▉▇▇ ▇█ ▅█▅▉█▆▇▋ ▅▄▍▊▉ ▌▄▍▍▆▆▍▆ ▅▋▅▍▋▌▋▆▆ ▌▆▆▍▅▍▆▇▄▉▉ ▌▆▆▍ ▋▋▅ ▌▅▉▅▄▇▆ ▍▊▄▉ ▊█▊▉▌ ▅▋▇▉▋ ▅▊▊▆▊ █▇▍ █▅▅▄ ▊▌▄▋▋▅ ▍▋▅▆ ▅▌ ▇▅▌▇█ ▄▆█▆▇ ▋█▌▍▇▌▍▍▆ ▍▇▊▋▋▉▄█▉▇▌▉▌█▌▌▉▉▄▉▇▍▋▋▆▅ ▉▌▌ ▌▄▋▆▄▆█▊ █▅▌▇▊▊▄▇ ▌▍▄▄▄ ▌▇▍ █▌▍▉ ▌█▊ ▍▆▊▋▇▄▇▋▅▇▆▄█▅▅▋▆▊ ██▅▉▌ ▋▍▋▌ ▋▆▆▍▋▍█▌▅▄▍▋▆█ ▅▌▊▌ ▋▌▋▆▅▊▌█▄ █▇▇▌▋▉▅▉
Optimize doors when recalculating series of connected rooms when doors are opened & closed
merge from analytics_base_occlusion -> main
merge from work_queue_optims
- anims and clips for weapons own anims, inc stock deploy + collapse, reload and fire
- initial animator setup for these weapon anims
- clip update of 3p idle
- avatar setup for world weapon rig
Add analytics events for rotating and flipping building blocks
▄ █▍█▅▊ ▌▅▋▉ ▇▄▍▅▌▊▍██▍▍▋█▊▊▄
█ ▅ ▆▆▋▋▇ ▊▉▅▊ ▆▆▊▅▄ ▉▌ ▇▉▌ █▆▆▉█▄▋▅▊▆ ▇▉▅▄▊▉▆▋ ▄▅▍▌▍▋▆▇▍▊▋ ▇▍ ▌▊▄ ▍▌▍▊ ▆▊▉▉ ▍▌ ▇▊▄▊▉█▆▄▇▇ ▍▊▇▉▇▅▅▅ ▇▇ ▇▉▌ ▄▄▋▊▊ █▇ ▉▇▍▄ █▉▆▇▅▆▄ ▌█▆▅ ▇▉█▇▅ ▉█▅ ▉▉▌▋▄▉▋▌ ▊▊▄▋▉▊▆
boat_scientists_improvements -> main
Only attempt turns when we can actually see the player
Lap interval pass on additional work queues
- DroppedItemUnderwaterQueue, 0.05, keep inline (ish) with physics tick rate
- BotColliderWorkQueue, 0.1, this is only refreshed every 0.2-0.3 seconds anyway
Fix bad merge when updated before submitting livestock lamp changes
merge from main -> base_occlusion
merge from analytics_base_occlusion -> main
boat_scientist_improvements -> main
- Give up players if you've been chasing them for a while
- Pursue for a max set of meters unless that player shoost you
replicated_convar_error_change -> main
item_pool_expansion -> main
radwater_color_throw_fix -> main
Add "isOpen" to the existing door toggled event
3p setup wip
- 3p anims
- holdtype controller population
- holster placement
▇ ▇▉▅▊▋ ▉▄ ▌▍▇▌█ ▋█▋▊▋ █▄█▄▆█▊▋▄ ▋▉█▄▊ ▄▇▆▉▋▌▉ ▋▊▆▆▍ ▆▋ ▅▌▋▇▄▍▆▆▌ ▇▄▅█ ▌▊▋▉▇ ▍▋▌ ▄█▍▍▌▆ ▋▇▆▌ ▇▅▍▉▅ ▄▅█▅▇▌ █▍▉▊ █▊▄▍▊▍▄▉▍▅▇▌█▆ ▋█▌▊█▊▍▉▇ ▉▊▇▍▌ ▇▍▉▉▇▇▇▉ ▋█▉ ▍▇▉▍█▋▆ ▋▅▇▍▍▋ █▌▊▌▇█▆▆▄▆▆▍▉▌█▄▌▅ ▋▇▅▉▇▇▉▌▋ █▉▋█▇▍▋▄ ▉▊▉ ▅▆▆▆ ▍▅▇ ▄ ▍▍▌▊▆▅▅ ▊▊▌ █▇▆▉▋ ▋▊▆ ▋▌▍▋▋▌█▇▄▉ ▄▍▊▆▄▉▌ ▋▊ ▌█▆▆▇▅▆▄▇▆
- Swap to another target if the boats main target is obstructed
- Otherwise decide to bail if the target has been hidden for a long time