Browse Source

Fix 'X' key shortcut with multiple scenes open

rsredsq 10 years ago
parent
commit
c039a6fe41

+ 5 - 9
Script/AtomicEditor/ui/MainToolbar.ts

@@ -50,17 +50,13 @@ class MainToolbar extends Atomic.UIWidget {
     }
 
     handleGizmoAxisModeChanged(ev: Editor.GizmoAxisModeChangedEvent) {
-
-        if (ev.toggle) return;
-
-        if (ev.mode == Editor.AXIS_WORLD) {
-            this.axisButton.value = 1;
-            this.axisButton.text = "World";
-        } else {
+        if (ev.mode) {
             this.axisButton.value = 0;
             this.axisButton.text = "Local";
+        } else {
+            this.axisButton.value = 1;
+            this.axisButton.text = "World";
         }
-
     }
 
     handleGizmoEditModeChanged(ev: Editor.GizmoEditModeChangedEvent) {
@@ -101,7 +97,7 @@ class MainToolbar extends Atomic.UIWidget {
 
             } else if (ev.target.id == "3d_axismode") {
 
-                EditorUI.getShortcuts().invokeGizmoAxisModeChanged(ev.target.value ? Editor.AXIS_WORLD : Editor.AXIS_LOCAL);
+                EditorUI.getShortcuts().toggleGizmoAxisMode();
                 return true;
 
             } else if (ev.target.id == "maintoolbar_play") {

+ 7 - 4
Script/AtomicEditor/ui/Shortcuts.ts

@@ -99,10 +99,13 @@ class Shortcuts extends Atomic.ScriptObject {
 
     }
 
-    invokeGizmoAxisModeChanged(mode: Editor.AxisMode, toggle: boolean = false) {
-
-        this.sendEvent("GizmoAxisModeChanged", { mode: mode, toggle: toggle });
+    toggleGizmoAxisMode() {
+        var editor = EditorUI.getMainFrame().resourceframe.currentResourceEditor;
 
+        if (editor instanceof Editor.SceneEditor3D) {
+            var mode = editor.getGizmo().axisMode ? Editor.AXIS_WORLD : Editor.AXIS_LOCAL;
+            this.sendEvent("GizmoAxisModeChanged", { mode: mode });
+        }
     }
 
     invokeResourceFrameShortcut(shortcut: string) {
@@ -129,7 +132,7 @@ class Shortcuts extends Atomic.ScriptObject {
                 } else if (ev.key == Atomic.KEY_R) {
                     this.invokeGizmoEditModeChanged(Editor.EDIT_SCALE);
                 } else if (ev.key == Atomic.KEY_X) {
-                    this.invokeGizmoAxisModeChanged(Editor.AXIS_WORLD, true);
+                    this.toggleGizmoAxisMode();
                 } else if (ev.key == Atomic.KEY_F) {
                     this.invokeFrameSelected();
                 }

+ 1 - 1
Script/Packages/Editor/Editor.json

@@ -6,5 +6,5 @@
 							 "Source/AtomicEditor/Editors", "Source/AtomicEditor/Editors/SceneEditor3D",
 						   "Source/AtomicEditor/Components"],
 	"classes" : ["EditorMode", "PlayerMode", "FileUtils", "ResourceEditor", "JSResourceEditor",
-							 "SceneEditor3D", "SceneView3D", "SceneSelection", "EditorComponent", "CubemapGenerator"]
+							 "SceneEditor3D", "SceneView3D", "SceneSelection", "EditorComponent", "CubemapGenerator", "Gizmo3D"]
 }

+ 0 - 1
Script/TypeScript/AtomicWork.d.ts

@@ -315,7 +315,6 @@ declare module Editor {
 
     export interface GizmoAxisModeChangedEvent {
         mode: AxisMode;
-        toggle: boolean;
     }
 
 }

+ 1 - 10
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3D.cpp

@@ -228,16 +228,7 @@ void SceneEditor3D::HandleGizmoEditModeChanged(StringHash eventType, VariantMap&
 void SceneEditor3D::HandleGizmoAxisModeChanged(StringHash eventType, VariantMap& eventData)
 {
     AxisMode mode = (AxisMode) (eventData[GizmoAxisModeChanged::P_MODE].GetInt());
-    bool toggle = eventData[GizmoAxisModeChanged::P_TOGGLE].GetBool();
-    if (toggle)
-    {
-        AxisMode mode = gizmo3D_->GetAxisMode() == AXIS_WORLD ? AXIS_LOCAL : AXIS_WORLD;
-        VariantMap neventData;
-        neventData[GizmoAxisModeChanged::P_MODE] = (int) mode;
-        SendEvent(E_GIZMOAXISMODECHANGED, neventData);
-    }
-    else
-        gizmo3D_->SetAxisMode(mode);
+    gizmo3D_->SetAxisMode(mode);
 }
 
 

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

@@ -21,8 +21,6 @@ EVENT(E_GIZMOEDITMODECHANGED, GizmoEditModeChanged)
 EVENT(E_GIZMOAXISMODECHANGED, GizmoAxisModeChanged)
 {
     PARAM(P_MODE, Mode);            // int
-    PARAM(P_TOGGLE, Toggle);            // bool
-
 }
 
 EVENT(E_GIZMOMOVED, GizmoMoved)