BsSceneEditorWidget.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsEditorPrerequisites.h"
  5. #include "BsEditorWidget.h"
  6. #include "BsServiceLocator.h"
  7. namespace BansheeEngine
  8. {
  9. class SceneEditorWidget : public EditorWidget<SceneEditorWidget>
  10. {
  11. public:
  12. SceneEditorWidget(const ConstructPrivately& dummy, EditorWidgetContainer& parentContainer);
  13. virtual ~SceneEditorWidget();
  14. virtual void _update();
  15. static SceneEditorWidget* instance();
  16. static SceneEditorWidget* open();
  17. static void close();
  18. static const String& getTypeName();
  19. const HCamera& getSceneCamera() const { return mCamera; }
  20. protected:
  21. void doOnResized(UINT32 width, UINT32 height);
  22. void doOnParentChanged();
  23. void determineParentWindow();
  24. void updateRenderTexture(UINT32 width, UINT32 height);
  25. void render(const Viewport* viewport, DrawList& drawList);
  26. bool toSceneViewPos(const Vector2I& screenPos, Vector2I& scenePos);
  27. /**
  28. * @brief Called whenever a pointer (e.g. mouse cursor) is moved.
  29. */
  30. void onPointerMoved(const PointerEvent& event);
  31. /**
  32. * @brief Called whenever a pointer button (e.g. mouse button) is released.
  33. */
  34. void onPointerReleased(const PointerEvent& event);
  35. /**
  36. * @brief Called whenever a pointer button (e.g. mouse button) is pressed.
  37. */
  38. void onPointerPressed(const PointerEvent& event);
  39. private:
  40. static SceneEditorWidget* Instance;
  41. RenderWindowPtr mParentWindow;
  42. RenderTexturePtr mSceneRenderTarget;
  43. GUIRenderTexture* mGUIRenderTexture;
  44. HCamera mCamera;
  45. GameObjectHandle<SceneCameraController> mCameraController;
  46. SceneGrid* mSceneGrid;
  47. bool mLeftButtonPressed;
  48. HEvent mRenderCallback;
  49. HEvent mOnPointerMovedConn;
  50. HEvent mOnPointerPressedConn;
  51. HEvent mOnPointerReleasedConn;
  52. };
  53. }