22 Days Ago
Hammer GameObjects (#1675) * Hammer Scene is serialized in MapWorld and gets written into VPK as world.scene_c * MapInstance additive 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>