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)