summaryrefslogtreecommitdiffstats
path: root/cameranodeobject.h
diff options
context:
space:
mode:
Diffstat (limited to 'cameranodeobject.h')
-rw-r--r--cameranodeobject.h51
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