Просмотр исходного кода

Updates for D3D9Ex pool management

JoshEngebretson 9 лет назад
Родитель
Сommit
d0026d625e

+ 3 - 1
Source/Atomic/Graphics/Direct3D9/D3D9GPUObject.cpp

@@ -34,7 +34,9 @@ GPUObject::GPUObject(Graphics* graphics) :
     graphics_(graphics),
     object_(0),
     dataLost_(false),
-    dataPending_(false)
+    dataPending_(false),
+    gpuShared_(false),
+    gpuSharedHandle_(0)
 {
     if (graphics_)
         graphics->AddGPUObject(this);

+ 15 - 0
Source/Atomic/Graphics/Direct3D9/D3D9GPUObject.h

@@ -62,6 +62,16 @@ public:
     /// Return whether has pending data assigned while device was lost.
     bool HasPendingData() const { return dataPending_; }
 
+    // ATOMIC BEGIN
+
+    void SetGPUShared(bool shared = true) { gpuShared_ = shared; }
+    bool GetGPUShared() const { return gpuShared_; }
+
+    void SetGPUSharedHandle(void* gpuSharedHandle) { gpuSharedHandle_ = gpuSharedHandle; }
+    void* GetGPUSharedHandle() { return gpuSharedHandle_; }
+
+    // ATOMIC END
+
 protected:
     /// Graphics subsystem.
     WeakPtr<Graphics> graphics_;
@@ -71,6 +81,11 @@ protected:
     bool dataLost_;
     /// Data pending flag.
     bool dataPending_;
+
+    // ATOMIC BEGIN
+    bool gpuShared_;
+    void* gpuSharedHandle_;
+    // ATOMIC END
 };
 
 }

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

@@ -2836,6 +2836,11 @@ IntVector2 Graphics::GetMonitorResolution(int monitorId) const
     return IntVector2(mode.w, mode.h);
 }
 
+bool Graphics::IsUnmanagedPool(unsigned pool)
+{
+    return enableD3D9Ex_ ? false : pool == D3DPOOL_DEFAULT;
+}
+
 unsigned Graphics::GetDefaultD3D9Usage()
 {
     return enableD3D9Ex_ ? (unsigned)  D3DUSAGE_DYNAMIC : 0;

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

@@ -507,6 +507,8 @@ public:
     static void SetDirect3D9ExEnabled ( bool enabled) { enableD3D9Ex_ = enabled; }
     static bool GetDirect3D9ExEnabled () { return enableD3D9Ex_; }
 
+    static bool IsUnmanagedPool(unsigned pool);
+
     static unsigned GetDefaultD3D9Usage();
     static unsigned GetDefaultD3D9Pool();
 

+ 3 - 3
Source/Atomic/Graphics/Direct3D9/D3D9IndexBuffer.cpp

@@ -58,13 +58,13 @@ IndexBuffer::~IndexBuffer()
 
 void IndexBuffer::OnDeviceLost()
 {
-    if (pool_ == D3DPOOL_DEFAULT)
+    if (Graphics::IsUnmanagedPool(pool_))
         Release();
 }
 
 void IndexBuffer::OnDeviceReset()
 {
-    if (pool_ == D3DPOOL_DEFAULT || !object_)
+    if (Graphics::IsUnmanagedPool(pool_) || !object_)
     {
         Create();
         dataLost_ = !UpdateToGPU();
@@ -297,7 +297,7 @@ void IndexBuffer::Unlock()
 
 bool IndexBuffer::IsDynamic() const
 {
-    return pool_ == D3DPOOL_DEFAULT;
+    return (usage_ & D3DUSAGE_DYNAMIC) != 0;
 }
 
 bool IndexBuffer::GetUsedVertexRange(unsigned start, unsigned count, unsigned& minVertex, unsigned& vertexCount)

+ 1 - 1
Source/Atomic/Graphics/Direct3D9/D3D9Texture.cpp

@@ -168,7 +168,7 @@ TextureUsage Texture::GetUsage() const
     if (usage_ & D3DUSAGE_RENDERTARGET)
         return TEXTURE_RENDERTARGET;
 
-    if (pool_ == D3DPOOL_DEFAULT)
+    if ((usage_ & D3DUSAGE_DYNAMIC) != 0)
         return TEXTURE_DYNAMIC;
 
     return TEXTURE_STATIC;

+ 8 - 4
Source/Atomic/Graphics/Direct3D9/D3D9Texture2D.cpp

@@ -108,13 +108,13 @@ bool Texture2D::EndLoad()
 
 void Texture2D::OnDeviceLost()
 {
-    if (pool_ == D3DPOOL_DEFAULT)
+    if (Graphics::IsUnmanagedPool(pool_))
         Release();
 }
 
 void Texture2D::OnDeviceReset()
 {
-    if (pool_ == D3DPOOL_DEFAULT || !object_ || dataPending_)
+    if (Graphics::IsUnmanagedPool(pool_) || !object_ || dataPending_)
     {
         // If has a resource file, reload through the resource cache. Otherwise just recreate.
         ResourceCache* cache = GetSubsystem<ResourceCache>();
@@ -251,7 +251,7 @@ bool Texture2D::SetData(unsigned level, int x, int y, int width, int height, con
     d3dRect.bottom = y + height;
 
     DWORD flags = 0;
-    if (level == 0 && x == 0 && y == 0 && width == levelWidth && height == levelHeight && pool_ == D3DPOOL_DEFAULT)
+    if (level == 0 && x == 0 && y == 0 && width == levelWidth && height == levelHeight && usage_ & D3DUSAGE_DYNAMIC)
         flags |= D3DLOCK_DISCARD;
 
     if (FAILED(((IDirect3DTexture9*)object_)->LockRect(level, &d3dLockedRect, (flags & D3DLOCK_DISCARD) ? 0 : &d3dRect, flags)))
@@ -612,6 +612,8 @@ bool Texture2D::Create()
     }
     else
     {
+        HANDLE sharedHandle = 0;
+
         if (!device || FAILED(graphics_->GetImpl()->GetDevice()->CreateTexture(
             (UINT)width_,
             (UINT)height_,
@@ -620,12 +622,14 @@ bool Texture2D::Create()
             (D3DFORMAT)format_,
             (D3DPOOL)pool_,
             (IDirect3DTexture9**)&object_,
-            0)))
+            gpuShared_ ? &sharedHandle : 0 )))
         {
             LOGERROR("Could not create texture");
             return false;
         }
 
+        gpuSharedHandle_ = (void*) sharedHandle;
+
         levels_ = ((IDirect3DTexture9*)object_)->GetLevelCount();
 
         if (usage_ & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL))

+ 3 - 3
Source/Atomic/Graphics/Direct3D9/D3D9Texture3D.cpp

@@ -152,13 +152,13 @@ bool Texture3D::EndLoad()
 
 void Texture3D::OnDeviceLost()
 {
-    if (pool_ == D3DPOOL_DEFAULT)
+    if (Graphics::IsUnmanagedPool(pool_))
         Release();
 }
 
 void Texture3D::OnDeviceReset()
 {
-    if (pool_ == D3DPOOL_DEFAULT || !object_ || dataPending_)
+    if (Graphics::IsUnmanagedPool(pool_) || !object_ || dataPending_)
     {
         // If has a resource file, reload through the resource cache. Otherwise just recreate.
         ResourceCache* cache = GetSubsystem<ResourceCache>();
@@ -297,7 +297,7 @@ bool Texture3D::SetData(unsigned level, int x, int y, int z, int width, int heig
 
     DWORD flags = 0;
     if (level == 0 && x == 0 && y == 0 && z == 0 && width == levelWidth && height == levelHeight && depth == levelDepth &&
-        pool_ == D3DPOOL_DEFAULT)
+        usage_ & D3DUSAGE_DYNAMIC)
         flags |= D3DLOCK_DISCARD;
 
     if (FAILED(((IDirect3DVolumeTexture9*)object_)->LockBox(level, &d3dLockedBox, (flags & D3DLOCK_DISCARD) ? 0 : &d3dBox, flags)))

+ 62 - 10
Source/Atomic/Graphics/Direct3D9/D3D9TextureCube.cpp

@@ -254,13 +254,13 @@ bool TextureCube::EndLoad()
 
 void TextureCube::OnDeviceLost()
 {
-    if (pool_ == D3DPOOL_DEFAULT)
+    if (Graphics::IsUnmanagedPool(pool_))
         Release();
 }
 
 void TextureCube::OnDeviceReset()
 {
-    if (pool_ == D3DPOOL_DEFAULT || !object_ || dataPending_)
+    if (Graphics::IsUnmanagedPool(pool_) || !object_ || dataPending_)
     {
         // If has a resource file, reload through the resource cache. Otherwise just recreate.
         ResourceCache* cache = GetSubsystem<ResourceCache>();
@@ -321,7 +321,7 @@ bool TextureCube::SetSize(int size, unsigned format, TextureUsage usage)
         faceMemoryUse_[i] = 0;
     }
 
-    pool_ = Graphics::GetDirect3D9ExEnabled() ? D3DPOOL_SYSTEMMEM : D3DPOOL_MANAGED;
+    pool_ = Graphics::GetDirect3D9ExEnabled() ? D3DPOOL_DEFAULT : D3DPOOL_MANAGED;
     usage_ = 0;
 
     if (usage == TEXTURE_RENDERTARGET)
@@ -397,6 +397,9 @@ bool TextureCube::SetData(CubeMapFace face, unsigned level, int x, int y, int wi
         return false;
     }
 
+    IDirect3DSurface9* offscreenSurface = 0;
+    IDirect3DDevice9* device = graphics_->GetImpl()->GetDevice();
+
     D3DLOCKED_RECT d3dLockedRect;
     RECT d3dRect;
     d3dRect.left = x;
@@ -405,14 +408,35 @@ bool TextureCube::SetData(CubeMapFace face, unsigned level, int x, int y, int wi
     d3dRect.bottom = y + height;
 
     DWORD flags = 0;
-    if (level == 0 && x == 0 && y == 0 && width == levelWidth && height == levelHeight && pool_ == D3DPOOL_DEFAULT)
-        flags |= D3DLOCK_DISCARD;
 
-    if (FAILED(((IDirect3DCubeTexture9*)object_)->LockRect((D3DCUBEMAP_FACES)face, level, &d3dLockedRect,
-        (flags & D3DLOCK_DISCARD) ? 0 : &d3dRect, flags)))
+    if (!Graphics::GetDirect3D9ExEnabled())
     {
-        LOGERROR("Could not lock texture");
-        return false;
+        if (level == 0 && x == 0 && y == 0 && width == levelWidth && height == levelHeight && pool_ == D3DPOOL_DEFAULT)
+            flags |= D3DLOCK_DISCARD;
+
+        if (FAILED(((IDirect3DCubeTexture9*)object_)->LockRect((D3DCUBEMAP_FACES)face, level, &d3dLockedRect,
+            (flags & D3DLOCK_DISCARD) ? 0 : &d3dRect, flags)))
+        {
+            LOGERROR("Could not lock texture");
+            return false;
+        }
+    }
+    else
+    {
+        device->CreateOffscreenPlainSurface((UINT)width_, (UINT)height_, (D3DFORMAT)format_, D3DPOOL_DEFAULT, &offscreenSurface, 0);
+        if (!offscreenSurface)
+        {
+            LOGERROR("TextureCube::SetData - Could not create offscreen surface for updating TextureCube");
+            return false;
+        }
+
+        if (FAILED(offscreenSurface->LockRect(&d3dLockedRect, &d3dRect, D3DLOCK_DISCARD)))
+        {
+            LOGERROR("TextureCube::SetData - Could not lock offscreen surface for updating TextureCube");
+            offscreenSurface->Release();
+            return false;
+        }
+
     }
 
     if (IsCompressed())
@@ -471,7 +495,35 @@ bool TextureCube::SetData(CubeMapFace face, unsigned level, int x, int y, int wi
         break;
     }
 
-    ((IDirect3DCubeTexture9*)object_)->UnlockRect((D3DCUBEMAP_FACES)face, level);
+    if (!offscreenSurface)
+    {
+        ((IDirect3DCubeTexture9*)object_)->UnlockRect((D3DCUBEMAP_FACES)face, level);
+    }
+    else
+    {
+        offscreenSurface->UnlockRect();
+
+        IDirect3DSurface9* faceSurface = 0;
+
+        if (FAILED(((IDirect3DCubeTexture9*)object_)->GetCubeMapSurface((D3DCUBEMAP_FACES)face, level, &faceSurface)))
+        {
+            LOGERROR("TextureCube::SetData - Could not get cubemap surface");
+            offscreenSurface->Release();
+            return false;
+        }
+
+        if (FAILED(device->StretchRect(offscreenSurface, NULL, faceSurface, NULL, D3DTEXF_NONE)))
+        {
+            LOGERROR("TextureCube::SetData - Could not stretch rect");
+            faceSurface->Release();
+            offscreenSurface->Release();
+            return false;
+        }
+
+        faceSurface->Release();
+        offscreenSurface->Release();
+    }
+
     return true;
 }
 

+ 3 - 3
Source/Atomic/Graphics/Direct3D9/D3D9VertexBuffer.cpp

@@ -76,13 +76,13 @@ VertexBuffer::~VertexBuffer()
 
 void VertexBuffer::OnDeviceLost()
 {
-    if (pool_ == D3DPOOL_DEFAULT)
+    if (Graphics::IsUnmanagedPool(pool_))
         Release();
 }
 
 void VertexBuffer::OnDeviceReset()
 {
-    if (pool_ == D3DPOOL_DEFAULT || !object_)
+    if (Graphics::IsUnmanagedPool(pool_) || !object_)
     {
         Create();
         dataLost_ = !UpdateToGPU();
@@ -320,7 +320,7 @@ void VertexBuffer::Unlock()
 
 bool VertexBuffer::IsDynamic() const
 {
-    return pool_ == D3DPOOL_DEFAULT;
+    return (usage_ & D3DUSAGE_DYNAMIC) != 0;
 }
 
 void VertexBuffer::UpdateOffsets()

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

@@ -294,11 +294,9 @@ void AEPlayerApplication::Start()
     netScript->ExecMainAssembly();
 #endif
 
-    if (!playerMode->launchedByEditor())
+    if (!playerMode->GetLaunchedByEditor())
     {
-        JSVM* vm = JSVM::GetJSVM(0);
-
-        if (!vm->ExecuteMain())
+        if (!playerMode->Start())
         {
             SendEvent(E_EXITREQUESTED);
         }

+ 41 - 3
Source/AtomicEditor/EditorMode/AEEditorMode.cpp

@@ -117,7 +117,7 @@ void EditorMode::HandleIPCJSError(StringHash eventType, VariantMap& eventData)
 
 }
 
-bool EditorMode::PlayProject(String addArgs, bool debug)
+bool EditorMode::PlaySetup(Vector<String>& vargs, const String& addArgs, bool debug)
 {
     ToolEnvironment* env = GetSubsystem<ToolEnvironment>();
     ToolSystem* tsystem = GetSubsystem<ToolSystem>();
@@ -141,8 +141,6 @@ bool EditorMode::PlayProject(String addArgs, bool debug)
     String resourcePaths;
     resourcePaths.Join(paths, "!");
 
-    Vector<String> vargs;
-
     String args = ToString("--player --project \"%s\"", AddTrailingSlash(project->GetProjectPath()).CString());
 
     vargs = args.Split(' ');
@@ -153,6 +151,46 @@ bool EditorMode::PlayProject(String addArgs, bool debug)
     if (addArgs.Length() > 0)
         vargs.Insert(0, addArgs.Split(' '));
 
+    return true;
+}
+
+bool EditorMode::PlayScene(const String& scenePath, const String& addArgs, bool debug)
+{
+    String _addArgs = "--scene \"" + scenePath +"\" " + addArgs;
+
+    Vector<String> vargs;
+    if (!PlaySetup(vargs, _addArgs, debug))
+        return false;
+
+    ToolEnvironment* env = GetSubsystem<ToolEnvironment>();
+    const String& editorBinary = env->GetEditorBinary();
+
+    String dump;
+    dump.Join(vargs, " ");
+    LOGINFOF("Launching Scene Player Broker %s %s", editorBinary.CString(), dump.CString());
+
+    IPC* ipc = GetSubsystem<IPC>();
+    playerBroker_ = ipc->SpawnWorker(editorBinary, vargs);
+
+    if (playerBroker_)
+    {
+        SubscribeToEvent(playerBroker_, E_IPCJSERROR, HANDLER(EditorMode, HandleIPCJSError));
+        SubscribeToEvent(playerBroker_, E_IPCWORKEREXIT, HANDLER(EditorMode, HandleIPCWorkerExit));
+        SubscribeToEvent(playerBroker_, E_IPCWORKERLOG, HANDLER(EditorMode, HandleIPCWorkerLog));
+    }
+
+    return playerBroker_.NotNull();
+}
+
+bool EditorMode::PlayProject(const String& addArgs, bool debug)
+{
+    Vector<String> vargs;
+    if (!PlaySetup(vargs, addArgs, debug))
+        return false;
+
+    ToolEnvironment* env = GetSubsystem<ToolEnvironment>();
+    const String& editorBinary = env->GetEditorBinary();
+
     String dump;
     dump.Join(vargs, " ");
     LOGINFOF("Launching Broker %s %s", editorBinary.CString(), dump.CString());

+ 4 - 1
Source/AtomicEditor/EditorMode/AEEditorMode.h

@@ -47,11 +47,14 @@ public:
     /// Destruct.
     virtual ~EditorMode();
 
-    bool PlayProject(String addArgs = "", bool debug = false);
+    bool PlayProject(const String& addArgs = String::EMPTY, bool debug = false);
+    bool PlayScene(const String& scenePath, const String& addArgs = String::EMPTY, bool debug = false);
     bool IsPlayerEnabled();
 
 private:
 
+    bool PlaySetup(Vector<String>& vargs, const String& addArgs, bool debug);
+
     void HandleIPCWorkerStarted(StringHash eventType, VariantMap& eventData);
     void HandleIPCJSError(StringHash eventType, VariantMap& eventData);
     void HandleIPCWorkerLog(StringHash eventType, VariantMap& eventData);

+ 29 - 59
Source/AtomicEditor/PlayerMode/AEPlayerMode.cpp

@@ -38,6 +38,8 @@
 #include <AtomicJS/Javascript/JSEvents.h>
 #include <AtomicJS/Javascript/JSIPCEvents.h>
 
+#include <AtomicPlayer/Player.h>
+
 #include "AEPlayerEvents.h"
 
 #include "AEPlayerMode.h"
@@ -52,8 +54,7 @@ namespace AtomicEditor
 PlayerMode::PlayerMode(Context* context) :
     Object(context),
     brokerActive_(false),
-    launchedByEditor_(false),
-    licenseModule3D_(false)
+    launchedByEditor_(false)
 {
     fd_[0] = INVALID_IPCHANDLE_VALUE;
     fd_[1] = INVALID_IPCHANDLE_VALUE;
@@ -66,10 +67,6 @@ PlayerMode::PlayerMode(Context* context) :
     SubscribeToEvent(E_SCREENMODE, HANDLER(PlayerMode, HandlePlayerWindowChanged));
     SubscribeToEvent(E_WINDOWPOS, HANDLER(PlayerMode, HandlePlayerWindowChanged));
     SubscribeToEvent(E_UPDATESPAUSEDRESUMED, HANDLER(PlayerMode, HandleUpdatesPausedResumed));
-
-    // BEGIN LICENSE MANAGEMENT
-    SubscribeToEvent(E_BEGINVIEWRENDER, HANDLER(PlayerMode, HandleViewRender));
-    // END LICENSE MANAGEMENT
 }
 
 PlayerMode::~PlayerMode()
@@ -77,22 +74,35 @@ PlayerMode::~PlayerMode()
 
 }
 
-void PlayerMode::HandleIPCInitialize(StringHash eventType, VariantMap& eventData)
+bool PlayerMode::Start()
 {
-    brokerActive_ = true;
+    if (!scenePath_.Length())
+    {
+        JSVM* vm = JSVM::GetJSVM(0);
 
-    JSVM* vm = JSVM::GetJSVM(0);
+        if (!vm->ExecuteMain())
+        {
+            return false;
+        }
 
-    if (!vm->ExecuteMain())
+    }
+    else
     {
-        SendEvent(E_EXITREQUESTED);
+        GetSubsystem<AtomicPlayer::Player>()->LoadScene(scenePath_);
     }
 
-    // BEGIN LICENSE MANAGEMENT
+    return true;
+}
 
-    licenseModule3D_ = eventData["license3D"].GetBool();
+void PlayerMode::HandleIPCInitialize(StringHash eventType, VariantMap& eventData)
+{
+    brokerActive_ = true;
 
-    // END LICENSE MANAGEMENT
+    if (!Start())
+    {
+        SendEvent(E_EXITREQUESTED);
+        return;
+    }
 
     SystemUI::DebugHud* debugHud = GetSubsystem<SystemUI::DebugHud>();
     if (debugHud)
@@ -111,7 +121,7 @@ void PlayerMode::ProcessArguments() {
         if (arguments[i].Length() > 1)
         {
             String argument = arguments[i].ToLower();
-            // String value = i + 1 < arguments.Size() ? arguments[i + 1] : String::EMPTY;
+            String value = i + 1 < arguments.Size() ? arguments[i + 1] : String::EMPTY;
 
             if (argument.StartsWith("--ipc-id="))
             {
@@ -120,7 +130,6 @@ void PlayerMode::ProcessArguments() {
 
                     id = ToInt(idc[1].CString());
             }
-
             else if (argument.StartsWith("--ipc-server=") || argument.StartsWith("--ipc-client="))
             {
                 LOGINFOF("Starting IPCWorker %s", argument.CString());
@@ -157,7 +166,10 @@ void PlayerMode::ProcessArguments() {
                 }
 
             }
-
+            else if (argument == "--scene" && value.Length())
+            {
+                scenePath_ = value;
+            }
         }
     }
 
@@ -216,48 +228,6 @@ void PlayerMode::HandleLogMessage(StringHash eventType, VariantMap& eventData)
 
 }
 
-void PlayerMode::HandleMessageAck(StringHash eventType, VariantMap& eventData)
-{
-    messageBox_ = 0;
-    GetSubsystem<UI>()->RequestExit();
-}
-
-void PlayerMode::HandleViewRender(StringHash eventType, VariantMap& eventData)
-{
-// BEGIN LICENSE MANAGEMENT
-    static bool done = false;
-
-    if (!launchedByEditor_ || licenseModule3D_)
-        return;
-
-    Camera* camera = static_cast<Camera*>(eventData[BeginViewRender::P_CAMERA].GetPtr());
-
-    if (!camera || camera->IsOrthographic())
-        return;
-
-    if (!done) {
-
-        done = true;
-
-        messageBox_ = GetSubsystem<UI>()->ShowSystemMessageBox("3D Module License Required", "A 3D Module License is required to display 3D content.\n\nUpgrade to Atomic Pro for all features and platforms.");
-        SubscribeToEvent(messageBox_, SystemUI::E_MESSAGEACK, HANDLER(PlayerMode, HandleMessageAck));
-
-        if (brokerActive_)
-        {
-
-            if (ipc_.Null())
-                return;
-
-            VariantMap msgEvent;
-            msgEvent[IPCMessage::P_MESSAGE] = String("3D Module License Required");
-            ipc_->SendEventToBroker(E_IPCMESSAGE, msgEvent);
-        }
-    }
-
-// END LICENSE MANAGEMENT
-
-}
-
 void PlayerMode::HandlePlayerWindowChanged(StringHash eventType, VariantMap& eventData)
 {
     Graphics* graphics = GetSubsystem<Graphics>();

+ 5 - 8
Source/AtomicEditor/PlayerMode/AEPlayerMode.h

@@ -46,7 +46,9 @@ public:
     /// Destruct.
     virtual ~PlayerMode();
 
-    bool launchedByEditor() { return launchedByEditor_; }
+    bool GetLaunchedByEditor() { return launchedByEditor_; }
+
+    bool Start();
 
 private:
 
@@ -55,22 +57,17 @@ private:
     void HandleJSError(StringHash eventType, VariantMap& eventData);
     void HandleLogMessage(StringHash eventType, VariantMap& eventData);
     void HandleIPCInitialize(StringHash eventType, VariantMap& eventData);
-    void HandleViewRender(StringHash eventType, VariantMap& eventData);
     void HandleExitRequest(StringHash eventType, VariantMap& eventData);
     void HandlePlayerWindowChanged(StringHash eventType, VariantMap& eventData);
     void HandleUpdatesPausedResumed(StringHash eventType, VariantMap& eventData);
 
-// BEGIN LICENSE MANAGEMENT
-    void HandleMessageAck(StringHash eventType, VariantMap& eventData);
-    bool licenseModule3D_;
-    SharedPtr<SystemUI::MessageBox> messageBox_;
-// END LICENSE MANAGEMENT
-
     IPCHandle fd_[2];
     WeakPtr<IPC> ipc_;
     bool brokerActive_;
     bool launchedByEditor_;
 
+    String scenePath_;
+
 };
 
 }