Browse Source

Add node creation event

Josh Engebretson 10 năm trước cách đây
mục cha
commit
117b54332c

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/AttributeInfoEdit.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import EditorUI = require("ui/EditorUI");
 import InspectorUtils = require("./InspectorUtils");

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/ComponentAttributeUI.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import InspectorUtils = require("./InspectorUtils");
 import AttributeInfoEdit = require("./AttributeInfoEdit");

+ 6 - 1
Script/AtomicEditor/ui/frames/inspector/SelectionEditTypes.ts

@@ -1,4 +1,9 @@
-
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import SerializableEditType = require("./SerializableEditType");
 import SelectionInspector = require("./SelectionInspector");

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/SelectionInspector.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import EditorUI = require("../../EditorUI");
 import CreateComponentButton = require("./CreateComponentButton");

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/SelectionPrefabWidget.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 
 class SelectionPrefabWidget extends Atomic.UILayout {

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/SelectionSection.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import SerializableEditType = require("./SerializableEditType");
 import AttributeInfoEdit = require("./AttributeInfoEdit");

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/SelectionSectionCoreUI.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import EditorUI = require("ui/EditorUI");
 import InspectorUtils = require("./InspectorUtils");

+ 7 - 1
Script/AtomicEditor/ui/frames/inspector/SelectionSectionUI.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 import SerializableEditType = require("./SerializableEditType");
 
@@ -6,7 +12,7 @@ class SelectionSectionUI extends Atomic.UILayout {
     editType: SerializableEditType;
 
     refresh() {
-      
+
     }
 
     createUI(editType: SerializableEditType) {

+ 6 - 0
Script/AtomicEditor/ui/frames/inspector/SerializableEditType.ts

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 class SerializableEditType {
 

+ 4 - 0
Script/AtomicEditor/ui/frames/menus/HierarchyFrameMenu.ts

@@ -53,6 +53,10 @@ class HierarchyFrameMenus extends Atomic.ScriptObject {
 
             }
 
+            if (child) {
+                child.scene.sendEvent("SceneEditNodeCreated", { node : child});
+            }
+
             return true;
 
         }

+ 41 - 37
Script/TypeScript/AtomicWork.d.ts

@@ -52,7 +52,7 @@ declare module Atomic {
         qualifiers: number;
 
         // mouse buttons down
-        buttons:number;
+        buttons: number;
 
     }
 
@@ -63,7 +63,7 @@ declare module Atomic {
         //  Atomic.QUAL_SHIFT, Atomic.QUAL_CTRL, Atomic.QUAL_ALT, Atomic.QUAL_ANY
         qualifiers: number;
         // mouse buttons down
-        buttons:number;
+        buttons: number;
 
     }
 
@@ -208,7 +208,7 @@ declare module Atomic {
         defaultValue: string;
         enumNames: string[];
         resourceTypeName: string;
-        dynamic:boolean;
+        dynamic: boolean;
 
     }
 
@@ -261,57 +261,61 @@ declare module AtomicNET {
 
 declare module Editor {
 
-  export interface SceneNodeSelectedEvent {
-    scene: Atomic.Scene;
-    node: Atomic.Node;
-    selected: boolean;
-  }
+    export interface SceneNodeSelectedEvent {
+        scene: Atomic.Scene;
+        node: Atomic.Node;
+        selected: boolean;
+    }
+
+    export interface SceneEditAddRemoveNodesEvent {
 
-  export interface SceneEditAddRemoveNodesEvent {
+        end: boolean;
 
-      end: boolean;
+    }
 
-  }
 
+    export interface SceneEditNodeAddedEvent {
 
-  export interface SceneEditNodeAddedEvent {
+        scene: Atomic.Scene;
+        parent: Atomic.Node;
+        node: Atomic.Node;
 
-      scene: Atomic.Scene;
-      parent: Atomic.Node;
-      node: Atomic.Node;
+    }
 
-  }
+    export interface SceneEditNodeRemovedEvent {
 
-  export interface SceneEditNodeRemovedEvent {
+        scene: Atomic.Scene;
+        parent: Atomic.Node;
+        node: Atomic.Node;
 
-      scene: Atomic.Scene;
-      parent: Atomic.Node;
-      node: Atomic.Node;
+    }
 
-  }
+    export interface SceneEditComponentAddedRemovedEvent {
 
-  export interface SceneEditComponentAddedRemovedEvent {
+        scene: Atomic.Scene;
+        node: Atomic.Node;
+        component: Atomic.Component;
+        removed: boolean;
+    }
 
-      scene: Atomic.Scene;
-      node: Atomic.Node;
-      component: Atomic.Component;
-      removed:boolean;
-  }
+    export interface SceneEditStateChangeEvent {
 
-  export interface SceneEditStateChangeEvent {
+        serializable: Atomic.Serializable;
 
-    serializable:Atomic.Serializable;
+    }
 
-  }
+    export interface SceneEditNodeCreatedEvent {
+        node: Atomic.Node;
+    }
 
-  export interface GizmoEditModeChangedEvent {
-    mode:EditMode;
-  }
+    export interface GizmoEditModeChangedEvent {
+        mode: EditMode;
+    }
 
-  export interface GizmoAxisModeChangedEvent {
-    mode:AxisMode;
-    toggle:boolean;
-  }
+    export interface GizmoAxisModeChangedEvent {
+        mode: AxisMode;
+        toggle: boolean;
+    }
 
 }
 

+ 6 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditHistory.cpp

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 #include <Atomic/IO/Log.h>
 #include <Atomic/Scene/SceneEvents.h>

+ 6 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditOp.cpp

@@ -1,3 +1,9 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
 
 #include <Atomic/IO/Log.h>
 #include <Atomic/Scene/Node.h>

+ 9 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3D.cpp

@@ -109,6 +109,8 @@ SceneEditor3D ::SceneEditor3D(Context* context, const String &fullpath, UITabCon
 
     SubscribeToEvent(E_PROJECTUSERPREFSAVED, HANDLER(SceneEditor3D, HandleUserPrefSaved));
 
+    SubscribeToEvent(scene_, E_SCENEEDITNODECREATED, HANDLER(SceneEditor3D, HandleSceneEditNodeCreated));
+
     SubscribeToEvent(E_EDITORPLAYSTARTED, HANDLER(SceneEditor3D, HandlePlayStarted));
     SubscribeToEvent(E_EDITORPLAYSTOPPED, HANDLER(SceneEditor3D, HandlePlayStopped));
     SubscribeToEvent(scene_, E_SCENEEDITSCENEMODIFIED, HANDLER(SceneEditor3D, HandleSceneEditSceneModified));
@@ -318,6 +320,13 @@ void SceneEditor3D::Paste()
     selection_->Paste();
 }
 
+void SceneEditor3D::HandleSceneEditNodeCreated(StringHash eventType, VariantMap& eventData)
+{
+    PODVector<Node*> nodes;
+    nodes.Push(static_cast<Node*>(eventData[SceneEditNodeCreated::P_NODE].GetPtr()));
+    RegisterNodes(nodes);
+    selection_->AddNode(nodes[0], true);
+}
 
 void SceneEditor3D::HandleSceneEditSceneModified(StringHash eventType, VariantMap& eventData)
 {

+ 1 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3D.h

@@ -86,6 +86,7 @@ private:
     void HandleUserPrefSaved(StringHash eventType, VariantMap& eventData);
 
     void HandleSceneEditSceneModified(StringHash eventType, VariantMap& eventData);
+    void HandleSceneEditNodeCreated(StringHash eventType, VariantMap& eventData);
 
     void UpdateGizmoSnapSettings();
 

+ 6 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3DEvents.h

@@ -63,6 +63,12 @@ EVENT(E_SCENEEDITSTATECHANGESEND, SceneEditStateChangesEnd)
 
 }
 
+/// A child node has been added to a parent node.
+EVENT(E_SCENEEDITNODECREATED, SceneEditNodeCreated)
+{
+    PARAM(P_NODE, Node);                    // Node pointer
+}
+
 
 /// A child node has been added to a parent node.
 EVENT(E_SCENEEDITNODEADDED, SceneEditNodeAdded)

+ 7 - 0
Source/AtomicEditor/Editors/SceneEditor3D/SceneSelection.cpp

@@ -1,3 +1,10 @@
+//
+// Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
+// LICENSE: Atomic Game Engine Editor and Tools EULA
+// Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
+// license information: https://github.com/AtomicGameEngine/AtomicGameEngine
+//
+
 
 #include <Atomic/IO/Log.h>
 #include <Atomic/Core/CoreEvents.h>

+ 3 - 4
Source/AtomicEditor/Editors/SceneEditor3D/SceneView3D.cpp

@@ -585,10 +585,9 @@ void SceneView3D::HandleDragEnded(StringHash eventType, VariantMap& eventData)
 
     if (dragNode_.NotNull())
     {
-        PODVector<Node*> nodes;
-        nodes.Push(dragNode_);
-        sceneEditor_->RegisterNodes(nodes);
-        sceneEditor_->GetSelection()->AddNode(dragNode_, true);
+        VariantMap nodeCreatedEvent;
+        nodeCreatedEvent[SceneEditNodeCreated::P_NODE] = dragNode_;
+        scene_->SendEvent(E_SCENEEDITNODECREATED, nodeCreatedEvent);
     }
 
     if (dragObject && dragObject->GetObject()->GetType() == ToolCore::Asset::GetTypeStatic())