Gem Illuminator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
gemdata.h
Go to the documentation of this file.
1 #ifndef GEMDATA_H
2 #define GEMDATA_H
3 
4 #include <QObject>
5 
6 template<typename T> class QList;
7 class QMatrix4x4;
8 class QQuaternion;
9 class QVector3D;
10 
11 class AbstractGem;
12 enum class GemType;
13 class Triangle;
14 
20 class GemData
21 {
22 public:
26  GemData();
31  GemData(const GemData &ohterGemData);
32 
33  ~GemData();
34 
35  GemData &operator=(const GemData &rhs);
36 
37  const QVector3D &color() const;
38  void setColor(const QVector3D &color);
39 
44  const QMatrix4x4 &model() const;
45 
46  const QVector3D &position() const;
47  void setPosition(const QVector3D &position);
48 
49  const QQuaternion &rotation() const;
50  void setRotation(const QQuaternion &rotation);
51 
52  float scale() const;
53  void setScale(float scale);
54 
55  const QList<Triangle *> &triangles() const;
56  void setTriangles(const QList<Triangle *> &triangles);
57 
58  GemType type() const;
59  void setType(GemType type);
60 
61 protected:
62  void copyTriangles(const QList<Triangle *> &triangles);
63  void calculateModelMatrix() const;
64 
65 protected:
66  QVector3D *m_color;
67  mutable bool m_isModelInvalid;
68  mutable QMatrix4x4 *m_model;
69  QVector3D *m_position;
70  QQuaternion *m_rotation;
71  float m_scale;
74 };
75 
76 bool operator==(const GemData &lhs, const GemData &rhs);
77 bool operator!=(const GemData &lhs, const GemData &rhs);
78 uint qHash(const GemData &key, uint seed);
79 
80 #endif // GEMDATA_H
QQuaternion * m_rotation
Definition: gemdata.h:70
Definition: gemdata.h:6
GemData & operator=(const GemData &rhs)
Definition: gemdata.cpp:47
GemType
An enum describing current gem type. This enum is used for faster comparision of gems, because all gems of one type have same (objectspace) vertices.
Definition: abstractgem.h:22
const QVector3D & position() const
Definition: gemdata.cpp:80
QVector3D * m_position
Definition: gemdata.h:69
QVector3D * m_color
Definition: gemdata.h:66
The Triangle class represents a triangle in three dimensional space.
Definition: triangle.h:11
QList< Triangle * > * m_triangles
Definition: gemdata.h:72
const QMatrix4x4 & model() const
Returns on demand the modelmatrix of current gemData.
Definition: gemdata.cpp:72
The GemData class stores all required information to describe an AbstractGem. The advantage of GemDa...
Definition: gemdata.h:20
const QQuaternion & rotation() const
Definition: gemdata.cpp:94
void copyTriangles(const QList< Triangle * > &triangles)
Definition: gemdata.cpp:145
bool operator!=(const GemData &lhs, const GemData &rhs)
Definition: gemdata.cpp:194
void setScale(float scale)
Definition: gemdata.cpp:113
void setRotation(const QQuaternion &rotation)
Definition: gemdata.cpp:99
const QVector3D & color() const
Definition: gemdata.cpp:59
bool operator==(const GemData &lhs, const GemData &rhs)
Definition: gemdata.cpp:165
~GemData()
Definition: gemdata.cpp:35
void calculateModelMatrix() const
Definition: gemdata.cpp:156
float m_scale
Definition: gemdata.h:71
QMatrix4x4 * m_model
Definition: gemdata.h:68
void setTriangles(const QList< Triangle * > &triangles)
Definition: gemdata.cpp:127
uint qHash(const GemData &key, uint seed)
Definition: gemdata.cpp:185
GemData()
Creates a new GemData with all values initialized to zero.
Definition: gemdata.cpp:10
bool m_isModelInvalid
Definition: gemdata.h:67
GemType m_type
Definition: gemdata.h:73
void setPosition(const QVector3D &position)
Definition: gemdata.cpp:85
void setColor(const QVector3D &color)
Definition: gemdata.cpp:64
The AbstractGem class is the base class of all gems. As base class all required information of a gem...
Definition: abstractgem.h:39
const QList< Triangle * > & triangles() const
Definition: gemdata.cpp:122
void setType(GemType type)
Definition: gemdata.cpp:137
GemType type() const
Definition: gemdata.cpp:132
float scale() const
Definition: gemdata.cpp:108