Browse Source

Fix play button. Prevent running multiple players from the menu. Refactored

rsredsq 10 years ago
parent
commit
f9a0c67d70

+ 1 - 0
Script/AtomicEditor/editor/EditorEvents.ts

@@ -14,6 +14,7 @@ export interface ModalErrorEvent {
 }
 
 export const PlayerStarted = "EditorPlayerStarted";
+export const PlayerStopped = "EditorPlayerStopped";
 export const PlayerLog = "EditorPlayerLog";
 export interface PlayerLogEvent {
 

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

@@ -6,6 +6,7 @@
 //
 
 import EditorUI = require("./EditorUI");
+import EditorEvents = require("../editor/EditorEvents");
 
 class MainToolbar extends Atomic.UIWidget {
 
@@ -35,8 +36,14 @@ class MainToolbar extends Atomic.UIWidget {
 
         this.subscribeToEvent("GizmoAxisModeChanged", (ev) => this.handleGizmoAxisModeChanged(ev));
         this.subscribeToEvent("GizmoEditModeChanged", (ev) => this.handleGizmoEditModeChanged(ev));
+
         this.subscribeToEvent(this, "WidgetEvent", (data) => this.handleWidgetEvent(data));
-        this.subscribeToEvent("IPCPlayerQuit", (data) => {
+
+        this.subscribeToEvent(EditorEvents.PlayerStarted, (data) => {
+            var skin = <Atomic.UISkinImage> this.playButton.getWidget("skin_image");
+            skin.setSkinBg("StopButton");
+        });
+        this.subscribeToEvent(EditorEvents.PlayerStopped, (data) => {
             var skin = <Atomic.UISkinImage> this.playButton.getWidget("skin_image");
             skin.setSkinBg("PlayButton");
         });
@@ -98,16 +105,8 @@ class MainToolbar extends Atomic.UIWidget {
                 return true;
 
             } else if (ev.target.id == "maintoolbar_play") {
-                var editorMode = <Editor.EditorMode> this.getSubsystem("EditorMode");
-                if (editorMode.isPlayerEnabled()) {
-                    this.sendEvent("IPCPlayerExitRequest");
-                } else {
-                    EditorUI.getShortcuts().invokePlay();
-                    var skin = <Atomic.UISkinImage> this.playButton.getWidget("skin_image");
-                    skin.setSkinBg("StopButton");
-                }
+                EditorUI.getShortcuts().invokePlayOrStopPlayer();
                 return true;
-
             }
 
         }

+ 11 - 24
Script/AtomicEditor/ui/Shortcuts.ts

@@ -23,34 +23,21 @@ class Shortcuts extends Atomic.ScriptObject {
     }
 
     //this should be moved somewhere else...
-    invokePlay() {
-
-        this.sendEvent(EditorEvents.SaveAllResources);
-
-        var playerWindow = Preferences.getInstance().playerWindow;
-        if (playerWindow) {
-            var args = "--windowposx " + playerWindow.x + " --windowposy " + playerWindow.y + " --windowwidth " + playerWindow.width + " --windowheight " + playerWindow.height + " --resizable";
-            Atomic.editorMode.playProject(args, false);
-        } else {
-            Atomic.editorMode.playProject("", false);
-        }
-    }
-
-    invokePlayDebug() {
-
+    invokePlayOrStopPlayer(debug:boolean = false) {
         this.sendEvent(EditorEvents.SaveAllResources);
-
-        var playerWindow = Preferences.getInstance().playerWindow;
-        if (playerWindow) {
-            var args = "--windowposx " + playerWindow.x + " --windowposy " + playerWindow.y + " --windowwidth " + playerWindow.width + " --windowheight " + playerWindow.height + " --resizable";
-            Atomic.editorMode.playProject(args, true);
+        if (Atomic.editorMode.isPlayerEnabled()) {
+            this.sendEvent("IPCPlayerExitRequest");
         } else {
-            Atomic.editorMode.playProject("", true);
+            var playerWindow = Preferences.getInstance().playerWindow;
+            if (playerWindow) {
+                var args = "--windowposx " + playerWindow.x + " --windowposy " + playerWindow.y + " --windowwidth " + playerWindow.width + " --windowheight " + playerWindow.height + " --resizable";
+                Atomic.editorMode.playProject(args, debug);
+            } else {
+                Atomic.editorMode.playProject("", debug);
+            }
         }
-
     }
 
-
     invokeFormatCode() {
 
         var editor = EditorUI.getMainFrame().resourceframe.currentResourceEditor;
@@ -158,7 +145,7 @@ class Shortcuts extends Atomic.ScriptObject {
                 this.invokeFormatCode();
             }
             else if (ev.key == Atomic.KEY_P) {
-                this.invokePlay();
+                this.invokePlayOrStopPlayer();
                 //if shift is pressed
             } else if (ev.qualifiers & Atomic.QUAL_SHIFT) {
                 if (ev.key == Atomic.KEY_B) {

+ 2 - 2
Script/AtomicEditor/ui/frames/menus/MainFrameMenu.ts

@@ -54,12 +54,12 @@ class MainFrameMenu extends Atomic.ScriptObject {
         } else if (target.id == "menu edit popup") {
 
             if (refid == "edit play") {
-                EditorUI.getShortcuts().invokePlay();
+                EditorUI.getShortcuts().invokePlayOrStopPlayer();
                 return true;
             }
 
             if (refid == "edit play debug") {
-                EditorUI.getShortcuts().invokePlayDebug();
+                EditorUI.getShortcuts().invokePlayOrStopPlayer(true);
                 return true;
             }
 

+ 1 - 1
Source/AtomicEditor/Application/AEPlayerApp.cpp

@@ -228,7 +228,7 @@ void AEPlayerApplication::Start()
         }
     }
 
-    SubscribeToEvent(E_IPCPLAYERQUIT, HANDLER(AEPlayerApplication, HandleQuit));
+    SubscribeToEvent(E_PLAYERQUIT, HANDLER(AEPlayerApplication, HandleQuit));
 
     return;
 }

+ 2 - 2
Source/AtomicEditor/EditorMode/AEEditorEvents.h

@@ -63,13 +63,13 @@ EVENT(E_EDITORRESOURCEEDITORCHANGED, EditorResourceEditorChanged)
 
 
 // emitted once play has started
-EVENT(E_EDITORPLAYSTARTED, EditorPlayStarted)
+EVENT(E_EDITORPLAYERSTARTED, EditorPlayerStarted)
 {
     PARAM(P_MODE, Mode);    // uint (AEPlayerMode)
 }
 
 // emitted once play has stopped
-EVENT(E_EDITORPLAYSTOPPED, EditorPlayStopped)
+EVENT(E_EDITORPLAYERSTOPPED, EditorPlayerStopped)
 {
 
 }

+ 2 - 1
Source/AtomicEditor/EditorMode/AEEditorMode.cpp

@@ -60,7 +60,7 @@ void EditorMode::HandleIPCWorkerStarted(StringHash eventType, VariantMap& eventD
 
     playerBroker_->PostMessage(E_IPCINITIALIZE, startupData);
 
-    SendEvent("EditorPlayerStarted");
+    SendEvent(E_EDITORPLAYERSTARTED);
 
     playerEnabled_ = true;
 
@@ -74,6 +74,7 @@ void EditorMode::HandleIPCWorkerExit(StringHash eventType, VariantMap& eventData
     {
         playerBroker_ = 0;
         playerEnabled_ = false;
+        SendEvent(E_EDITORPLAYERSTOPPED);
     }
 }
 

+ 2 - 2
Source/AtomicEditor/Editors/SceneEditor3D/SceneEditor3D.cpp

@@ -107,8 +107,8 @@ SceneEditor3D ::SceneEditor3D(Context* context, const String &fullpath, UITabCon
 
     SubscribeToEvent(E_PROJECTUSERPREFSAVED, HANDLER(SceneEditor3D, HandleUserPrefSaved));
 
-    SubscribeToEvent(E_EDITORPLAYSTARTED, HANDLER(SceneEditor3D, HandlePlayStarted));
-    SubscribeToEvent(E_EDITORPLAYSTOPPED, HANDLER(SceneEditor3D, HandlePlayStopped));
+    SubscribeToEvent(E_EDITORPLAYERSTARTED, HANDLER(SceneEditor3D, HandlePlayStarted));
+    SubscribeToEvent(E_EDITORPLAYERSTOPPED, HANDLER(SceneEditor3D, HandlePlayStopped));
 
     SubscribeToEvent(scene_, E_NODEADDED, HANDLER(SceneEditor3D, HandleNodeAdded));
     SubscribeToEvent(scene_, E_NODEREMOVED, HANDLER(SceneEditor3D, HandleNodeRemoved));

+ 1 - 1
Source/AtomicEditor/PlayerMode/AEPlayerEvents.h

@@ -27,7 +27,7 @@ EVENT(E_IPCPLAYERWINDOWCHANGED, IPCPlayerWindowChanged)
     PARAM(P_HEIGHT, Height);
 }
 
-EVENT(E_IPCPLAYERQUIT, IPCPlayerQuit)
+EVENT(E_PLAYERQUIT, PlayerQuit)
 {
 
 }

+ 1 - 2
Source/AtomicEditor/PlayerMode/AEPlayerMode.cpp

@@ -249,8 +249,7 @@ void PlayerMode::HandleExitRequest(StringHash eventType, VariantMap& eventData)
     data[P_WIDTH] = graphics->GetWidth();
     data[P_HEIGHT] = graphics->GetHeight();
     ipc_->SendEventToBroker(E_IPCPLAYERWINDOWCHANGED, data);
-    ipc_->SendEventToBroker(E_IPCPLAYERQUIT);
-    SendEvent(E_IPCPLAYERQUIT);
+    SendEvent(E_PLAYERQUIT);
 }
 
 }