Browse Source

Deployed player supports EngineConfig. Windows build process copies /Settings/Engine.json alongside player executable.

Matt Benic 10 years ago
parent
commit
0170ba4b6d

+ 17 - 0
Source/AtomicPlayer/Application/AtomicPlayer.cpp

@@ -23,6 +23,7 @@
 
 #include <Atomic/Atomic.h>
 #include <Atomic/Engine/Engine.h>
+#include <Atomic/Engine/EngineConfig.h>
 #include <Atomic/IO/FileSystem.h>
 #include <Atomic/IO/Log.h>
 #include <Atomic/IO/IOEvents.h>
@@ -76,6 +77,9 @@ void AtomicPlayerApp::Setup()
     FileSystem* filesystem = GetSubsystem<FileSystem>();
     context_->RegisterSubsystem(new ScriptSystem(context_));
 
+    // Read the engine configuration
+    ReadEngineConfig();
+
     engineParameters_.InsertNew("WindowTitle", "AtomicPlayer");
 
 #if (ATOMIC_PLATFORM_ANDROID)
@@ -258,5 +262,18 @@ void AtomicPlayerApp::HandleJSError(StringHash eventType, VariantMap& eventData)
 
 }
 
+void AtomicPlayerApp::ReadEngineConfig()
+{
+    FileSystem* fileSystem = GetSubsystem<FileSystem>();
+    String filename = fileSystem->GetProgramDir() + "Settings/Engine.json";
+
+    if (!fileSystem->FileExists(filename))
+        return;
+
+    if (EngineConfig::LoadFromFile(context_, filename))
+    {
+        EngineConfig::ApplyConfig(engineParameters_);
+    }
+}
 
 }

+ 2 - 0
Source/AtomicPlayer/Application/AtomicPlayer.h

@@ -65,6 +65,8 @@ private:
 
     void HandleLogMessage(StringHash eventType, VariantMap& eventData);
 
+    void ReadEngineConfig();
+
 };
 
 }

+ 4 - 0
Source/ToolCore/Build/BuildBase.cpp

@@ -252,6 +252,10 @@ void BuildBase::GetDefaultResourcePaths(Vector<String>& paths)
     paths.Push(AddTrailingSlash(tenv->GetPlayerDataDir()));
 }
 
+String BuildBase::GetSettingsDirectory()
+{
+    return project_->GetProjectPath() + "/Settings";
+}
 
 void BuildBase::ScanResourceDirectory(const String& resourceDir)
 {

+ 1 - 0
Source/ToolCore/Build/BuildBase.h

@@ -62,6 +62,7 @@ protected:
     void BuildResourceEntries();
 
     void GetDefaultResourcePaths(Vector<String>& paths);
+    String GetSettingsDirectory();
 
     String buildPath_;
     PODVector<BuildResourceEntry*> resourceEntries_;

+ 6 - 0
Source/ToolCore/Build/BuildWindows.cpp

@@ -152,6 +152,12 @@ void BuildWindows::Build(const String& buildPath)
     if (buildFailed_)
         return;
    
+    if (!BuildCreateDirectory(buildPath_ + "/Settings"))
+        return;
+
+    if (!BuildCopyFile(GetSettingsDirectory() + "/Engine.json", buildPath_ + "/Settings/Engine.json"))
+        return;
+
     if (!BuildCopyFile(playerBinary, buildPath_ + "/AtomicPlayer.exe"))
         return;