Update 26.04.08
[p]A new update has been released, you can view the full changes on our blog post.[/p][p]https://sbox.game/news/update-26-04-08[/p][p][/p][p]Here's some highlights from the blog.[/p][h3][/h3][h3]New Games Menu[/h3][p]
[/p][h3]Sandbox: Open Source[/h3][p]
[/p][p]The Sandbox game itself is now open-source, people can contribute or take the code for their own games.[/p][p][/p][h3]Sandbox: Emitters[/h3][h3]
[/h3][p][/p][h3]Sandbox: Achievements[/h3][p]
[/p][p][/p][h3]Changelog[/h3][p]๐ Added[/p]
- [p]Doo, a simpler visual scripting system for wiring up component events โ designed as a friendlier alternative to ActionGraph for common use cases[/p]
- [p]Mesh cable tool in the mesh editor for creating cables, working similarly to Hammer[/p]
- [p]New games dashboard with a rotating carousel and redesigned game cards[/p]
- [p]`lang.showkeys` cvar and editor toggle to display localisation keys instead of translated text for debugging[/p]
- [p]CSS `overflow: clip` and `overflow: clip-whole` properties for UI element clipping[/p]
- [p]CSS `background-playback-state` property to pause video backgrounds[/p]
- [p]`\[ShowIf]` and `\[HideIf]` attributes now support null checks[/p]
- [p]Center option added to the pivot list in mapping tools[/p]
- [p]`IFormattable` whitelisted for use in the sandbox. Thank you @RumBugen![/p]
- [p]Texture editor moved into the inspector - Thank you @boxrocket6803![/p]
- [p]Cascaded shadow map exclusion culling โ shadows no longer render beyond each cascade boundary and objects from previous cascades are no longer re-rendered, significantly improving shadow performance[/p]
- [p]Networking thread now processes messages at the same tick rate as the main thread[/p]
- [p]Particle sprite GPU upload performance โ buffer uploads moved into valid Graphics.Scope to avoid unnecessary render context creation[/p]
- [p]Network packet byte arrays are now pooled in DecodeStream, reducing GC pressure for large compressed payloads[/p]
- [p]Fixed a Steam buffer GCHandle leak where N-1 handles would leak per broadcast packet; replaced with a cheaper memcpy approach[/p]
- [p]`Package.MountAsync` now supports mounting specific package revisions, allowing games to pin map versions[/p]
- [p]`LoadingScreen.IsVisible` is no longer overridden every frame, allowing games to manually control loading screen visibility[/p]
- [p]`Game.ChangeScene` now shows a loading screen for all clients instead of just the host[/p]
- [p]Engine overlays remain visible during loading states[/p]
- [p]ScreenPanel `Scale` property now works when Auto Scale is enabled, and `Opacity` now correctly affects ScreenPanels[/p]
- [p]Undo support for WrapTextureToSelection and WrapTexture operations in the mapping tools[/p]
- [p]Pause modal now uses the lighter HtmlPanel instead of a full WebPanel[/p]
- [p]Launcher window geometry is saved when auto-closing[/p]
- [p]PATH changes are now a no-op on non-Windows platforms. Thank you @MrSoup678![/p]
- [p]Disabling shadows on a directional light now works correctly[/p]
- [p]Shader compiler shutdown crashes resolved by properly draining the material system and preventing Steam callbacks after managed shutdown[/p]
- [p]Exceeding the maximum light count no longer triggers assertions or causes directional light flickering[/p]
- [p]`GetPixels` arguments are now validated to prevent negative values, fixing a security vulnerability[/p]
- [p]Referencing a deleted prefab no longer crashes โ the editor shows a warning and preserves instance data for recovery[/p]
- [p]Creating a prefab from a GameObject now correctly restores the object's position[/p]
- [p]Reverting changes on a nested prefab instance no longer wipes all outermost overrides[/p]
- [p]Applying changes to a nested prefab no longer regenerates all GUIDs[/p]
- [p]Fixed cyclical library references caused by built-in projects referencing libraries[/p]
- [p]Fixed a null `AssetTypeAttribute.Name` NRE that silently shut down the GameInstance on editor startup[/p]
- [p]Game loading is now properly cancelled on disconnect, preventing background loads from continuing[/p]
- [p]Fixed filesystem unmount exceptions when a load is cancelled[/p]
- [p]Prop gibs now properly inherit velocity when spawned in a batch group[/p]
- [p]`IgnoreSingleObject` trace now correctly checks both rigidbody and collider GameObjects[/p]
- [p]Glass shader tint now blends correctly through multiple layers using premultiplied alpha blending. Thank you @Infiland![/p]
- [p]`backdrop-filter: blur` no longer generates excessive mipmap levels Thank you @Infiland![/p]
- [p]Toast notifications (e.g. achievements) no longer persist indefinitely[/p]
- [p]Post-game info popup is no longer dismissed on click, so its actions can be used. Thank you @RumBugen![/p]
- [p]Fixed human models having deformed hands with the "holditem" holdtype[/p]
- [p]Fixed TextRenderer alignment not updating on re-enable[/p]
- [p]Fixed possible NRE in `Button.Text` setter[/p]
- [p]Fixed possible NRE in `UpdateMusic`[/p]