BsMainEditorWindow.cpp 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "BsMainEditorWindow.h"
  2. #include "BsDockManager.h"
  3. #include "BsGUIMenuBar.h"
  4. #include "BsCamera.h"
  5. #include "CmSceneObject.h"
  6. #include "CmRenderTexture.h"
  7. #include "CmCPUProfiler.h"
  8. // DEBUG ONLY
  9. #include "CmTestTextSprite.h"
  10. #include "CmDebugCamera.h"
  11. #include "BsDrawHelper2D.h"
  12. #include "BsDrawHelper3D.h"
  13. #include "CmFRect.h"
  14. #include "BsProfilerOverlay.h"
  15. using namespace CamelotFramework;
  16. using namespace BansheeEngine;
  17. namespace BansheeEditor
  18. {
  19. MainEditorWindow::MainEditorWindow(CM::RenderWindowPtr renderWindow)
  20. :EditorWindowBase(renderWindow), mDockManager(cm_new<DockManager>(mGUI.get())), mMenuBar(cm_new<GUIMenuBar>(mGUI.get()))
  21. {
  22. updateAreas();
  23. mMenuBar->addMenuItem(L"File/New project", nullptr);
  24. mMenuBar->addMenuItem(L"File/Open project", nullptr);
  25. mMenuBar->addSeparator(L"File");
  26. mMenuBar->addMenuItem(L"File/Recent projects/Project A", nullptr);
  27. mMenuBar->addMenuItem(L"File/Recent projects/Project B", nullptr);
  28. mMenuBar->addMenuItem(L"File/Recent projects/Project C", nullptr);
  29. mMenuBar->addSeparator(L"File");
  30. mMenuBar->addMenuItem(L"File/Exit", nullptr);
  31. mMenuBar->addMenuItem(L"Window/Scene", nullptr);
  32. // DEBUG ONLY
  33. HSceneObject sceneCameraGO = SceneObject::create("SceneCamera");
  34. HCamera sceneCamera = sceneCameraGO->addComponent<Camera>();
  35. RenderTexturePtr sceneRenderTarget = RenderTexture::create(TEX_TYPE_2D, 800, 600);
  36. sceneCamera->initialize(sceneRenderTarget, 0.0f, 0.0f, 1.0f, 1.0f, 0);
  37. sceneCamera->setPriority(-1);
  38. sceneCameraGO->setPosition(Vector3(0,50,1240));
  39. sceneCameraGO->lookAt(Vector3(0,50,-300));
  40. sceneCamera->setNearClipDistance(5);
  41. sceneCamera->setAspectRatio(800.0f / 600.0f);
  42. GameObjectHandle<DebugCamera> debugCamera = sceneCameraGO->addComponent<DebugCamera>();
  43. GameObjectHandle<TestTextSprite> textSprite = mSceneObject->addComponent<TestTextSprite>(mCamera->getViewport().get(), renderWindow.get());
  44. textSprite->init(sceneCamera, "Testing in a new row, does this work?", sceneRenderTarget);
  45. //DrawHelper2D::instance().drawQuad(sceneCamera, FRect(0.0f, 0.2f, 0.75f, 0.5f), Color::White, DebugDrawCoordType::Normalized, 250.0f);
  46. //DrawHelper2D::instance().drawQuad(sceneCamera, FRect(50.0f, 50.0f, 100.0f, 50.0f), Color::Blue, DebugDrawCoordType::Pixel, 250.0f);
  47. //DrawHelper2D::instance().drawLine_Pixel(sceneCamera, Vector2(0, 0), Vector2(20, 20), Color::Blue, DebugDrawCoordType::Pixel, 250.0f);
  48. //DrawHelper2D::instance().drawLine_AA(sceneCamera, Vector2(100, 10), Vector2(120, 40), 1.0f, 1.0f, Color::Blue, DebugDrawCoordType::Pixel, 250.0f);
  49. AABox dbgBox(Vector3(-300, -200, 1000), Vector3(300, 300, 1500));
  50. DrawHelper3D::instance().drawAABox(sceneCamera, dbgBox, Color::Green, 250.0f);
  51. ProfilerOverlay::startUp(cm_new<ProfilerOverlay>(mCamera->getViewport(), renderWindow));
  52. ProfilerOverlay::instance().show();
  53. }
  54. MainEditorWindow::~MainEditorWindow()
  55. {
  56. ProfilerOverlay::shutDown();
  57. cm_delete(mDockManager);
  58. cm_delete(mMenuBar);
  59. }
  60. void MainEditorWindow::movedOrResized()
  61. {
  62. EditorWindowBase::movedOrResized();
  63. updateAreas();
  64. }
  65. void MainEditorWindow::updateAreas()
  66. {
  67. UINT32 widgetWidth = (UINT32)std::max(0, (INT32)getWidth() - 2);
  68. UINT32 widgetHeight = (UINT32)std::max(0, (INT32)getHeight() - 2);
  69. UINT32 menuBarHeight = 15;
  70. mMenuBar->setArea(1, 1, widgetWidth, menuBarHeight);
  71. UINT32 dockHeight = (UINT32)std::max(0, (INT32)widgetHeight - (INT32)menuBarHeight);
  72. mDockManager->setArea(1, menuBarHeight + 1, widgetWidth, dockHeight);
  73. }
  74. }