Standalone: don't export citizen addon separately (we already work out which assets we need)
Standalone: skip Sentry
Load startup backgrounds from vtex
Standalone: can pick custom startup image
Standalone: Custom icon support
Standalone: Don't set icon/splash screen if not specified
Editor: add non-collapsable group widget
Standalone: make initial wizard page more bearable
Add EditorUtility.TranslateString
Localize some of the menu
Add localization.build command
Menu localization
Use BC7 for default material input, higher precision than DXT5, this whole material input stuff feels like bogus now
Make sure we don't composite SSAO/SSR to glass, this can handled better
https://files.facepunch.com/sampavlovic/1b2911b1/rcWAoleK3t.png
GrabFrameTexture/GrabDepthTexture returns grabbed render target instead of void
Mode fallback / VrForward > Forward (#1805)
* Add Mode fallback, used for both using Depth() as a fallback if shader doesn't have DepthNormal() and to move VrForward() to just Forward()
* VrForward > Forward, reverse fallback so that old shaders with VrForward use that still
* Remove duplicate Forward() and remove DepthNormal fallback
* Put mode fallbacks on materialsystem init instead of gameinfo
Update shaders
Fix implicit truncation
Improve AppendComponentsFromMesh
PlayerController - halve automatic duck animation distance
SvgTextureGenerator can scale, offset and rotate
Protect AssetEntry from file not existing
Don't try to create a gizmo scope if no active instance
Switch "Unable to create world for map" to a warning
Fix NRE in VrHand.UpdatePose
Fix JsonException in HammerSession.OnPaste
Remove a bunch of stuff from Facepunch.Steamworks (we should try to delete all of this)
Add assert to diagnose "Can't parent to a gameobject in a different scene"
Add Plane.IntersectLine
Only allow vertices to be connected if the line between vertices is inside face https://files.facepunch.com/layla/1b3011b1/sbox-dev_yFepkU8mgI.mp4
Fix typo in this summary
Reorder edge operations to match hammers
Add combine faces operation https://files.facepunch.com/layla/1b3011b1/sbox-dev_ydJIifDVMg.mp4
Fixed an instance where an editor lobby could be public even when it's set to private in the editor. This could have happened if CreateLobby was called with Privacy = LobbyPrivacy.Public - now the editor option will dictate the privacy of all editor lobbies.
Fixed an issue where performing a network refresh might not synchronize the tags with the owner's version of the object. Fixes Facepunch/sbox-issues#7301
Double max string table snapshot entry size from 4mb to 8mb (Fixes Facepunch/sbox-issues#7250)
SyncFlags.Interpolate (#1789)
MapInstance: use InvokeWithWarning() for loaded / unloaded actions
Fixes SBOX-2WM2
Fixes SBOX-2X2S
Fix assert to diagnose "Can't parent to a gameobject in a different scene" breaking if Components ToString is overwritten
Fixed network info being incorrect / unset in OnNetworkSpawn callbacks because _net is not set yet. Fixes (Facepunch/sbox-issues#6447)
Fix sphere trace returning incorrect HitPosition when using SceneTrace.RunAll()
Hook up Sound.Play delay parameter
AssetPreviewWidget builds dynamic layout, passes parent widget correctly
Add SoundPlayer, use as preview widget for sound files
https://files.facepunch.com/solw/2025/January/30_11-51-FarflungUrubu.png
PreviewSound automatically plays from 0,0
Remove opaque automatic sound playback from AssetList
Rework anim parameter inspector to emit changed events (#1812)
Standalone: core file whitelist, reduces minimal export size by 300MB (1.2GB -> 800MB)
https://files.facepunch.com/alexguthrie/1b3011b1/WizTree64_hoaOoWymnw.png
Standalone: move stuff over to whitelist system, remove EnabledAddons (we only have `base` now)
Standalone: export presets
https://files.facepunch.com/alexguthrie/1b3011b1/sbox-dev_zi12A4W7uN.mp4
Fix NavMeshAreas not linking to their collider correctly if deserialized in the "wrong" order
Standalone: build page shows failures and progress more clearly, don't auto advance so we can see what's fucking up
https://files.facepunch.com/alexguthrie/1b3011b1/sbox-dev_1Nb5BFbmtw.png
Fix NavAgent ground trace for MapColliders (Run two traces instead of one trace with RunAll)
New Outfit piece - Wind Breaker
https://files.facepunch.com/daniel/1b3111b1/Screenshot%202025-01-31%20001512.png
https://files.facepunch.com/daniel/1b3111b1/Screenshot%202025-01-31%20001151.png
Make light cookie in texture in light desc a strong copyable so it doesn't get yanked out from under us. Cache light cookie texture in light scene object for good measure.
Avoid TypeLibrary for component creation during cloning
Cache member list of cloneable properties (-> 2 times faster clone)
Cache property list for CheckRequireComponent (another 2x improvement in clone)
Tiny optimization in GameObject.MakeNameUnique
Fix property filter for cloning & Fix NRE in CheckRequiredComponents
Add support for custom I16F color format, a generic grayscale 16-bpp float texture, unlike R16F it'll sample all channels to gray (#1813)
Optimize Network.RegisterProperties by caching reflection data (#1815)
Refactor parts of CloneHelpers into a ReflectionQueryCache
Can now move the handle on grid-aligned wires properly in ShaderGraph. Resolves Facepunch/sbox-issues#7474
GraphCompiler will now detect circular references and present an error instead of hard crashing. Resolves Facepunch/sbox-issues#7470
https://files.facepunch.com/CarsonKompon/2025/January/31_10-42-HurtfulPig.mp4
Clicking and Dragging a PlugIn will allow you to easily re-plug it instead of trying dragging out another input when it can only have one. Works in ShaderGraph + ActionGraph. Resolves #1525
https://files.facepunch.com/CarsonKompon/2025/January/31_11-34-EachSnowyowl.mp4
Remove unused function in Connection
Use ReflectionQueryCache in Component Serialization
Asset Browser no longer deletes a folder when renaming it to the same thing. Also allows you to rename the folder to the same name with different capitalization. Resolves Facepunch/sbox-issues#7464
Prevent Reroute Nodes from creating circular reference errors where none existed
ShaderGraph Reroute Nodes now preserve the input type correctly. Resolves Facepunch/sbox-issues#7466
Optimize ComponentList.GetAll by getting rid of LINQ
The combination of recursion and LINQ allocated a lot of garbage in GetAll, this would result in a heap reallocation during many GetAll calls.
Removing LINQ yielded a nice performance improvement.
Getting rid of the recursion gives another tiny performance improvement, but not big enough to justify the reduction in code readability.
I can not show results directly for ComponentList.GetAll, because the function executes too fast after the optimization and is no longer captured by the sample profiler.
But here are the improvements for PhysiscsWorld.OnIntersection, which makes heavy use of ComponentList.GetAll internally via InvokeListeners<T>().
Before:
Function Name: Sandbox.PhysicsWorld.OnIntersection
Number of Functions: 2907
Total time: 9s 406ms 99µs
Maximum: 11ms 86µs
Top Quartile: 3ms 848µs
Average: 3ms 235µs
Median: 3ms 176µs
Bottom Quartile: 2ms 684µs
Minimum: 20µs
After:
Function Name: Sandbox.PhysicsWorld.OnIntersection
Number of Functions: 2779
Total time: 3s 661ms 358µs
Maximum: 6ms 971µs
Top Quartile: 1ms 552µs
Average: 1ms 317µs
Median: 1ms 220µs
Bottom Quartile: 975µs
Minimum: 19µs
Related to sbox-deathmatch/issues/104
Catch type library returning null, event if it really shouldn't return null in the first place.
Related: sbox-issues/issues/7496
Skip hotload for DtNode, hopefully fixes issue when hotreloading while navmesh query is in progress.
Add viewport option to toggle default prefab lighting
https://files.facepunch.com/lolleko/2025/February/02_20-07-ConsciousCormorant.mp4
sbox-issues/issues/5527
MapInstance also reloads the map on Hammer compile when it prev. failed to load
Menu: Add slider and input limits to Field of View option, resolves Facepunch/sbox-issues#7501
Fixed ui_dropshadow shader appearing transparent at 1px blur and drop shadow not rendering at 0px blur. Resolves Facepunch/sbox-issues#7438
Fix breaking from prefab not refreshing editor selection
Fixes sbox-issues/issues/7502
Add vertex merge operation https://files.facepunch.com/layla/1b0311b1/sbox-dev_9rg7HaFZHm.mp4
Add shortcut for vertex merge
Fix drop-shadow css filter appearing cutoff at 0px blur
Forgot to save last change before commit 🤦
Allow mesh trace to request face cull, none, front, back
Trace front and back of scene meshes when selecting https://files.facepunch.com/layla/1b0311b1/sbox-dev_eewaDMTxLk.mp4
Add editor preference for backface selection, default to true because it's likely to be more desirable
Only draw vertices in vertex tool
Fix vertex merging from multiple meshes, all other meshes get merged into the first
Support multi open edge extrude using edge extend until edge bevel is added (bevel is needed for closed edge extrude) https://files.facepunch.com/layla/1b0311b1/sbox-dev_v10zWWneqA.mp4
Enable no cull on face hover material to see selected backfaces https://files.facepunch.com/layla/1b0311b1/sbox-dev_xA8GKNxwIK.png
Dispatch edit event when changing SkinnedModelRenderer.Sequence
Fix incorrect bounds on Gizmo.Draw.Sprite
Added Object property to WrappedMethod<T> (Fixes Facepunch/sbox-issues#7497)
Fixed Show Interpolation Debug not being able to be toggled in the UI. If a ConVar value is a boolean, use its integer form. Fixes Facepunch/sbox-issues#7503
ActionGraph: add warning frame for graphs that can't be saved
Fix case where empty editor scene is opened
Fixes Facepunch/sbox-issues#7026
Added Show Hitbox Debug option in Debugging Menu in the editor. debug_hitbox ConVar. Can debug hitboxes in the editor or in-game similar to Show Interpolation Debug. Fixes Facepunch/sbox-issues#7505
Update mouse capture position if we get new absolute pos while locked (eg when unfocused, tabbed)
Keeps cursor position predictable/reliable, stops occasional out of date position being restored and yeeting my mouse across the screen
Only SetCursorPosition while engine window's got mouse focus, prevents unwanted movement in editor
Add bitmap loader for IES files, treat them as images
Do InputRouter::OnWindowActive based on engine window (not app) focus, fixes click-to-focus going thru as an input and shooting or whatever
IES should be using RgbaF16 to avoid banding
Default WindowedLocalInstances preference to true
Remove logic to migrate from old project cookie, editor layout locations
Fix default layout raising cloud browser, do asset browser instead
Invert Ladder climbing controls when looking down (just like half-life)
Fixed previous Show Hitbox Debug displaying BBox hitboxes in the wrong place
Standalone: projects that only have the VR control mode enabled should automatically launch in VR, otherwise default to using the `-vr` launch param
Moved DirectoryMetadata from Project Cookies to Project Config folder. Metadata is only saved when changes are made instead of saving a bunch of default values that are identical.
If folder metadata isn't found, check ProjectCookie for legacy data
Make ResourceLibrary work for all Resources - meaning we can network resource references
Revert sbox/commit/11b227aac0ff5e756beae0ced2410445b1270c70, it's causing hammer objects to duplicate for remote clients over the network
Gpu decals point towards forward and not left 🤦
Fix Gpu Decals normals not transforming to world space
New decal component - https://sbox.game/dev/doc/reference/components/decals/
Add missing shader include
Build shaders
Decal: Update transform when dirty too Fixes Facepunch/sbox-issues#7518
Add thumb to published workshop clothing
Fixed issue with calling RPCs from within RPCs when using HostOnly / permissions and Caller not being set correctly. Fixes Facepunch/sbox-issues#7452
Make use of the return type of Scene.Load and return false if SceneLoadOptions has no valid scene set
Calling Network.AssignOwnership with a null connection will pass empty guid instead of throwing NRE
Standalone: Separate operations up into build steps & sort
Standalone: ignore dxcompiler
Shader Graph Functions (Sub-Graphs) (#1806)
- Adds a new Asset type with `.shdrfunc` extension.
- Shader Functions do not have the "Material" node as their final output node. Instead they have a "Result" node which has a variable amount of inputs defined by the user
- You can change the preview type of a Function Output so the value can be previewed while working on it
- Dragging a `.shdrfunc` file into a Shader Graph (or a subgraph) will create the subgraph node
- When "Add To Node Library" is set to `true` on a Shader Function it will be added to the Right Click -> Create menu
- Double Clicking on a Shader Function Node will open the Shader Function
- GraphCompiler now keeps track of the current Subgraph stack when compiling the preview and the output code, fully supports subgraphs within subgraphs.
- Constant nodes now have a "Preview" input when you're in a Shader Function
- Can Right Click -> Create Custom Node with a bunch of nodes already selected to instantly create a Shader Function. Will automatically create all the input parameters and result outputs.
- Texture Parameters/Attributes are fed the whole way up from each nested subgraph since you cannot define a default texture in the `.shader` file.
- Subgraph Nodes are now colour-coded Green and Result nodes are now colour-coded Blue
https://files.facepunch.com/CarsonKompon/2025/January/28_18-05-OddAsiantrumpetfish.mp4
Require DropOwnership() to clear owner instead, document exception
Remove Parameter.GetDefaultValue() and grab the current value as the default value
Fix Default Color Editor in Subgraph Node Properties
Subgraph Node ColorEditors are now bound to the defaults properly
Add [SkipHotload] to RcSortedQueue comparator
Simple AssetPicker displays Cloud Assets in a separate tab by default (with the option to combine them like it used to be). Show Cloud Assets is set to true by default so you can set Cloud Assets for anything called from native (like material/modeldoc)
https://files.facepunch.com/CarsonKompon/2025/February/05_16-10-CoarseTasmaniandevil.mp4
We aren't using m_pTransformBufferPrevData and probably won't need to with compute transforms, also remove m_hTransformTexture which has been deprecated for years
Allow texture asset type to be dragged into texture image control
Default texture generator to empty image file for null texture properties instead of showing vtex resource control
Add "list_sound_handles" console command
To help investigate Facepunch/sbox-issues#7450
Warn if the mixing thread is choking
https://files.facepunch.com/ziks/2025-02-06/sbox-dev_0l4IVOqJgB.mp4
Facepunch/sbox-issues#7450
Example networking test for asserting certain message types
Some safety around ResourceLibrary.Unregister
Resources get unregistered in their finalizer, so this race condition could have happened:
1. Resources are loaded
2. Resource library gets cleared
3. Resources are loaded again
4. Old resources get GC'd, remove new resources from ResourceIndex
Fix warning when using AssetSystem.CreateResource
Remove TypeKey from EditorShortcuts and use Type instead of string as key.
EditorShortcuts will now resolve shortcuts in parent classes. Resolves Facepunch/sbox-issues#7531
Remove some logs
Standalone: we might need this DLL actually 🙈
Dispose SoundStream in VoiceComponent when finished. Facepunch/sbox-issues#7450
First person: move FireModeSelectAnim weightlists into prefabs
Decals gradient uv scales off the proper axis (stops mipmapping way too soon)
Delete unused (or should be unused) shaders
* ui
* ui_texture_on_model
* visualize_cloth
* visualize_nav
* visualize_physics
* blur
* unlit (ui shader)
Deleted unused non-compute gaussian blur shader
Delete pre SM4/DX10 compatability code
Don't try to disable these shader warnings
Revert commit a6f4d1d0dcdda5da45be89b9ece67c21f18e9901 for now since that wasn't the correct solution
Another potential VoiceComponent fix for Facepunch/sbox-issues#7450
Unused materials using those unused shaders
ActionGraph: don't try to set { init; } properties
Fixes Facepunch/sbox-issues#7533
ActionGraph: fixed not being able to save expression delegates
Capture SceneEditorSession in SceneUndoSnapshot
Avoid relying on static SceneEditorSession.Active having the correct value
Add missing Scene.Push() in GameObjectInspector
Fixes Facepunch/sbox-issues#7517
Spline Class (#1817)
General purpose spline class for 3D.
Uses a composite 3D cubic Bezier curve under the hood.
Shape and behavior of the spline are controlled through points and handles.
Two consecutive points and their handles define one segment/curve of the spline.
The spline can be turned into a loop (Beziergon), which combined with linear handles can also be used to create a polygon.
Splines are useful for animations, camera movements, marking areas, or procedural geometry generation.
Some minor spline tweaks I forgot to backport from scenestaging
Disable mixer thread choking warning for now
TODO: find out how long each voice takes to mix, and let you print that on demand
Base shaders: stop using macros for texture creation + sampling, use standard HLSL syntax
Core shaders: stop using macros for texture creation + sampling
Build shaders
yuv_resolve.shader should use explicit register positions (it's sampler was never being properly bound!!)
Standalone: better widgets for branding - can't figure out how to lay these out nicely right now though
https://files.facepunch.com/alexguthrie/1b0711b1/sbox-dev_WR7bhtL8E4.png
Standalone: make it clearer when we've finished an export
Fix edge case for nav agent ground trace
Properly simulate deceleration for nav agents
New logic also tries to decelerate them as fast as possible
Don't try to apply PositionOffset during PS phase in GraphCompiler
Dragging an image into a ShaderGraph will automatically create a Texture2D node. Resolves Facepunch/sbox-issues#7547
SubgraphNode now instantly hotloads inputs/outputs on recompile of the references subgraph. Resolves Facepunch/sbox-issues#7526
Fade out Node Graph grid when zoomed out far enough. Resolves Facepunch/sbox-issues#7486
Automatically break prefab instances if part of the instance is reparented to another game object.
A warning is emitted when this happens.
Citizen/humans: couple of minor fixes (sprint input framerates, noclip start delta fix on humans)
Add bevel operation, limited to single segment until UI is made for bevel editing properties https://files.facepunch.com/layla/1b0811b1/sbox-dev_BPEXB8kFgB.mp4
Align to grid new faces from bevel operation
Always refresh PrefabCacheScenes PostLoad even if the prefab didn't change. Ensures types of older assemblies are refreshed.
Should fix issue where TypeLibrary.GetType() would return null when reconnecting to a server.
The root of the issue was that typelibrary got refreshed on reconnect while the prefabcachescenes were not.
Fix scene hierarchy right click (context menu) delay
Support closed edge extrude by using edge bevel https://files.facepunch.com/layla/1b0811b1/sbox-dev_7P5yqZDDwU.mp4
Restore accidentally deleted CreateTexture2D macros.. for now
restore ui shader which was blitting text
Delete some more shit resourcemanifests
Fix bloom blur using wrong sampler causing bleeding over edges
Network options on a GameObject where the GameObject is a prefab instance will only be serialized if the values differ from the prefabs. When loading a prefab instance as a GameObject from a Hammer scene, find the correct network mode. This fixes an issue where if a prefab is added via Hammer, but later the prefab's network mode or something changes, the new default wouldn't be used when loading the map. It'll still use the one the map was serialized with.
Unused SceneView methods
Remove ISceneView::AddSceneObjectToRenderList
ISceneView::GetWorldToRender & related return ISceneWorld not CSceneWorld
Add CommandList.Set( StringToken, Texture )
Dispose of AssetPreviews after we've rendered their thumbnail. PreviewScene.Dispose destroys it's Scene
Don't return a new list each light gather, reuse the already allocated memory
Improve delta snapshot system by dynamically increasing and reducing stored sent snapshot cluster size to ensure we give ample time for an ack - these could get lost of we send a lot of clusters per second. Another improvement is to predict last receive snapshot data and assume they will go through, optimizing by not sending the same value 50 times a second - if not ACK'd in time, we'll clear the prediction and send again. I'm seeing good results on TTT where the host goes from sending 1mb/s to ~18-30kb/s with one connected client in some cases.
Add SteamEnums.RecvMaxMessageSize and SteamEnums.RecvBufferMessages. Set these values in bootstrap to higher values.
Add [JsonIgnore] to anything that would cause recursion during serialization in EditorTool
Fix DOF erroring on non-msaa
vfx_vulkan: SV_ViewID is a built in semantic
Update CSceneSystem::SubmitDisplayListsForView removing multi-submit VR junk
vulkan: unfuck image views for cube textures
Shaders compile for shader model 6.1
ShaderGraph result node only shows the inputs that are actually used for the current Shading Model/Domain
https://files.facepunch.com/CarsonKompon/2025/February/10_11-10-LightskyblueRabbit.mp4
Don't serialize NodeInput.Subgraph since the field is only needed during the compilation process.
Fix connections to Result node not always serializing in ShaderGraph
Use correct PropertyInfo when generating Result inputs
Use DisplayName for DisplayInfo in Result node
Make SpringDamp / SmoothDamp frame rate independent
Fixes #1819
Revert "Make SpringDamp / SmoothDamp frame rate independent"
Breaks some games, looking into it now.
This reverts commit 825f6120d224d04fce8298534c83d14b2a32bdc5.
Update trace solver to latest
Fix bug in mesh cast shape causing incorrect capsule vs mesh casting https://files.facepunch.com/layla/1b1211b1/sbox-dev_a7oytZSV2E.mp4
Fix unreliable rigidbody transforming with position editor tool
Lower snapshot cluster size and use smaller types for their ids
Move gameobject creation for empty/new prefabs into the correct scene scope
Should avoid the GO being created in the wrong scene.
Related: sbox-issues/issues/7602
Mac/Linux build scripts
Mac: Add Makefile for VPC so we can actually build it without actually having vpc
Rename some IOSALL flags to just PLATFORM_APPLE, we always imply arm64
SDL_config doesnt always imply windows
Update gitignore
Mac: Managed Build Scripts, no need for nvpatch for non-windows targets
Use Unix trailing paths for codegen
Revert "Use Unix trailing paths for codegen"
This reverts commit eb86cb41a20dc2d3b57a0b5a67b2be5563d4d513.
Fix Model.GetVertices not getting vertices from all vertex buffers of a render mesh
Readd IndirectLightScale property to lighting entities for enhanced control over light bounce brightness, values beyond 1.0f are not energy conserving
https://files.facepunch.com/sampavlovic/1b1311b1/sbox-dev_6TJvtGnbXi.png
Teddy Bear Costume
Lods and Skinned, Both Citizen and Human versions.
Initial push .clothing files
Teddy Bear trousers adjustments
Adding missing tail
Teddy Bear costume folder adjustments and .clothing file setup
Make SpringDamp / SmoothDamp frame rate independent
Fixes #1819
Add spring damper tests, attach a plot .svg if a test fails
https://files.facepunch.com/ziks/2025-02-13/spring_2Hz_0.5.svg
Fix dragging rigid body speed regression
https://files.facepunch.com/ziks/2025-02-13/sbox-dev_Nb6mf1LlfE.mp4
Use fixed smooth time here too
Fix warning in SpringDamperTest
Split cmd and args input by space, don't prematurely de-quote args, resolves Facepunch/sbox-issues#7611
LOD and texture fixes to Teddy Bear
Restore Vector3.SmoothDamp to previous function
This comment doesn't apply any more
Remove built in Vox resource, some games want to use vox files as is without compiling them, it should be up to games if they want to make these a resource
Update Sweeper sample project
Fix stupid mistake causing odd number segmented bevel to not work
Add temp bevel properties until a bevel tool is made for it
Only show vertex merge distance in fixed range mode
Tests reproducing #1826
#nullable enable in DefaultUpgrader
More robust type hierarchy matching in default upgrader
Fixes #1826
https://files.facepunch.com/ziks/2025-02-14/explorer_7llmQXMW5F.mp4
Don't allow parenting to prefab instances via scenetree
Play error sound when drop operation fails.
Fixes sbox-issues/issues/7628
.Clothing adjustments
Fix trigger events getting fired from non triggers and support collider trigger actions on triggers attached to rigidbody https://files.facepunch.com/layla/1b1411b1/sbox-dev_Kvu2LJyZis.mp4
MorphControlWidget: dispatch edited events, randomize L and R
Add "No Source" asset tag for compiled assets without source files, resolves Facepunch/sbox-issues#7606
Set Project.Current as soon as it's active
Add "Published" asset tag for assets that've been enabled for publishing, Facepunch/sbox-issues#7604
Asset Browser: Tag filter chips will show highlighted when active, and let you disable them
https://files.facepunch.com/solw/2025/February/14_18-14-CheapOstrich.png
Asset Browser: Get tag filters via the search widget working until we replace this with something better
Handle quoted args properly when setting convar values, resolves Facepunch/sbox-issues#7633
Color texture generator only creates hdr texture if the color is hdr
Add flip all faces operation (called flip normals in hammer) https://files.facepunch.com/layla/1b1411b1/sbox-dev_HtJS8ZTxOf.mp4
Fix topology getting fucked when flipping faces
Add CurrentSequence.PlaybackRate https://files.facepunch.com/layla/1b1411b1/sbox-dev_clmlfFgD6r.mp4
Feathering from legacy maps should point outwards rather than innards, still approximate with current behavior of world units
Fix iterating modified collection when updating prefab instances
Fix iterating modified collection when cloning components & gameobjects
Scene editor, select outermost prefab instance when clicking on a nested prefab instance
Remove old undo system (#1824)
Removes all the private members/method related to the old undo system.
Strips functionality from all public methods, but holds on to the public method stubs, so we don't completely break older editor tools. Older tools will still compile but their undo/redo won't do anything anymore.
Fix being able to select prefabinstance child objects when using box selection in scene editor
Fix regression when cloning List of user defined classes that contain a member called "Prefab"
Fixes sbox-issues/issues/7638
Fix undo for TagSet ControlWidget
Add SkinnedModelRenderer.PlaybackRate to control playback speed of both animgraph and current sequence https://files.facepunch.com/layla/1b1511b1/sbox-dev_l0nWSJgZG3.mp4
Add summary
Stop flagging scenes as unsaved when selecting game objects.
Improve logic when determining which changes flag a scene as changed/unsaved
Catch serialization errors when pasting game objects
Fixes sbox-issues/issues/7645
Bevel tool https://files.facepunch.com/layla/1b1611b1/sbox-dev_raW2VtEfbO.mp4
Hide transform widget for prefab root in the prefab editor for now.
Related to sbox-issues/issues/7316 sbox-issues/issues/7577 sbox-issues/issues/6785
Hide transform gizmos for prefab root in the prefab editor for now.
FPArms: add Reduce_WeaponRoot_50 weightlist
Compute texture params from coordinates on new bevel faces to keep uvs intact
Get rid of harmless assert if animation helper gets called on first frame with zero delta time
Don't update animgraph instance with negative delta time, all it does is fuck up the elapsed time
Add weld uvs operation for vertex and edge https://files.facepunch.com/layla/1b1711b1/sbox-dev_BcyFOAUTch.mp4
Box and Sphere colliders default size match default primitive model sizes
Group mesh elements up front instead of doing it every operation
Add bool Editor.WheelEvent.Accepted
Standardise "Find in Asset Browser" and "Open File Location" option logic, create a browser if needed, raise tab into view
Rename "Open File Location" to "Go to Location" so I stop confusing it with the one that opens it in explorer
Don't call Component.OnPreRender on dedicated servers
I'm gonna keep an eye on this - but you shouldn't be using this to do non-rendering logic
Caught some missed cases of circular references hanging the editor in subgraphs. Resolves Facepunch/sbox-issues#7582
Update subgraph serialization to fit the new path usage
Can now use multiple of the same subgraph with different values without it attempting to cache values from the other node of the same type. Also tracks nested nodes with their own cache so it's still optimized.
LibraryDetail version now updates the ComboBox upon downloading a new version of the Library. Resolves Facepunch/sbox-issues#7669
Only download new/changed files when updating a Library, delete any that no longer exist, and download files in parallel.
Use `FileWatch.SuppressWatchers` to prevent error spam while downloading library files.
Remove duplicate nvpatch postbuild event
Avoid using parallax for diffuse IBLs, it's causing issues with non-uniform scaled envmaps for minimal actual gains
https://files.facepunch.com/sampavlovic/1b1711b1/SMr1GfypB3.png
Add remove bad faces operation
Add quad slice operation https://files.facepunch.com/layla/1b1811b1/sbox-dev_cT3NTDDdcH.mp4
Fix mesh resize undo
Allow quad slice to set number of cuts
Don't do terrain hit testing when gizmo selection is disabled
Deselect mesh elements when clicking on nothing
Shut down properly before reconnecting - ensure we've destroyed the scene etc
GraphCompiler no longer throws error when multiple NodeErrors occur on the same node in Shadergraph
Replace GraphCompiler.NodeStack with GraphCompiler.InputStack to prevent Circular Reference detection when a node is being re-referenced through a different input.
Show progress (#/#) when downloading files in loading screen
Added `ClothingContainer.PrefersHuman`. Switching to the human character on the Main Menu will toggle this option and save to your avatar.
Fix the CloudBrowser infinite scrolling only working in List View.
Fixed properties with AssetPathAttributes not opening the correct AssetPicker and not always loading the Cloud Browser tab. Resolves Facepunch/sbox-issues#7666
Add albedo absorption parameter to glass
https://files.facepunch.com/sampavlovic/1b1811b1/GpgOqFCTvs.png
Added negative (-) operator for Vector3Int. Resolves Facepunch/sbox-issues#7637
Added Vector3Int * Rotation operator. Resolves Facepunch/sbox-issues#7636
Added Search Bar to Editor Keybinds, moved Reset to Default outside of the scrollbox, and gave bind FixedWidth to prevent alignment issues. Resolves Facepunch/sbox-issues#7643
Editor Keybinds now have alternating background colors and improved margins
https://files.facepunch.com/CarsonKompon/2025/February/18_17-10-ProbableHarrierhawk.mp4
CameraComponent.RenderToTexture needs to initialize rendering before rendering to texture - Fixes not being able to render to texture while in editor
Build layout for texture on value change for TextureControlWidget, fixes control widget not being updated when texture property is set through code
Fix stationary lights being treated as dynamic lights (#7667)
Fix flickering shit on foliage by using conservative alphatest
https://files.facepunch.com/sampavlovic/1b1811b1/JjzPJ3w0dN.png
Revert build layout on value change, not the right way to do it
Fix drop shadow tint not being consistent with CSS Box
https://files.facepunch.com/sampavlovic/1b1811b1/0Mw5OMuyj4.png
PolygonMesh serializes position and rotation so it can skip computing texture params from uvs on load
Connection.GetUserData will now work for any client - not just the host. ConVars marked with ConVarFlags.UserInfo will update for all clients when changed. Updated ConnectionInfo string table to store values individually so when one changes it doesn't send the whole lot again.
We can now include ping in the string table so that Connection.Ping should be correct even if you aren't the host
Standalone: differentiate between failing to copy (e.g. no disk space) and not finding a file
Standalone: locate code resources in non-core locations (e.g. addons/base), fixes a couple of missing files
Standalone: tweak wizard layout to move all executable stuff together
Standalone: clean up exporter code, move into its own folder
Standalone: fix base assets path
Standalone: remove IsDevelopmentBuild and Version, move VersionDate to BuildDate & make it implicit
Add NodeResultType and new constructor for NodeResult that takes NodeResultType. Resolves Facepunch/sbox-issues#7684
VR: Fix toggling VR inside the editor after launch
Track object messages and RPC stats and display the top 10 in the top left when net_debug is enabled
Added CursorShape.Finger to DropdownControlWidget. Resolves Facepunch/sbox-issues#7681
Add CursorShape.Finger and hover effects to ControlSheetGroup
Add Right Click -> Jump to Code for ToggleGroups. Resolves Facepunch/sbox-issues#7630
Added CodeEditor.CanOpenFile. Don't show "Jump to Code" on internal Components/Assets/Properties. Resolves Facepunch/sbox-issues#7579
Log a warning instead of throwing an exception when trying to send an RPC without being connected to a network session - it's harmless anyway and could happen with async tasks even after disconnecting
Potential optimization in CreatePrefabObjectLookup
This helps a bit when cloning larger prefabs, not sure how much it will reflect in our benchmarks, on my machine the gains were quite small.
Include VertexPaintTintColor in trace vertex, fixes them not being included in baked props https://files.facepunch.com/layla/1b1911b1/sbox-dev_cpecr6gQeF.png
Allow ScenePanel to render an actual scene https://files.facepunch.com/layla/1b2011b1/sbox-dev_S7gKWkGBre.mp4
Tweak LobbyCard to show additional member count instead of stacked lobby owner avatar, since we can't grab member list for a lobby without joining it currently
GameLobbyGroup: order most full lobbies first
Update first_person_arms_adjustments.vsubgrph
GenerateMipMaps shouldn't generate mips smaller than 1x1 (which might happen on textures with weird dimensions, e.g. 3x3)
UI: support border-radius shorthand transitions
Subgraph outputs can be re-ordered based on the order of the list as well as a "Priority" property to override. Part of Facepunch/sbox-issues#7687
Priority value on IParameterNodes influence the order that inputs are created on Subgraph Nodes. Resolves Facepunch/sbox-issues#7687
Fix mesh component not rebuilding after undo
Improved Asset Browser search, now space delineated and has subtractive filter. Resolves Facepunch/sbox-issues#7696
https://files.facepunch.com/CarsonKompon/2025/February/20_17-02-LinenTermite.mp4
Removed unreachable code, should pass tests now
Fix toolsvis fucking alpha of existing translucent materials
Fix light probe volumes being sampled in wrong color space, mainly made it's light index be wrong
Resolve CloudAssetProvider paths when compiling archive on client
Make baked light complexity only count indexed lights
Update shaders
Update services
Fixed achievement popup not playing
Listen for account changes and update, should fix having to restart to detect new orgs, or being deleted from org
Server/Lobby Data, Hostname / ServerName Changes, etc (#1827)
Exposes:
* Networking.ServerName
* Networking.MapName
* Networking.SetData
* Networking.GetData
Remove unsused bind
Fix NRE when doing menu_reload
New map and game sort orders
Don't rebuild mesh component if it's not active
Compute uvs from params after scaling mesh
Do more expensive undo for scale tool to capture potential component changes on scale
Fix OnMapUpdated action not always being set, causing map to not hotload
Fix m_bCaptureWithRenderDoc never being initialized and causing it to be captured infinitely (#1830)
Don't close replace component menu on key press, fixes enter key not confirming selection
Don't delete saved child game objects of map instance on map unload while in editor
Pass number of dynamic lights in tile rather than all light counts, fixes Light::From() giving wrong results ( #7712 )
Dispatch edited events in Align Object(s) to View / Move To Grid
Scroll scene hierarchy to GameObject when selecting it in scene
Don't clone objects with NotSaved flag
Fixes sbox-issues/issues/7710
Merge branch 'master' into navigation-links-cs