| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #include "BsEditorWindowBase.h"
- #include "CmApplication.h"
- #include "CmSceneObject.h"
- #include "CmRenderWindow.h"
- #include "BsEditorWindowManager.h"
- #include "BsCamera.h"
- #include "BsGUIWindowFrameWidget.h"
- #include "BsEngineGUI.h"
- using namespace CamelotFramework;
- using namespace BansheeEngine;
- namespace BansheeEditor
- {
- EditorWindowBase::EditorWindowBase()
- :mOwnsRenderWindow(true)
- {
- RENDER_WINDOW_DESC renderWindowDesc;
- renderWindowDesc.width = 200;
- renderWindowDesc.height = 200;
- renderWindowDesc.title = "EditorWindow";
- renderWindowDesc.fullscreen = false;
- renderWindowDesc.border = WindowBorder::None;
- renderWindowDesc.toolWindow = true;
- mRenderWindow = RenderWindow::create(renderWindowDesc, gApplication().getPrimaryWindow());
- construct(mRenderWindow);
- }
- EditorWindowBase::EditorWindowBase(const CM::RenderWindowPtr& renderWindow)
- :mOwnsRenderWindow(false)
- {
- construct(renderWindow);
- }
- EditorWindowBase::~EditorWindowBase()
- {
- mResizedConn.disconnect();
- if(mOwnsRenderWindow)
- mRenderWindow->destroy();
- mSceneObject->destroy();
- }
- void EditorWindowBase::initialize()
- {
- setPosition(0, 0);
- setSize(200, 200);
- }
- void EditorWindowBase::close()
- {
- EditorWindowManager::instance().destroy(this);
- }
- void EditorWindowBase::hide()
- {
- gMainSyncedCA().hideWindow(mRenderWindow);
- }
- void EditorWindowBase::construct(const RenderWindowPtr& renderWindow)
- {
- mRenderWindow = renderWindow;
- mSceneObject = SceneObject::create("EditorWindow");
- mCamera = mSceneObject->addComponent<Camera>();
- mCamera->initialize(renderWindow, 0.0f, 0.0f, 1.0f, 1.0f);
- mCamera->setNearClipDistance(5);
- mCamera->setAspectRatio(1.0f);
- mCamera->setIgnoreSceneRenderables(true);
- mGUI = mSceneObject->addComponent<GUIWidget>(mCamera->getViewport().get());
- mGUI->setDepth(128);
- mGUI->setSkin(EngineGUI::instance().getSkin());
- mWindowFrame = mSceneObject->addComponent<WindowFrameWidget>(mCamera->getViewport().get(), renderWindow.get(), EngineGUI::instance().getSkin());
- mWindowFrame->setDepth(129);
- mResizedConn = mCamera->getViewport()->onResized.connect(boost::bind(&EditorWindowBase::resized, this));
- }
- void EditorWindowBase::setPosition(CM::INT32 x, CM::INT32 y)
- {
- gMainCA().moveWindow(mRenderWindow, x, y);
- }
- void EditorWindowBase::setSize(CM::UINT32 width, CM::UINT32 height)
- {
- gMainCA().resizeWindow(mRenderWindow, width, height);
- }
- INT32 EditorWindowBase::getLeft() const
- {
- return mRenderWindow->getLeft();
- }
- INT32 EditorWindowBase::getTop() const
- {
- return mRenderWindow->getTop();
- }
- UINT32 EditorWindowBase::getWidth() const
- {
- return (UINT32) mRenderWindow->getWidth();
- }
- UINT32 EditorWindowBase::getHeight() const
- {
- return (UINT32) mRenderWindow->getHeight();
- }
- }
|