branchsbox/hammer-gameobjectscancel

31 Commits over 31 Days - 0.04cph!

51 Days Ago
Cleanup Set native modified flag using SerializedObject callback, also emit EventMapNodeDescriptionChanged_t for the outliner
51 Days Ago
Set HelpUrl
51 Days Ago
Can rotate and scale map game objects
51 Days Ago
Tint default Color.White
51 Days Ago
Hammer Game Objects * Hammer Scene is serialized in MapWorld and gets written into VPK as world.scene_c * MapInstance additively loads the SceneFile from inside the VPK Tie Meshes to GameObject: * Replaces Entity * GameObjects with meshes tied have a HammerMesh component which procedurally creates a ModelRenderer and ModelCollider * HammerMesh is setup at map compile time with generated models. Editor: * Add HammerManagedInspector which can take over native inspector if it likes the MapNode type * Add HammerSceneEditorSession for handling saving properly * Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority) * Clean up MapView loop: run Scene.EditorDraw() for gizmos, remove old Entity.DrawGizmos Hammer Outliner: * Managed sets DragData of map nodes in Hammer outliner * Defer selection until mouse release so it acts like our managed treeview, allows dragging without selecting instantly * Removed duplicate entity list * Add "Create Game Object" button ActionGraph: * Add MapSourceLocation for editing action graphs in .vmap files * Open source map when inspecting graph from .vmap * Parent action graph editor to hammer window if editing map graph Co-authored-by: James King <james.king@facepunchstudios.com>
51 Days Ago
Add jsoncpp so we can read/write json properly without fucking around with kv3 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 * 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 * MapGameObjects can be tied to MapMesh and generate model geometry Add MapSourceLocation for editing action graphs in .vmap files * Open source map when inspecting graph from .vmap * Parent action graph editor to hammer window if editing map graph Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority), clean up MapView loop 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 QOutliner: Remove hidden entity list QOutliner: Defer selection until mouse release so it acts like our managed treeview, allowing dragging without switching the inspector away [~] ModelRenderer don't default to box if Model is null InspectorWidgets are explicitly marked with [Inspector( Type )] instead of [CanEdit( Type )], created with InspectorWidget.Create( SerializedObject ) Hammer Scene is serialized entirely in MapWorld & written into VPK as world.scene_c MapInstance: Load from SceneFile from inside the VPK (A little more logic because we don't normally read managed from VPKs) When tying a MapMesh to a MapGameObject add ModelRenderer and ModelCollider automatically Don't need these Hammer prefab templates anymore Add "Create Game Object" button to Hammer outliner HammerMesh component, explicitly set on GameObjects that have a map mesh attached
55 Days Ago
Don't need these Hammer prefab templates anymore Add "Create Game Object" button to Hammer outliner
55 Days Ago
When tying a MapMesh to a MapGameObject add ModelRenderer and ModelCollider automatically
55 Days Ago
Add jsoncpp so we can read/write json properly without fucking around with kv3 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 * 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 * MapGameObjects can be tied to MapMesh and generate model geometry Add MapSourceLocation for editing action graphs in .vmap files * Open source map when inspecting graph from .vmap * Parent action graph editor to hammer window if editing map graph Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority), clean up MapView loop 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 QOutliner: Remove hidden entity list QOutliner: Defer selection until mouse release so it acts like our managed treeview, allowing dragging without switching the inspector away [~] ModelRenderer don't default to box if Model is null InspectorWidgets are explicitly marked with [Inspector( Type )] instead of [CanEdit( Type )], created with InspectorWidget.Create( SerializedObject ) Hammer Scene is serialized entirely in MapWorld & written into VPK as world.scene_c MapInstance: Load from SceneFile from inside the VPK (A little more logic because we don't normally read managed from VPKs)
55 Days Ago
Add jsoncpp so we can read/write json properly without fucking around with kv3 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 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) Tie Meshes to GameObject button Implement CMapGameObject::Copy CMapGameObject overrides child selection Sync native transforms to managed 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 CMapGameObject's that generate model geometry are ignored by physicsbuilder 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 Replace manual scene serialization with jsoncpp, can map guids to map meshes better and it's cleaner 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 Fix action graphs from maps not caching correctly Only OpenContainingResource if not already open Several assumptions of SceneEditorSession.Active.Scene should be GameObject.Scene Gizmo interactions work in MapView, Hammer gizmo selectionset syncs with native selection set (native has authority), clean up MapView loop 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 QOutliner: Remove hidden entity list QOutliner: Defer selection until mouse release so it acts like our managed treeview, allowing dragging without switching the inspector away [~] ModelRenderer don't default to box if Model is null InspectorWidgets are explicitly marked with [Inspector( Type )] instead of [CanEdit( Type )], created with InspectorWidget.Create( SerializedObject ) Hammer Scene is serialized entirely in MapWorld & written into VPK as world.scene_c MapInstance: Load from SceneFile from inside the VPK (A little more logic because we don't normally read managed from VPKs)
60 Days Ago
Cleanup Use GameObject name explicitly in description instead of setting DMX name
60 Days Ago
Revert "ModelRenderer don't default to box if Model is null" This reverts commit 507bf43671ecc159012fc46ffe726dcf1128bdd9. This works better, needs a cleanup that also removes [MakeDirty] crap
60 Days Ago
Batch map gameobjects, start disabled
60 Days Ago
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
60 Days Ago
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
60 Days Ago
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
2 Months Ago
CMapGameObject's that generate model geometry are ignored by physicsbuilder
2 Months Ago
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
2 Months Ago
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)
2 Months Ago
Clean up Entity tool as you can no longer add/target games this way Kill Hammer EntityIO buttons (unusable) CMapGameObject overrides child selection
2 Months Ago
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
2 Months Ago
Normalize map path name
2 Months Ago
Fix action graphs in unsaved hammer maps Associate graphs with a HammerSceneEditorSession if open in hammer, which is resilient to renaming etc
2 Months Ago
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
2 Months Ago
Fix action graphs from maps not caching correctly Only OpenContainingResource if not already open
2 Months Ago
Implement setting HammerSceneEditorSession.HasUnsavedChanges
2 Months Ago
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
2 Months Ago
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
2 Months Ago
And the managed side Serialize/deserialize CMapGameObject
2 Months Ago
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
2 Months Ago
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