BsSceneEditorWidget.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "BsSceneEditorWidget.h"
  2. #include "BsEditorWindow.h"
  3. #include "BsGUILabel.h"
  4. #include "BsGUIButton.h"
  5. #include "BsGUIInputBox.h"
  6. #include "BsGUIScrollArea.h"
  7. #include "BsGUIArea.h"
  8. #include "BsGUILayout.h"
  9. #include "BsEditorWidgetManager.h"
  10. #include "BsRenderTexture.h"
  11. #include "BsSceneObject.h"
  12. #include "BsSceneCameraController.h"
  13. #include "BsCamera.h"
  14. #include "BsGUIRenderTexture.h"
  15. namespace BansheeEngine
  16. {
  17. SceneEditorWidget* SceneEditorWidget::Instance = nullptr;
  18. SceneEditorWidget::SceneEditorWidget(const ConstructPrivately& dummy, EditorWidgetContainer& parentContainer)
  19. :EditorWidget<SceneEditorWidget>(HString(L"SceneEditorWidget"), parentContainer)
  20. {
  21. GUILayout& layout = mContent->getLayout();
  22. mSceneRenderTarget = RenderTexture::create(TEX_TYPE_2D, getWidth(), getHeight());
  23. mSceneRenderTarget->setPriority(1);
  24. HSceneObject sceneCameraGO = SceneObject::create("SceneCamera");
  25. mCamera = sceneCameraGO->addComponent<Camera>(mSceneRenderTarget, 0.0f, 0.0f, 1.0f, 1.0f);
  26. sceneCameraGO->setPosition(Vector3(0, 0, 0));
  27. sceneCameraGO->lookAt(Vector3(0, 0, -3));
  28. mCamera->setPriority(1);
  29. mCamera->setNearClipDistance(5);
  30. mCamera->setAspectRatio(getWidth() / (float)getHeight());
  31. sceneCameraGO->addComponent<SceneCameraController>();
  32. layout.addElement(GUIRenderTexture::create(mSceneRenderTarget));
  33. }
  34. SceneEditorWidget::~SceneEditorWidget()
  35. {
  36. }
  37. void SceneEditorWidget::_update()
  38. {
  39. }
  40. void SceneEditorWidget::doOnResized(UINT32 width, UINT32 height)
  41. {
  42. EditorWidget::doOnResized(width, height);
  43. // TODO - Need to resize render texture as the widget resizes
  44. //mSceneRenderTarget->set
  45. //mCamera->setAspectRatio(getWidth() / getHeight());
  46. }
  47. SceneEditorWidget* SceneEditorWidget::instance()
  48. {
  49. return Instance;
  50. }
  51. SceneEditorWidget* SceneEditorWidget::open()
  52. {
  53. return static_cast<SceneEditorWidget*>(EditorWidgetManager::instance().open(getTypeName()));
  54. }
  55. void SceneEditorWidget::close()
  56. {
  57. if (Instance != nullptr)
  58. EditorWidgetManager::instance().close(Instance);
  59. Instance = nullptr;
  60. }
  61. const String& SceneEditorWidget::getTypeName()
  62. {
  63. static String name = "SceneEditorWidget";
  64. return name;
  65. }
  66. }