BsSceneEditorWidget.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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. UINT32 width = 200; // TODO - Use proper width/height once I have texture resize working. Have some mininum limit (e.g. 4x4)
  23. UINT32 height = 200;
  24. mSceneRenderTarget = RenderTexture::create(TEX_TYPE_2D, width, height);
  25. mSceneRenderTarget->setPriority(1);
  26. HSceneObject sceneCameraSO = SceneObject::create("SceneCamera");
  27. mCamera = sceneCameraSO->addComponent<Camera>(mSceneRenderTarget, 0.0f, 0.0f, 1.0f, 1.0f);
  28. sceneCameraSO->setPosition(Vector3(0, 0, 0));
  29. sceneCameraSO->lookAt(Vector3(0, 0, -3));
  30. // DEBUG ONLY
  31. sceneCameraSO->setPosition(Vector3(-130.0f, 140.0f, 650.0f));
  32. sceneCameraSO->lookAt(Vector3(0, 0, 0));
  33. mCamera->setPriority(1);
  34. mCamera->setNearClipDistance(5);
  35. mCamera->setAspectRatio(width / (float)height);
  36. sceneCameraSO->addComponent<SceneCameraController>();
  37. layout.addElement(GUIRenderTexture::create(mSceneRenderTarget));
  38. }
  39. SceneEditorWidget::~SceneEditorWidget()
  40. {
  41. }
  42. void SceneEditorWidget::_update()
  43. {
  44. }
  45. void SceneEditorWidget::doOnResized(UINT32 width, UINT32 height)
  46. {
  47. EditorWidget::doOnResized(width, height);
  48. // TODO - Need to resize render texture as the widget resizes
  49. //mSceneRenderTarget->set
  50. //mCamera->setAspectRatio(getWidth() / getHeight());
  51. }
  52. SceneEditorWidget* SceneEditorWidget::instance()
  53. {
  54. return Instance;
  55. }
  56. SceneEditorWidget* SceneEditorWidget::open()
  57. {
  58. return static_cast<SceneEditorWidget*>(EditorWidgetManager::instance().open(getTypeName()));
  59. }
  60. void SceneEditorWidget::close()
  61. {
  62. if (Instance != nullptr)
  63. EditorWidgetManager::instance().close(Instance);
  64. Instance = nullptr;
  65. }
  66. const String& SceneEditorWidget::getTypeName()
  67. {
  68. static String name = "SceneEditorWidget";
  69. return name;
  70. }
  71. }