|
|
@@ -30,28 +30,23 @@
|
|
|
#include <Atomic/Resource/ResourceCache.h>
|
|
|
#include <Atomic/Resource/ResourceEvents.h>
|
|
|
|
|
|
-#include <Atomic/IPC/IPC.h>
|
|
|
-#include <Atomic/IPC/IPCEvents.h>
|
|
|
-#include <Atomic/IPC/IPCWorker.h>
|
|
|
-
|
|
|
// Move me
|
|
|
#include <Atomic/Environment/Environment.h>
|
|
|
|
|
|
#include <AtomicJS/Javascript/Javascript.h>
|
|
|
|
|
|
+
|
|
|
+#include "../PlayerMode/AEPlayerMode.h"
|
|
|
#include <AtomicPlayer/Player.h>
|
|
|
|
|
|
#include "AEPlayerApp.h"
|
|
|
|
|
|
#include <Atomic/DebugNew.h>
|
|
|
|
|
|
-#include <Atomic/UI/UI.h>
|
|
|
-
|
|
|
#ifdef __APPLE__
|
|
|
#include <unistd.h>
|
|
|
#endif
|
|
|
|
|
|
-
|
|
|
namespace AtomicPlayer
|
|
|
{
|
|
|
extern void jsapi_init_atomicplayer(JSVM* vm);
|
|
|
@@ -60,20 +55,9 @@ namespace AtomicPlayer
|
|
|
namespace AtomicEditor
|
|
|
{
|
|
|
|
|
|
-// fixme
|
|
|
-static JSVM* vm = NULL;
|
|
|
-static Javascript* javascript = NULL;
|
|
|
-
|
|
|
AEPlayerApplication::AEPlayerApplication(Context* context) :
|
|
|
- Application(context)
|
|
|
+ AEEditorCommon(context)
|
|
|
{
|
|
|
- fd_[0] = INVALID_IPCHANDLE_VALUE;
|
|
|
- fd_[1] = INVALID_IPCHANDLE_VALUE;
|
|
|
-
|
|
|
-#ifdef ATOMIC_3D
|
|
|
- RegisterEnvironmentLibrary(context_);
|
|
|
-#endif
|
|
|
-
|
|
|
}
|
|
|
|
|
|
void AEPlayerApplication::Setup()
|
|
|
@@ -121,41 +105,6 @@ void AEPlayerApplication::Setup()
|
|
|
{
|
|
|
SubscribeToEvent(E_LOGMESSAGE, HANDLER(AEPlayerApplication, HandleLogMessage));
|
|
|
}
|
|
|
-
|
|
|
- if (argument.StartsWith("--ipc-server=") || argument.StartsWith("--ipc-client="))
|
|
|
- {
|
|
|
- LOGINFOF("Starting IPCWorker %s", argument.CString());
|
|
|
-
|
|
|
- Vector<String> ipc = argument.Split(argument.CString(), '=');
|
|
|
-
|
|
|
- if (ipc.Size() == 2)
|
|
|
- {
|
|
|
- if (argument.StartsWith("--ipc-server="))
|
|
|
- {
|
|
|
-#ifdef ATOMIC_PLATFORM_WINDOWS
|
|
|
- WString wipc(ipc[1]);
|
|
|
- HANDLE pipe = reinterpret_cast<HANDLE>(_wtoi64(wipc.CString()));
|
|
|
- fd_[0] = pipe;
|
|
|
-#else
|
|
|
- int fd = ToInt(ipc[1].CString());
|
|
|
- fd_[0] = fd;
|
|
|
-#endif
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
-#ifdef ATOMIC_PLATFORM_WINDOWS
|
|
|
- WString wipc(ipc[1]);
|
|
|
- HANDLE pipe = reinterpret_cast<HANDLE>(_wtoi64(wipc.CString()));
|
|
|
- fd_[1] = pipe;
|
|
|
-#else
|
|
|
- int fd = ToInt(ipc[1].CString());
|
|
|
- fd_[1] = fd;
|
|
|
-#endif
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
else if (argument == "--project" && value.Length())
|
|
|
{
|
|
|
engineParameters_["ResourcePrefixPath"] = "";
|
|
|
@@ -171,69 +120,32 @@ void AEPlayerApplication::Setup()
|
|
|
engineParameters_["ResourcePaths"] = resourcePaths;
|
|
|
|
|
|
}
|
|
|
- else if (argument == "--editor-resource-paths" && value.Length())
|
|
|
- {
|
|
|
- // "/Users/josh/Dev/atomic/AtomicGameEngine/Data/AtomicPlayer/Resources/CoreData!/Users/josh/Dev/atomic/AtomicGameEngine/Data/AtomicPlayer/Resources/PlayerData!/Users/josh/Dev/atomic/AtomicExamples/NewSpaceGame/Resources"
|
|
|
- engineParameters_["ResourcePrefixPath"] = "";
|
|
|
- value.Replace("!", ";");
|
|
|
- engineParameters_["ResourcePaths"] = value;
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // Use the script file name as the base name for the log file
|
|
|
- engineParameters_["LogName"] = filesystem->GetAppPreferencesDir("AtomicPlayer", "Logs") + "AtomicPlayer.log";
|
|
|
-}
|
|
|
|
|
|
-void AEPlayerApplication::HandleHelloFromBroker(StringHash eventType, VariantMap& eventData)
|
|
|
-{
|
|
|
- assert(eventData[HelloFromBroker::P_HELLO].GetString() == "Hello");
|
|
|
- assert(eventData[HelloFromBroker::P_LIFETHEUNIVERSEANDEVERYTHING].GetInt() == 42);
|
|
|
|
|
|
- LOGERROR("Passed Test!");
|
|
|
+ // Use the script file name as the base name for the log file
|
|
|
+ engineParameters_["LogName"] = filesystem->GetAppPreferencesDir("AtomicPlayer", "Logs") + "AtomicPlayer.log";
|
|
|
}
|
|
|
|
|
|
void AEPlayerApplication::Start()
|
|
|
{
|
|
|
- SubscribeToEvent(E_IPCHELLOFROMBROKER, HANDLER(AEPlayerApplication, HandleHelloFromBroker));
|
|
|
- SubscribeToEvent(E_JSERROR, HANDLER(AEPlayerApplication, HandleJSError));
|
|
|
+ AEEditorCommon::Start();
|
|
|
|
|
|
+ context_->RegisterSubsystem(new PlayerMode(context_));
|
|
|
+ PlayerMode* playerMode = GetSubsystem<PlayerMode>();
|
|
|
+ playerMode->ProcessArguments();
|
|
|
|
|
|
-#ifdef ATOMIC_PLATFORM_WINDOWS
|
|
|
- if (fd_[0] != INVALID_IPCHANDLE_VALUE)
|
|
|
- {
|
|
|
- //::CloseHandle(fd_[0]);
|
|
|
- fd_[0] = INVALID_IPCHANDLE_VALUE;
|
|
|
- }
|
|
|
-
|
|
|
- if (fd_[1] != INVALID_IPCHANDLE_VALUE)
|
|
|
- {
|
|
|
- IPC* ipc = new IPC(context_);
|
|
|
- context_->RegisterSubsystem(ipc);
|
|
|
- //ipc->InitWorker(fd_[0], fd_[1]);
|
|
|
- }
|
|
|
-#else
|
|
|
- if (fd_[0] != INVALID_IPCHANDLE_VALUE && fd_[1] != INVALID_IPCHANDLE_VALUE)
|
|
|
- {
|
|
|
- IPC* ipc = new IPC(context_);
|
|
|
- context_->RegisterSubsystem(ipc);
|
|
|
- ipc->InitWorker(fd_[0], fd_[1]);
|
|
|
- }
|
|
|
-#endif
|
|
|
-
|
|
|
- // Instantiate and register the Javascript subsystem
|
|
|
- javascript = new Javascript(context_);
|
|
|
- context_->RegisterSubsystem(javascript);
|
|
|
+ SubscribeToEvent(E_JSERROR, HANDLER(AEPlayerApplication, HandleJSError));
|
|
|
|
|
|
- vm = javascript->InstantiateVM("MainVM");
|
|
|
- vm->InitJSContext();
|
|
|
- vm->SetModuleSearchPaths("Modules");
|
|
|
+ vm_->SetModuleSearchPaths("Modules");
|
|
|
|
|
|
// Instantiate and register the Player subsystem
|
|
|
context_->RegisterSubsystem(new AtomicPlayer::Player(context_));
|
|
|
- AtomicPlayer::jsapi_init_atomicplayer(vm);
|
|
|
+ AtomicPlayer::jsapi_init_atomicplayer(vm_);
|
|
|
|
|
|
- if (!vm->ExecuteMain())
|
|
|
+ if (!vm_->ExecuteMain())
|
|
|
{
|
|
|
ErrorExit("Error executing Scripts/main.js");
|
|
|
}
|
|
|
@@ -243,10 +155,7 @@ void AEPlayerApplication::Start()
|
|
|
|
|
|
void AEPlayerApplication::Stop()
|
|
|
{
|
|
|
- context_->RemoveSubsystem<Javascript>();
|
|
|
- // make sure JSVM is really down and no outstanding refs
|
|
|
- // as if not, will hold on engine subsystems, which is bad
|
|
|
- assert(!JSVM::GetJSVM(0));
|
|
|
+ AEEditorCommon::Stop();
|
|
|
}
|
|
|
|
|
|
void AEPlayerApplication::HandleScriptReloadStarted(StringHash eventType, VariantMap& eventData)
|