| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- // Portions Copyright (c) 2008-2015 the Urho3D project.
- //
- // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
- // LICENSE: Atomic Game Engine Editor and Tools EULA
- // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
- // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
- //
- #pragma once
- #include <Atomic/Core/Object.h>
- #include <Atomic/UI/UISceneView.h>
- using namespace Atomic;
- namespace Atomic
- {
- class Scene;
- class Node;
- class Camera;
- class DebugRenderer;
- class Octree;
- }
- namespace AtomicEditor
- {
- class SceneEditor3D;
- class SceneView3D: public UISceneView
- {
- OBJECT(SceneView3D);
- public:
- SceneView3D(Context* context, SceneEditor3D* sceneEditor);
- virtual ~SceneView3D();
- Ray GetCameraRay();
- bool OnEvent(const TBWidgetEvent &ev);
- void SetPitch(float pitch) { pitch_ = pitch; }
- void SetYaw(float yaw) { yaw_ = yaw; }
- void FrameSelection();
- void Enable();
- void Disable();
- bool IsEnabled() { return enabled_; }
- DebugRenderer* GetDebugRenderer() { return debugRenderer_; }
- SceneEditor3D* GetSceneEditor3D() { return sceneEditor_; }
- private:
- bool MouseInView();
- bool GetOrbitting();
- bool GetZooming();
- void HandleMouseMove(StringHash eventType, VariantMap& eventData);
- void UpdateDragNode(int mouseX, int mouseY);
- void HandleDragEnded(StringHash eventType, VariantMap& eventData);
- void HandleDragExitWidget(StringHash eventType, VariantMap& eventData);
- void HandleDragEnterWidget(StringHash eventType, VariantMap& eventData);
- void HandleUpdate(StringHash eventType, VariantMap& eventData);
- void HandlePostRenderUpdate(StringHash eventType, VariantMap& eventData);
- void HandleUIWidgetFocusEscaped(StringHash eventType, VariantMap& eventData);
- void HandleUIUnhandledShortcut(StringHash eventType, VariantMap& eventData);
- void MoveCamera(float timeStep);
- WeakPtr<SceneEditor3D> sceneEditor_;
- float yaw_;
- float pitch_;
- bool mouseLeftDown_;
- bool mouseMoved_;
- bool enabled_;
- bool cameraMove_;
- float cameraMoveTime_;
- Vector3 cameraMoveStart_;
- Vector3 cameraMoveTarget_;
- SharedPtr<Camera> camera_;
- SharedPtr<DebugRenderer> debugRenderer_;
- SharedPtr<Octree> octree_;
- BoundingBox framedBBox_;
- SharedPtr<Scene> preloadResourceScene_;
- String dragAssetGUID_;
- SharedPtr<Node> dragNode_;
- };
- }
|