1,460 Commits over 1,157 Days - 0.05cph!
Batch map gameobjects, start disabled
Remove 2nd hidden entity list
QOutliner: Defer selection until mouse release so it acts like our managed treeview, allowing dragging without switching the inspector away
Managed can set DragData of map nodes in Hammer outliner, MapGameObject sets its GameObject
DragData uses QObject.FindOrCreate so it persists when going native -> managed -> native for DragData.Object to work correctly
Remove mock GameObject/Prefab code from managed MapEntity
Add CMapGameObject map node with managed counter part that wraps a GameObject
Hammer world's Scene uses HammerSceneEditorSession
Add HammerManagedInspector that can take over if it likes the MapNode. We only like MapGameObject for now
Run Scene.EditorDraw() on MapView for gizmos, remove old Entity.DrawGizmos
Hammer: Create GameObject Test option
More explicit HammerEvents
Managed map node callback interface, a little convoluted because of mapdoclib <-> hammer <-> managed. But this is easier to do callbacks and can return values
And the managed side
Serialize/deserialize CMapGameObject
CMapGameObject::GeneratesEntityModelGeometry()
Expose CMapGameObject JSON to MapBuilder via IHammerMapLoader
Collect CMapGameObjects, compile them into scene.json inside the vpk and let MapInstance load them (Very hacky code needs cleaning up)
MapWorld.Scene sets a Scene.Source in an attempt to make AG happy
Tie Meshes to GameObject button
Add def for CMapNode.GetRootDocument()
ActionGraph source location refactor
Add MapSourceLocation, fix editing action graphs in .vmap files
Check for MapSourceLocation in ActionGraphView
Open source map when inspecting graph from .vmap
Parent action graph editor to hammer window if editing map graph
Push AG serialization options when saving map game object
Makes sure we replace any cached versions of graphs
Implement setting HammerSceneEditorSession.HasUnsavedChanges
Fix action graphs from maps not caching correctly
Only OpenContainingResource if not already open
Fix action graphs in unsaved hammer maps
Associate graphs with a HammerSceneEditorSession if open in hammer,
which is resilient to renaming etc
Normalize map path name
Can tie map meshes to GameObjects, these get built into models and any components on the GameObject with a Model property get populated by it
Trim world builder
Implement CMapGameObject::Copy
Sync native transforms to managed
Scene changes (new component, prop edits, etc.) mark Hammer map as having unsaved changes (otherwise it refuses to save)
Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene
Clean up Entity tool as you can no longer add/target games this way
Kill Hammer EntityIO buttons (unusable)
CMapGameObject overrides child selection
Hammer GizmoInstance.Input.IsHovered is controlled by native MapView IsActive()
Add jsoncpp so we can read/write json properly without fucking around with kv3
Replace manual scene serialization with jsoncpp, can map guids to map meshes better and it's cleaner
Clean up MapView tick and scene render list
Hammer sync managed gizmo selections with native selection set (authoritative)
Fix warning
CMapGameObject's that generate model geometry are ignored by physicsbuilder
ModelRenderer don't default to box if Model is null
remove nav markup volumes from fgd
TieToGameObject takes TieToEntity keybind (Ctrl+T), remove button for entity as there's no entities to tie them to anymore, if you really need it the command is still accessible through F1
bakky icon
CMapGameObject's that generate model geometry are ignored by physicsbuilder
Remove mock GameObject/Prefab code from managed MapEntity
Add CMapGameObject map node with managed counter part that wraps a GameObject
Hammer world's Scene uses HammerSceneEditorSession
Add HammerManagedInspector that can take over if it likes the MapNode. We only like MapGameObject for now
Run Scene.EditorDraw() on MapView for gizmos, remove old Entity.DrawGizmos
Hammer: Create GameObject Test option
More explicit HammerEvents
Managed map node callback interface, a little convoluted because of mapdoclib <-> hammer <-> managed. But this is easier to do callbacks and can return values
And the managed side
Serialize/deserialize CMapGameObject
CMapGameObject::GeneratesEntityModelGeometry()
Expose CMapGameObject JSON to MapBuilder via IHammerMapLoader
Collect CMapGameObjects, compile them into scene.json inside the vpk and let MapInstance load them (Very hacky code needs cleaning up)
MapWorld.Scene sets a Scene.Source in an attempt to make AG happy
Tie Meshes to GameObject button
Add def for CMapNode.GetRootDocument()
ActionGraph source location refactor
Add MapSourceLocation, fix editing action graphs in .vmap files
Check for MapSourceLocation in ActionGraphView
Open source map when inspecting graph from .vmap
Parent action graph editor to hammer window if editing map graph
Push AG serialization options when saving map game object
Makes sure we replace any cached versions of graphs
Implement setting HammerSceneEditorSession.HasUnsavedChanges
Fix action graphs from maps not caching correctly
Only OpenContainingResource if not already open
Fix action graphs in unsaved hammer maps
Associate graphs with a HammerSceneEditorSession if open in hammer,
which is resilient to renaming etc
Normalize map path name
Can tie map meshes to GameObjects, these get built into models and any components on the GameObject with a Model property get populated by it
Trim world builder
Implement CMapGameObject::Copy
Sync native transforms to managed
Scene changes (new component, prop edits, etc.) mark Hammer map as having unsaved changes (otherwise it refuses to save)
Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene
Clean up Entity tool as you can no longer add/target games this way
Kill Hammer EntityIO buttons (unusable)
CMapGameObject overrides child selection
Hammer GizmoInstance.Input.IsHovered is controlled by native MapView IsActive()
Add jsoncpp so we can read/write json properly without fucking around with kv3
Replace manual scene serialization with jsoncpp, can map guids to map meshes better and it's cleaner
Clean up MapView tick and scene render list
Hammer sync managed gizmo selections with native selection set (authoritative)
Fix warning
Hammer GizmoInstance.Input.IsHovered is controlled by native MapView IsActive()
Add jsoncpp so we can read/write json properly without fucking around with kv3
Replace manual scene serialization with jsoncpp, can map guids to map meshes better and it's cleaner
Clean up MapView tick and scene render list
Hammer sync managed gizmo selections with native selection set (authoritative)
Clean up Entity tool as you can no longer add/target games this way
Kill Hammer EntityIO buttons (unusable)
CMapGameObject overrides child selection
Remove mock GameObject/Prefab code from managed MapEntity
Add CMapGameObject map node with managed counter part that wraps a GameObject
Hammer world's Scene uses HammerSceneEditorSession
Add HammerManagedInspector that can take over if it likes the MapNode. We only like MapGameObject for now
Run Scene.EditorDraw() on MapView for gizmos, remove old Entity.DrawGizmos
Hammer: Create GameObject Test option
More explicit HammerEvents
Managed map node callback interface, a little convoluted because of mapdoclib <-> hammer <-> managed. But this is easier to do callbacks and can return values
And the managed side
Serialize/deserialize CMapGameObject
CMapGameObject::GeneratesEntityModelGeometry()
Expose CMapGameObject JSON to MapBuilder via IHammerMapLoader
Collect CMapGameObjects, compile them into scene.json inside the vpk and let MapInstance load them (Very hacky code needs cleaning up)
MapWorld.Scene sets a Scene.Source in an attempt to make AG happy
Tie Meshes to GameObject button
Add def for CMapNode.GetRootDocument()
ActionGraph source location refactor
Add MapSourceLocation, fix editing action graphs in .vmap files
Check for MapSourceLocation in ActionGraphView
Open source map when inspecting graph from .vmap
Parent action graph editor to hammer window if editing map graph
Push AG serialization options when saving map game object
Makes sure we replace any cached versions of graphs
Implement setting HammerSceneEditorSession.HasUnsavedChanges
Fix action graphs from maps not caching correctly
Only OpenContainingResource if not already open
Fix action graphs in unsaved hammer maps
Associate graphs with a HammerSceneEditorSession if open in hammer,
which is resilient to renaming etc
Normalize map path name
Can tie map meshes to GameObjects, these get built into models and any components on the GameObject with a Model property get populated by it
Trim world builder
Implement CMapGameObject::Copy
Sync native transforms to managed
Scene changes (new component, prop edits, etc.) mark Hammer map as having unsaved changes (otherwise it refuses to save)
Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene
Remove mock GameObject/Prefab code from managed MapEntity
Add CMapGameObject map node with managed counter part that wraps a GameObject
Hammer world's Scene uses HammerSceneEditorSession
Add HammerManagedInspector that can take over if it likes the MapNode. We only like MapGameObject for now
Run Scene.EditorDraw() on MapView for gizmos, remove old Entity.DrawGizmos
Hammer: Create GameObject Test option
More explicit HammerEvents
Managed map node callback interface, a little convoluted because of mapdoclib <-> hammer <-> managed. But this is easier to do callbacks and can return values
And the managed side
Serialize/deserialize CMapGameObject
CMapGameObject::GeneratesEntityModelGeometry()
Expose CMapGameObject JSON to MapBuilder via IHammerMapLoader
Collect CMapGameObjects, compile them into scene.json inside the vpk and let MapInstance load them (Very hacky code needs cleaning up)
MapWorld.Scene sets a Scene.Source in an attempt to make AG happy
Tie Meshes to GameObject button
Fix crash in CDMXLoader::LoadMesh when there's no position attribute.. unsure why, the offending models need to be looked at
And the managed side
Serialize/deserialize CMapGameObject
More explicit HammerEvents
Managed map node callback interface, a little convoluted because of mapdoclib <-> hammer <-> managed. But this is easier to do callbacks and can return values
Remove mock GameObject/Prefab code from managed MapEntity
Add CMapGameObject map node with managed counter part that wraps a GameObject
Hammer world's Scene uses HammerSceneEditorSession
Add HammerManagedInspector that can take over if it likes the MapNode. We only like MapGameObject for now
Run Scene.EditorDraw() on MapView for gizmos, remove old Entity.DrawGizmos
Hammer: Create GameObject Test option
▅▇▇▋▅▅ ▊▍▄█▍▊ ▆▉▉ ▉▌▌▅▇▋█▅▊ ▉▇▌█▊█▅▊▍██ ▊▅██
Clamp dirty regions within terrain bounds
Explicit updates for Terrain material buffers since we're not uploading this every frame like a mad man now
TerrainMaterial.Metalness range 0.0f - 1.0f
Terrain: Make texture paint & holes also work with new undo
RectInt: your favourite Rect struct but with integers
Texture.GetPixels: Able to specify dstRect fully
Terrain optimizations, better undo/redo, clean up
* Implement new undo/redo system, track delta changes instead of full snapshots (faster, more reliable)
* Don't upload buffers every frame in OnPreRender
* Stop using MakeDirty, each property only updates what it needs to
* Only create SceneObject when we can actually use it
* Don't over expose public methods & properties, remove dead methods
Optimize TerrainStorage.GetDominantControlMapIndices 400ms -> 1ms
Pass in a buffer we get from ArrayPool instead of allocating and returning, also preresolve some getters
Vector3: Aggressive inlining on aggressively inlined System.Numerics.Vector3 methods
TerrainClipmap mesh gen optimize 266ms -> 26ms
Don't recreate Edit menu, just update the undo options - fixes Facepunch/sbox-issues#6539
steamApiDll wasn't being populated properly, so it'd never free
Dynamic edit menu, show top undo/redo entry name, disable if nothing on stack
https://files.facepunch.com/matt/1b0111b1/0jX7JegPIJ.png
Revert "If Graphics.RenderTarget is not overriden, let it return the actual output rendertarget so you can fetch MSAA textures without copy ( you're going to shoot your own balls using this if you dont know what you're doing )"
This reverts commit 3d84d6b56d8d948c5212e13e69ab82a2fc4af264.
Let's not have 2 KeyBind razor components, use same styling as settings for BindModal, fixes not being able to bind properly
Fixes Facepunch/sbox-issues#6421
Use PackageManager to LoadAllGameResource from active packages instead of explicitly calling it everytime we need to after Package.MountAsync()
Fixes Facepunch/sbox-issues#6206
RenderTarget.From throws an exception if the passed textures were not created as render targets. This then fixes crashes when you're trying to use these invalid RenderTargets.
Fixes Facepunch/sbox-issues#6463
Avoid cyclic library references when publishing libraries
Fixes Facepunch/sbox-issues#6414
Fixes Facepunch/sbox-issues#6410
MeshComponent updates meshsystem & sceneobject flags when setting a new model, this is usually automatic but it's a semi-procedural workflow
TreeView nodes do not call OnItemActivate when double clicking the expand/collapse button
Fixes Facepunch/sbox-issues#6487
Use EditorTypeLibrary for Hammer PrimitiveBuilders (bonus: you can define these in your own editor libraries too)
Fixes Facepunch/sbox-issues#6499
-allowlocalhttp works for WebSurface in editor only. Also limit Http local http to editor and headless (dedicated server), players should never be able to accidentally opt in
Facepunch/sbox-issues#5774
Handle WebSurface.Url null, remove duplicate private url check
Fixes Facepunch/sbox-issues#6380
Optimize TextureBuilder creations with no initial data
* Use vkCmdClearColorImage instead of allocating a big empty buffer in
managed
* Texture.CreateInternal also passes a nullptr if the span is empty, so we
don't do additional unnecessary setdata
It's weird all of this stuff has an API of Span<T> & int length, but hard
to fix without API breaking changes
DrawIndirectArguments should be LayoutKind.Sequential
Backport some more gpu profiling for scenesystem
Backport scenesystem GPU profiling
Restore these deleted attributes to Valve core shaders, where we ended up only including them accidentally only in reflection mode in complex..... (fixes missing world mapping and other features in complex & more)
sbox/pull/736/commits/bca14ecb2bba7d5410a2b971ab1f9a9c406a41d3
We should not be removing core stuff from core shaders because we're accidentally including our material api. The material api should depend on core, not the other way around
compiled complex
ComputeBuffer.GetData - 0 count is illegal
Add Model.GetIndexCount( int ) Model.GetIndexStart( int ) Model.GetBaseVertex( int )
Shadow map layers set proper ELayerEnum::Shadow, fixes SceneCustomObject not casting shadows
git blame ignore "Copy over changes for shader resources"
ComputeBuffer methods use the current render context if applicable, otherwise stuff is in weird shit orders
Match upstream m_bIsReadOnlyDepthStencil
Don't bind ShadowDepthBuffer as an input whilst we're writing to it as a render target (drawing shadows)... 🤯
Add ComputeBuffer.SetCounterValue( uint ) for Append buffers
Add ComputeBufferType.IndirectDrawArguments
Public Graphics.DrawModel(Instanced)(Indirect), prefer Span<Transform> to Transform[T]
Terrain:GetHeight() multiplies by heightscale
compiled complex.shader_c with stripped combos 259MB -> 102MB... there's more we can do but let's see if anyone whines first
complex.shader: remove F/S_OVERLAY, we have specialized overlay shaders already
complex.shader: drop texture animation, way too specialized
complex.shader: half combos by making S_REFLECTIONS it's own shader variant since it doesn't really use 99% of the other combos
shaders: drop D_BAKED_LIGHTING_FROM_VERTEX_STREAM
complex.shader: combo rules for F_PARALLAX_OCCLUSION (insanity that we added this to this shader)
Drastically reduce unlikely combos by disallowing with:
- Translucent
- Alpha Test
- Cloth Shading
- Bent Normals
- Diffuse Wrap
- Additive Blend
- Detail Texture
- Metalness Texture
- Retro Reflective
Fix crash from trying to upload too many envmaps to the GPU, missing range check but also why are there this many envmaps being binned @samzanemesis
Add Scene.RenderAttributes for global render attributes for usecases similar to Unity's Shader.SetGlobal...( )
Terrain buffers are global scene attributes (that actually work this time)
Remove max thread count from pooled dynamic vb/ib, fixing crash when used from too many threads (.net threads with unreliable ids)
Fix open_asset crashing in non-tools
Don't show lobby cards for games marked as hidden (unless you're in that org)
Another out of memory fatal error
Validate descriptor bindings of a shader (for real this time, not in a dead method) - prevent crashing by not loading these invalid shaders
Tag map for sentry too (if launched with a map)