|
|
@@ -16,6 +16,7 @@ using namespace BansheeEngine;
|
|
|
namespace BansheeEditor
|
|
|
{
|
|
|
EditorWindowBase::EditorWindowBase()
|
|
|
+ :mOwnsRenderWindow(true)
|
|
|
{
|
|
|
RENDER_WINDOW_DESC renderWindowDesc;
|
|
|
renderWindowDesc.width = 200;
|
|
|
@@ -27,31 +28,20 @@ namespace BansheeEditor
|
|
|
|
|
|
mRenderWindow = RenderWindow::create(renderWindowDesc, gApplication().getPrimaryWindow());
|
|
|
|
|
|
- mSceneObject = SceneObject::create("EditorWindow");
|
|
|
-
|
|
|
- HCamera camera = mSceneObject->addComponent<Camera>();
|
|
|
- camera->initialize(mRenderWindow, 0.0f, 0.0f, 1.0f, 1.0f, 0);
|
|
|
- camera->setNearClipDistance(5);
|
|
|
- camera->setAspectRatio(1.0f);
|
|
|
- camera->setIgnoreSceneRenderables(true);
|
|
|
-
|
|
|
- mGUI = mSceneObject->addComponent<GUIWidget>();
|
|
|
- mGUI->initialize(camera->getViewport().get(), mRenderWindow.get());
|
|
|
- mGUI->setDepth(128);
|
|
|
-
|
|
|
- mGUI->setSkin(&EngineGUI::instance().getSkin());
|
|
|
-
|
|
|
- GameObjectHandle<WindowFrameWidget> frame = mSceneObject->addComponent<WindowFrameWidget>();
|
|
|
- frame->setSkin(&EngineGUI::instance().getSkin());
|
|
|
- frame->initialize(camera->getViewport().get(), mRenderWindow.get());
|
|
|
- frame->setDepth(129);
|
|
|
+ construct(mRenderWindow);
|
|
|
+ }
|
|
|
|
|
|
- RenderWindowManager::instance().onMovedOrResized.connect(boost::bind(&EditorWindowBase::movedOrResized, this, _1));
|
|
|
+ EditorWindowBase::EditorWindowBase(CM::RenderWindowPtr renderWindow)
|
|
|
+ :mOwnsRenderWindow(false)
|
|
|
+ {
|
|
|
+ construct(renderWindow);
|
|
|
}
|
|
|
|
|
|
EditorWindowBase::~EditorWindowBase()
|
|
|
{
|
|
|
- mRenderWindow->destroy();
|
|
|
+ if(mOwnsRenderWindow)
|
|
|
+ mRenderWindow->destroy();
|
|
|
+
|
|
|
mSceneObject->destroy();
|
|
|
}
|
|
|
|
|
|
@@ -66,6 +56,31 @@ namespace BansheeEditor
|
|
|
EditorWindowManager::instance().destroy(this);
|
|
|
}
|
|
|
|
|
|
+ void EditorWindowBase::construct(CM::RenderWindowPtr renderWindow)
|
|
|
+ {
|
|
|
+ mRenderWindow = renderWindow;
|
|
|
+ mSceneObject = SceneObject::create("EditorWindow");
|
|
|
+
|
|
|
+ HCamera camera = mSceneObject->addComponent<Camera>();
|
|
|
+ camera->initialize(renderWindow, 0.0f, 0.0f, 1.0f, 1.0f, 0);
|
|
|
+ camera->setNearClipDistance(5);
|
|
|
+ camera->setAspectRatio(1.0f);
|
|
|
+ camera->setIgnoreSceneRenderables(true);
|
|
|
+
|
|
|
+ mGUI = mSceneObject->addComponent<GUIWidget>();
|
|
|
+ mGUI->initialize(camera->getViewport().get(), renderWindow.get());
|
|
|
+ mGUI->setDepth(128);
|
|
|
+
|
|
|
+ mGUI->setSkin(&EngineGUI::instance().getSkin());
|
|
|
+
|
|
|
+ GameObjectHandle<WindowFrameWidget> frame = mSceneObject->addComponent<WindowFrameWidget>();
|
|
|
+ frame->setSkin(&EngineGUI::instance().getSkin());
|
|
|
+ frame->initialize(camera->getViewport().get(), renderWindow.get());
|
|
|
+ frame->setDepth(129);
|
|
|
+
|
|
|
+ RenderWindowManager::instance().onMovedOrResized.connect(boost::bind(&EditorWindowBase::movedOrResized, this, _1));
|
|
|
+ }
|
|
|
+
|
|
|
void EditorWindowBase::movedOrResized(RenderWindow& renderWindow)
|
|
|
{
|
|
|
if(&renderWindow == mRenderWindow.get())
|