SceneView3D.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. // Portions Copyright (c) 2008-2015 the Urho3D project.
  2. //
  3. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  4. // LICENSE: Atomic Game Engine Editor and Tools EULA
  5. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  6. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  7. //
  8. #pragma once
  9. #include <Atomic/Core/Object.h>
  10. #include <Atomic/UI/UISceneView.h>
  11. using namespace Atomic;
  12. namespace Atomic
  13. {
  14. class Scene;
  15. class Node;
  16. class Camera;
  17. class DebugRenderer;
  18. class Octree;
  19. }
  20. namespace AtomicEditor
  21. {
  22. class SceneEditor3D;
  23. class SceneView3D: public UISceneView
  24. {
  25. OBJECT(SceneView3D);
  26. public:
  27. SceneView3D(Context* context, SceneEditor3D* sceneEditor);
  28. virtual ~SceneView3D();
  29. Ray GetCameraRay();
  30. bool OnEvent(const TBWidgetEvent &ev);
  31. void SetPitch(float pitch) { pitch_ = pitch; }
  32. void SetYaw(float yaw) { yaw_ = yaw; }
  33. void FrameSelection();
  34. void Enable();
  35. void Disable();
  36. bool IsEnabled() { return enabled_; }
  37. DebugRenderer* GetDebugRenderer() { return debugRenderer_; }
  38. SceneEditor3D* GetSceneEditor3D() { return sceneEditor_; }
  39. private:
  40. bool MouseInView();
  41. bool GetOrbitting();
  42. bool GetZooming();
  43. void HandleMouseMove(StringHash eventType, VariantMap& eventData);
  44. void UpdateDragNode(int mouseX, int mouseY);
  45. void HandleDragEnded(StringHash eventType, VariantMap& eventData);
  46. void HandleDragExitWidget(StringHash eventType, VariantMap& eventData);
  47. void HandleDragEnterWidget(StringHash eventType, VariantMap& eventData);
  48. void HandleUpdate(StringHash eventType, VariantMap& eventData);
  49. void HandlePostRenderUpdate(StringHash eventType, VariantMap& eventData);
  50. void HandleUIWidgetFocusEscaped(StringHash eventType, VariantMap& eventData);
  51. void HandleUIUnhandledShortcut(StringHash eventType, VariantMap& eventData);
  52. void MoveCamera(float timeStep);
  53. WeakPtr<SceneEditor3D> sceneEditor_;
  54. float yaw_;
  55. float pitch_;
  56. bool mouseLeftDown_;
  57. bool mouseMoved_;
  58. bool enabled_;
  59. bool cameraMove_;
  60. float cameraMoveTime_;
  61. Vector3 cameraMoveStart_;
  62. Vector3 cameraMoveTarget_;
  63. SharedPtr<Camera> camera_;
  64. SharedPtr<DebugRenderer> debugRenderer_;
  65. SharedPtr<Octree> octree_;
  66. BoundingBox framedBBox_;
  67. SharedPtr<Scene> preloadResourceScene_;
  68. String dragAssetGUID_;
  69. SharedPtr<Node> dragNode_;
  70. };
  71. }