aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/source/Irrlicht/CSceneNodeAnimatorCameraMaya.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/source/Irrlicht/CSceneNodeAnimatorCameraMaya.h')
-rw-r--r--src/others/irrlicht-1.8.1/source/Irrlicht/CSceneNodeAnimatorCameraMaya.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/source/Irrlicht/CSceneNodeAnimatorCameraMaya.h b/src/others/irrlicht-1.8.1/source/Irrlicht/CSceneNodeAnimatorCameraMaya.h
new file mode 100644
index 0000000..495a77b
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/source/Irrlicht/CSceneNodeAnimatorCameraMaya.h
@@ -0,0 +1,116 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#ifndef __C_SCENE_NODE_ANIMATOR_CAMERA_MAYA_H_INCLUDED__
6#define __C_SCENE_NODE_ANIMATOR_CAMERA_MAYA_H_INCLUDED__
7
8#include "ISceneNodeAnimatorCameraMaya.h"
9#include "ICameraSceneNode.h"
10#include "vector2d.h"
11
12namespace irr
13{
14
15namespace gui
16{
17 class ICursorControl;
18}
19
20namespace scene
21{
22
23 //! Special scene node animator for FPS cameras
24 /** This scene node animator can be attached to a camera to make it act
25 like a 3d modelling tool camera
26 */
27 class CSceneNodeAnimatorCameraMaya : public ISceneNodeAnimatorCameraMaya
28 {
29 public:
30 //! Constructor
31 CSceneNodeAnimatorCameraMaya(gui::ICursorControl* cursor, f32 rotateSpeed = -1500.f,
32 f32 zoomSpeed = 200.f, f32 translationSpeed = 1500.f, f32 distance=70.f);
33
34 //! Destructor
35 virtual ~CSceneNodeAnimatorCameraMaya();
36
37 //! Animates the scene node, currently only works on cameras
38 virtual void animateNode(ISceneNode* node, u32 timeMs);
39
40 //! Event receiver
41 virtual bool OnEvent(const SEvent& event);
42
43 //! Returns the speed of movement in units per millisecond
44 virtual f32 getMoveSpeed() const;
45
46 //! Sets the speed of movement in units per millisecond
47 virtual void setMoveSpeed(f32 moveSpeed);
48
49 //! Returns the rotation speed
50 virtual f32 getRotateSpeed() const;
51
52 //! Set the rotation speed
53 virtual void setRotateSpeed(f32 rotateSpeed);
54
55 //! Returns the zoom speed
56 virtual f32 getZoomSpeed() const;
57
58 //! Set the zoom speed
59 virtual void setZoomSpeed(f32 zoomSpeed);
60
61 //! Returns the current distance, i.e. orbit radius
62 virtual f32 getDistance() const;
63
64 //! Set the distance
65 virtual void setDistance(f32 distance);
66
67 //! This animator will receive events when attached to the active camera
68 virtual bool isEventReceiverEnabled() const
69 {
70 return true;
71 }
72
73 //! Returns type of the scene node
74 virtual ESCENE_NODE_ANIMATOR_TYPE getType() const
75 {
76 return ESNAT_CAMERA_MAYA;
77 }
78
79 //! Creates a clone of this animator.
80 /** Please note that you will have to drop
81 (IReferenceCounted::drop()) the returned pointer after calling
82 this. */
83 virtual ISceneNodeAnimator* createClone(ISceneNode* node, ISceneManager* newManager=0);
84
85 private:
86
87 void allKeysUp();
88 void animate();
89 bool isMouseKeyDown(s32 key) const;
90
91 bool MouseKeys[3];
92
93 gui::ICursorControl *CursorControl;
94 scene::ICameraSceneNode* OldCamera;
95 core::vector3df OldTarget;
96 core::vector3df LastCameraTarget; // to find out if the camera target was moved outside this animator
97 core::position2df RotateStart;
98 core::position2df ZoomStart;
99 core::position2df TranslateStart;
100 core::position2df MousePos;
101 f32 ZoomSpeed;
102 f32 RotateSpeed;
103 f32 TranslateSpeed;
104 f32 CurrentZoom;
105 f32 RotX, RotY;
106 bool Zooming;
107 bool Rotating;
108 bool Moving;
109 bool Translating;
110 };
111
112} // end namespace scene
113} // end namespace irr
114
115#endif
116