Josh Engebretson 10 роки тому
батько
коміт
2053f7d6fa

+ 39 - 12
Source/AtomicEditor/Source/Editors/SceneEditor3D/SceneEditor3D.cpp

@@ -103,28 +103,55 @@ SceneEditor3D::~SceneEditor3D()
 
 
 bool SceneEditor3D::OnEvent(const TBWidgetEvent &ev)
 bool SceneEditor3D::OnEvent(const TBWidgetEvent &ev)
 {
 {
-    if (ev.target)
+
+    if (ev.type == EVENT_TYPE_SHORTCUT)
     {
     {
-        if (ev.target->GetID() == TBIDC("3d_translate"))
-        {
-            gizmo3D_->SetEditMode(Gizmo3D::EDIT_MOVE);
-            return false;
-        }
-        else if (ev.target->GetID() == TBIDC("3d_rotate"))
+        if (ev.ref_id == TBIDC("save"))
         {
         {
-            gizmo3D_->SetEditMode(Gizmo3D::EDIT_ROTATE);
-            return false;
+            File file(context_);
+            if (file.Open(fullpath_, FILE_WRITE))
+            {
+                scene_->SaveXML(file);
+                file.Close();
+            }
+
+            return true;
+
         }
         }
-        else if (ev.target->GetID() == TBIDC("3d_scale"))
+    }
+
+    if (ev.type == EVENT_TYPE_CLICK)
+    {
+        SetFocus();
+
+        if (ev.target)
         {
         {
-            gizmo3D_->SetEditMode(Gizmo3D::EDIT_SCALE);
-            return false;
+            if (ev.target->GetID() == TBIDC("3d_translate"))
+            {
+                gizmo3D_->SetEditMode(Gizmo3D::EDIT_MOVE);
+                return false;
+            }
+            else if (ev.target->GetID() == TBIDC("3d_rotate"))
+            {
+                gizmo3D_->SetEditMode(Gizmo3D::EDIT_ROTATE);
+                return false;
+            }
+            else if (ev.target->GetID() == TBIDC("3d_scale"))
+            {
+                gizmo3D_->SetEditMode(Gizmo3D::EDIT_SCALE);
+                return false;
+            }
         }
         }
     }
     }
 
 
     return false;
     return false;
 }
 }
 
 
+void SceneEditor3D::SetFocus()
+{
+    sceneView_->GetWidgetDelegate()->SetFocus(WIDGET_FOCUS_REASON_UNKNOWN);
+}
+
 void SceneEditor3D::SelectNode(Node* node)
 void SceneEditor3D::SelectNode(Node* node)
 {
 {
     selectedNode_ = node;
     selectedNode_ = node;

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

@@ -44,6 +44,8 @@ public:
     Scene* GetScene() { return scene_; }
     Scene* GetScene() { return scene_; }
     Gizmo3D* GetGizmo() { return gizmo3D_; }
     Gizmo3D* GetGizmo() { return gizmo3D_; }
 
 
+    void SetFocus();
+
     virtual bool RequiresInspector() { return true; }
     virtual bool RequiresInspector() { return true; }
 
 
 
 

+ 5 - 5
Source/AtomicEditor/Source/Editors/SceneEditor3D/SceneView3D.cpp

@@ -66,6 +66,7 @@ SceneView3D ::SceneView3D(Context* context, SceneEditor3D *sceneEditor) :
     }
     }
 
 
     cameraNode_ = scene_->CreateChild("Camera");
     cameraNode_ = scene_->CreateChild("Camera");
+    cameraNode_->SetTemporary(true);
     camera_ = cameraNode_->CreateComponent<Camera>();
     camera_ = cameraNode_->CreateComponent<Camera>();
 
 
     debugRenderer_ = scene_->GetComponent<DebugRenderer>();
     debugRenderer_ = scene_->GetComponent<DebugRenderer>();
@@ -87,6 +88,9 @@ SceneView3D ::SceneView3D(Context* context, SceneEditor3D *sceneEditor) :
     eventData[EditorActiveSceneChange::P_SCENE] = scene_;
     eventData[EditorActiveSceneChange::P_SCENE] = scene_;
     SendEvent(E_EDITORACTIVESCENECHANGE, eventData);
     SendEvent(E_EDITORACTIVESCENECHANGE, eventData);
 
 
+    delegate_->SetIsFocusable(true);
+
+
 }
 }
 
 
 SceneView3D::~SceneView3D()
 SceneView3D::~SceneView3D()
@@ -306,11 +310,7 @@ void SceneView3D::SelectNode(Node* node)
 
 
 bool SceneView3D::OnEvent(const TBWidgetEvent &ev)
 bool SceneView3D::OnEvent(const TBWidgetEvent &ev)
 {
 {
-    if (ev.type == EVENT_TYPE_CLICK)
-    {
-    }
-
-    return false;
+    return sceneEditor_->OnEvent(ev);
 }
 }
 
 
 
 

+ 4 - 1
Source/AtomicEditor/Source/UI/UIResourceFrame.cpp

@@ -155,6 +155,9 @@ void ResourceFrame::EditResource(const String& fullpath)
         editorLookup_[editor->GetRootContentWidget()] = editor;
         editorLookup_[editor->GetRootContentWidget()] = editor;
         tabcontainer_->SetCurrentPage(tabcontainer_->GetNumPages()-1);
         tabcontainer_->SetCurrentPage(tabcontainer_->GetNumPages()-1);
 
 
+        editor->SetFocus();
+
+
     }
     }
 
 
 }
 }
@@ -446,7 +449,7 @@ void ResourceFrame::CloseResourceEditor(ResourceEditor* editor, bool navigateToA
 void ResourceFrame::HandlePlayStarted(StringHash eventType, VariantMap& eventData)
 void ResourceFrame::HandlePlayStarted(StringHash eventType, VariantMap& eventData)
 {
 {
     //delegate_->SetVisibilility(WIDGET_VISIBILITY_INVISIBLE);
     //delegate_->SetVisibilility(WIDGET_VISIBILITY_INVISIBLE);
-    delegate_->SetIgnoreInput(true);
+    //delegate_->SetIgnoreInput(true);
     //delegate_->SetState(WIDGET_STATE_DISABLED, true);
     //delegate_->SetState(WIDGET_STATE_DISABLED, true);
 }
 }