Bläddra i källkod

Adding centered state for initial window creation

JoshEngebretson 10 år sedan
förälder
incheckning
c305a66448

+ 3 - 2
Script/AtomicEditor/editor/Editor.ts

@@ -61,8 +61,9 @@ class Editor extends Atomic.ScriptObject {
                 playerWindow.y = data.posY;
                 playerWindow.monitor = data.monitor;
                 playerWindow.maximized = true;
+                playerWindow.centered = false;
             } else {
-                playerWindow = {x: data.posX, y: data.posY, width: data.width, height: data.height, monitor: data.monitor, maximized: data.maximized};
+                playerWindow = {x: data.posX, y: data.posY, width: data.width, height: data.height, monitor: data.monitor, maximized: data.maximized, centered: false};
             }
             Preferences.getInstance().savePlayerWindowData(playerWindow);
         });
@@ -115,7 +116,7 @@ class Editor extends Atomic.ScriptObject {
             editorWindowData.maximized = true;
             editorWindowData.monitor = monitor;
         } else {
-            editorWindowData = {x: pos[0], y: pos[1], width: width, height: height, monitor: monitor, maximized: false}
+            editorWindowData = {x: pos[0], y: pos[1], width: width, height: height, monitor: monitor, maximized: false, centered: false}
         }
 
         Preferences.getInstance().saveEditorWindowData(editorWindowData);

+ 7 - 4
Script/AtomicEditor/editor/Preferences.ts

@@ -134,6 +134,7 @@ interface WindowData {
     height: number;
     monitor: number;
     maximized: boolean;
+    centered: boolean;
 }
 
 class PreferencesFormat {
@@ -153,16 +154,18 @@ class PreferencesFormat {
             width: 0,
             height: 0,
             monitor: 0,
-            maximized: true
+            maximized: true,
+            centered: false
         }
 
         this.playerWindow = {
             x: 0,
             y: 0,
-            width: 0,
-            height: 0,
+            width: 1280,
+            height: 720,
             monitor: 0,
-            maximized: true
+            maximized: false,
+            centered: true
         }
 
     }

+ 3 - 0
Script/AtomicEditor/ui/Shortcuts.ts

@@ -39,6 +39,9 @@ class Shortcuts extends Atomic.ScriptObject {
                     if (playerWindow.maximized) {
                         args += " --maximize";
                     }
+                    if (playerWindow.centered) {
+                        args += " --center";
+                    }
                     Atomic.editorMode.playProject(args, debug);
                 }
             } else {

+ 2 - 1
Source/Atomic/Engine/Engine.cpp

@@ -376,7 +376,8 @@ bool Engine::Initialize(const VariantMap& parameters)
             GetParameter(parameters, "VSync", false).GetBool(),
             GetParameter(parameters, "TripleBuffer", false).GetBool(),
             GetParameter(parameters, "MultiSample", 1).GetInt(),
-            GetParameter(parameters, "WindowMaximized", false).GetBool()
+            GetParameter(parameters, "WindowMaximized", false).GetBool(),
+            GetParameter(parameters, "WindowCentered", false).GetBool()
         ))
             return false;
 

+ 8 - 5
Source/Atomic/Graphics/Direct3D9/D3D9Graphics.cpp

@@ -405,7 +405,7 @@ void Graphics::RaiseWindow()
         SDL_RaiseWindow(impl_->window_);
 }
 bool Graphics::SetMode(int width, int height, bool fullscreen, bool borderless, bool resizable, bool vsync, bool tripleBuffer,
-    int multiSample, bool maximize)
+    int multiSample, bool maximize, bool center)
 {
     PROFILE(SetScreenMode);
 
@@ -448,7 +448,7 @@ bool Graphics::SetMode(int width, int height, bool fullscreen, bool borderless,
 
     if (!impl_->window_)
     {
-        if (!OpenWindow(width, height, resizable, borderless))
+        if (!OpenWindow(width, height, resizable, borderless, center))
             return false;
     }
 
@@ -599,7 +599,7 @@ bool Graphics::SetMode(int width, int height, bool fullscreen, bool borderless,
 
 bool Graphics::SetMode(int width, int height)
 {
-    return SetMode(width, height, fullscreen_, borderless_, resizable_, vsync_, tripleBuffer_, multiSample_, false);
+    return SetMode(width, height, fullscreen_, borderless_, resizable_, vsync_, tripleBuffer_, multiSample_, false, false);
 }
 
 void Graphics::SetSRGB(bool enable)
@@ -620,7 +620,7 @@ void Graphics::SetOrientations(const String& orientations)
 
 bool Graphics::ToggleFullscreen()
 {
-    return SetMode(width_, height_, !fullscreen_, borderless_, resizable_, vsync_, tripleBuffer_, multiSample_, false);
+    return SetMode(width_, height_, !fullscreen_, borderless_, resizable_, vsync_, tripleBuffer_, multiSample_, false, false);
 }
 
 void Graphics::Close()
@@ -2380,7 +2380,7 @@ void Graphics::ResetStreamFrequencies()
     }
 }
 
-bool Graphics::OpenWindow(int width, int height, bool resizable, bool borderless)
+bool Graphics::OpenWindow(int width, int height, bool resizable, bool borderless, bool center)
 {
     if (!externalWindow_)
     {
@@ -2401,6 +2401,9 @@ bool Graphics::OpenWindow(int width, int height, bool resizable, bool borderless
         return false;
     }
 
+    if (center)
+        CenterWindow();
+
     SDL_GetWindowPosition(impl_->window_, &position_.x_, &position_.y_);
 
     CreateWindowIcon();

+ 2 - 3
Source/Atomic/Graphics/Direct3D9/D3D9Graphics.h

@@ -104,8 +104,7 @@ public:
     /// Bring the window to front with focus
     void RaiseWindow();
     /// Set screen mode. Return true if successful.
-    bool SetMode
-        (int width, int height, bool fullscreen, bool borderless, bool resizable, bool vsync, bool tripleBuffer, int multiSample, bool maximize);
+    bool SetMode(int width, int height, bool fullscreen, bool borderless, bool resizable, bool vsync, bool tripleBuffer, int multiSample, bool maximize, bool center);
     /// Set screen resolution only. Return true if successful.
     bool SetMode(int width, int height);
     /// Set whether the main window uses sRGB conversion on write.
@@ -508,7 +507,7 @@ private:
     /// Reset stream frequencies.
     void ResetStreamFrequencies();
     /// Create the application window.
-    bool OpenWindow(int width, int height, bool resizable, bool borderless);
+    bool OpenWindow(int width, int height, bool resizable, bool borderless, bool center);
     /// Create the application window icon.
     void CreateWindowIcon();
     /// Adjust the window for new resolution and fullscreen mode.

+ 5 - 3
Source/AtomicEditor/Application/AEEditorCommon.cpp

@@ -180,14 +180,16 @@ bool AEEditorCommon::CreateDefaultPreferences(String& path, JSONValue& prefs)
     editorWindow["height"] = 0;
     editorWindow["monitor"] = 0;
     editorWindow["maximized"] = true;
+    editorWindow["centered"] = false;
 
     JSONValue playerWindow;
     playerWindow["x"] = 0;
     playerWindow["y"] = 0;
-    playerWindow["width"] = 0;
-    playerWindow["height"] = 0;
+    playerWindow["width"] = 1280;
+    playerWindow["height"] = 720;
     playerWindow["monitor"] = 0;
-    playerWindow["maximized"] = true;
+    playerWindow["maximized"] = false;
+    playerWindow["centered"] = true;
 
     root["editorWindow"] = editorWindow;
     root["playerWindow"] = playerWindow;

+ 4 - 0
Source/AtomicEditor/Application/AEPlayerApp.cpp

@@ -179,6 +179,10 @@ void AEPlayerApplication::Setup()
             {
                 engineParameters_["WindowMaximized"] = true;
             }
+            else if (argument == "--center")
+            {
+                engineParameters_["WindowCentered"] = true;
+            }
         }
     }