The July Update is now live, we have a progress update on the Sandbox Game, huge optimisations, another new physics engine, new features and a mountain of fixes.
Check out the July Update dev blog to read everything!
Changelist
🎁 Added
Box3D Physics
Editor: Added new startup errors dialog for resolving code errors
Editor: Component Selector now supports nested sub-categories separated by "/"
Editor: Added Flat View option to Component Selector
Editor: Missing Undo Steps to ControlSheet and certain ControlWidgets
Curve Editor: Added "Move Range When Panning" button, which moves the entire curve when panning or zooming
Curve Editor: Added "Retain Values When Changing Min/Max" button, which doesn't resize the curve's values when resizing ranges
Curve Editor: Added "Fit to Screen" button, which fits the viewport to the curve's current range
Curve Editor: Added \[TimeRange] and \[ValueRange] attributes to specify default range min/max and whether or not it's clamped
ShaderGraph: Added Scene Color node (with UV address modes)
ShaderGraph: Is Front Face node
ShaderGraph: Normal Blend node
ShaderGraph: Reflection node
ShaderGraph: Tangent View Vector node
ShaderGraph: Added GraphCompiler.RegisterGlobal
Shaders: Automatically append mode combo to mode if no arguments are set
Decals: Gizmos for the size
Decals: Added decal resources
Decals: Added transient properties
Networking: Ability to specify port to use when hosting a dedicated server - defaulting to 27015
Enabled sc_visualize_batches publicly
ParticleEffect.LocalSpace - float, allows sliding between local and world space
ParticleEffect.InitialVelocity - velocity to start with
Particle.ConstantMovement - apply movement without velocity
Particles: ParticleModelRenderer.RotateWithGameObject
API: BaseControl.CreateFor - allows creating Panel based controls for specific property
API: ViewSetup
API: ReflectionSetup + RefractionSetup
API: Pixmap.UpdateFromPixels( Bitmap )
API: VideoWriter.AddFrame( Bitmap )
API: SoundHandle.Time setter
API: System.Random.FloatDeterministic( int seed )
API: Color.WithColorMultiplied( float )
API: \[InfoBox] - allows adding inline help to inspector properties
API: Scene.FindAllWithTag & Scene.FindAllWithTags
🧼 Improved
Hammer: Map builder produces maps with significantly less draw calls, hugely improving performance
Audio mixing crackling resolved by switching to a request based system
Curve Editor: Dragging a Curve Handle outside the bounds of the Curve will automatically update the range(s)
Curve Editor: Grid lines now have nice value increments and change with range instead of being static
Curve Editor: Can now Pan/Zoom around the Viewport with Mouse3/MWheel
Curve Editor: Clicking on a Curve Preset will reset the Viewport to fit the Curve
Curve Editor: Added X-Range Inputs so you can modify the TimeRange of the Curve
Curve Editor: Holding CTRL while dragging a Curve Handle will snap the Handle's position to the grid
Curve Editor: Now draws a light grey rectangle with a dashed line to denote the min/max ranges of the Curve
GameTransform.World is now cached instead of recalculating every access
ShaderGraph: Can no longer delete Result nodes (the final output nodes)
Editor: Simplified the Filter Menu in the Component Selector
Editor: Component selector improvements
Networking: Stop breaking prefabs during NetworkSpawn
API: Re-categorize PlayerController.RotateWithGround and remove PlayerController.GroundYaw
Bloom (quarter depth, fix rendering behind walls)
Display default property values in editor inspector tooltips
Clamp alpha on ParticleSpriteRenderer
RenderTarget.GetTemporary thread safety
CommandList state is scoped allowing recursive command lists
Nav Agent path invalidation behaviour
Highlights: More accurate depth testing on outlines
Highlights: Can target other renderers explicitly
Don't render ScreenPanel if it's excluded by a camera's RenderExclude tags
GameOverlay layer is split into opaque/transparent
Curves use Binary Search for better performance
Serialize Prefab Instances as diff when sending over network
Bail out of SoundHandle.Stop if already finished or fading out
Prefab instance context menu: edit shortcut, tidy
🪛 Fixed
Startup crash on GTX 900 series cards
Tooltips were recreating every frame
Hotload errors when encountering anonymous types
VideoPlayer: Unable to play VP8 (webm) videos
Native editor tools (Hammer, ModelDoc) stylings
Launcher showing added projects as launching when they weren't
Curve Editor: Fixed grid numbers disappearing when increasing the range
Curve Editor: Popup no longer opens between two monitors when opened near the edge of the screen
ShaderGraph: "Render Backfaces" setting getting reset on recompiles
ShaderGraph: shaders not rendering backfaces in Material Editor
Fix \[CallerLineNumber] not being properly whitelisted
RenderTarget.GetTemporary: Don't try to UAV bind or create mips for depth formats
Decals: Poor culling at edges for rotated decals
Decals: Normal maps not decoding or transforming to world space correctly
Decals: Not inheriting their GameObject tags
Decals: Fix Decals in Valve's Shading Model
Game Tick/Update running for one frame after ending the game
\[ColorUsage] HasAlpha issues
Tint, Tags, Shadow Flags, and Source not getting reset on MeshComponent when disabling "Hide In Game"
Standalone exports showing black screen
Editor: Enum selectors showing a horizontal scrollbar instead of wrapping
Editor: Cloud code assets failing to resolve on project initial launch
Editor: Disabled text theme color
VR: Duplicate floor in main menu
Undefined nav agent behaviour if nav link traversal is not implemented
Navmesh links worldstart/end position not taking rotation into accont
WebM video playback for UI and VideoPlayer
Fixed nested prefab issues related to undo/redi
Fixed GameObject Transform not transfering to Prefab when Converting a GameObject to a prefab
Fixed an issue when converting a GameObject (that is part of a prefab instance) to a prefab.
Fixed prefab changes not propagating correctly to all their dependencies and open editors
Fixed unlinking a nested prefab not correctly propagating to instances in open editor scenes
Fixed GameObject to prefab conversion for sub hierarchies that contain nested prefabs
Fixed reparenting parts of a prefab instance to another GameObject
Fixed cloning parts of a prefab instance
Fixed Gameobject ordering not updating when reverting instance to prefab state and applying instance state to prefabs
Fixed Component order not being restored in some cases after undo/redo
Fixed NavMeshLink.OnLinkExited not getting called if the link is completed on the frame the agent enters
Fix drag/drop material preview not resetting in some cases
Hotload: Fix NRE in DelegateUpgrader
Hotload: Don't let DefaultUpgrader process delegates
Fixed connection crash when trying to join via new instance to editor lobby with no game running
Fixes \[Property] properties from a Component's base class not being serialized when sent to other clients
Fix network owner being unset in OnAwake when doing NetworkSpawn
Fixed css gap property creating ugly uneven gaps
Fixed white viewport when opening the editor
Fixed terrain still being enabled on disabled GameObjects
Fixed ListViews holding onto stale items
Ensure ReflectionQueryCache.ClearTypeCache is called on hotload for game instance
Fix faulty logic for in-place static field hotload upgrading
Input Editor Fixes
Inspector history/locking fixes
Fix DressPrefabScene
DebugTextSceneObject uses Graphics.DrawText in worldspace
Fix HashSetEx Remove() being O(N)
Shaders: Depth-Aware Mask Fix - Fixes objects in front of glass looking aliased
Renderer: Multiple Vulkan Validation Fixes
🚯 Removed
Obsoleted CameraComponent.AddHookBeforeOverlay - Use CommandLists instead
Obsoleted CameraComponent.AddHookAfterTransparent - Use CommandLists instead
Spritecard shader - Was only used by legacy particles
Sandbox.Game.dll - Merged everything into Sandbox.Engine.dll
Panel.Bind
Projected Decals
Changed files in this update