diff options
Diffstat (limited to 'cameranodeobject.h')
-rw-r--r-- | cameranodeobject.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/cameranodeobject.h b/cameranodeobject.h new file mode 100644 index 0000000..9c296fd --- /dev/null +++ b/cameranodeobject.h @@ -0,0 +1,51 @@ +#ifndef CAMERANODEOBJECT_H +#define CAMERANODEOBJECT_H + +#include <QObject> + +namespace Ogre { +class SceneNode; +class Camera; +} + +class CameraNodeObject : public QObject +{ + Q_OBJECT + Q_PROPERTY(qreal yaw READ yaw WRITE setYaw) + Q_PROPERTY(qreal pitch READ pitch WRITE setPitch) + Q_PROPERTY(qreal zoom READ zoom WRITE setZoom) +public: + explicit CameraNodeObject(Ogre::Camera *cam, QObject *parent = 0); + + Ogre::SceneNode *sceneNode() const + { return m_node; } + Ogre::Camera *camera() const + { return m_camera; } + + qreal yaw() const + { return m_yaw; } + qreal pitch() const + { return m_pitch; } + qreal zoom() const + { return m_zoom; } + void setYaw(qreal y) + { m_yaw = y; updateRotation(); } + void setPitch(qreal p) + { m_pitch = p; updateRotation(); } + void setZoom(qreal z); + +public Q_SLOTS: + void resetPosition(); + +private: + void updateRotation(); + + Ogre::SceneNode *m_node; + Ogre::Camera *m_camera; + + qreal m_yaw; + qreal m_pitch; + qreal m_zoom; +}; + +#endif // CAMERANODEOBJECT_H |