Gem Illuminator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
lightray.h
Go to the documentation of this file.
1 #ifndef LIGHTRAY_H
2 #define LIGHTRAY_H
3 
4 #include "player.h"
5 
6 #include <QObject>
7 #include <QVector3D>
8 
9 template <typename T> class QList;
10 class QOpenGLFunctions;
11 class QOpenGLShaderProgram;
12 class QVector3D;
13 
14 class AbstractGem;
15 class LightRayData;
16 class Scene;
17 
24 class LightRay : public QObject
25 {
26  Q_OBJECT
27  Q_PROPERTY(const QVector3D &startPosition READ startPosition WRITE setStartPosition NOTIFY startPositionChanged)
28  Q_PROPERTY(const QVector3D &endPosition READ endPosition WRITE setEndPosition NOTIFY endPositionChanged)
29  Q_PROPERTY(const QVector3D &direction READ direction)
30  Q_PROPERTY(const QVector3D &normalizedDirection READ normalizedDirection)
31  Q_PROPERTY(const QVector3D &color READ color WRITE setColor NOTIFY colorChanged)
32  Q_PROPERTY(Player *player READ player WRITE setPlayer NOTIFY playerChanged)
33  Q_PROPERTY(Scene *scene READ scene WRITE setScene NOTIFY sceneChanged)
34 
35 public:
36  explicit LightRay(QObject *parent = 0);
37  virtual ~LightRay();
38 
43  virtual void update(int timeDifference);
44 
49  QVector3D normalizedOrthogonalVector() const;
50 
56  QVector3D calculateColor();
57 
58 signals:
59  void colorChanged();
60  void startPositionChanged();
61  void endPositionChanged();
62  void playerChanged();
63  void sceneChanged();
64 
65 public slots:
66  const QVector3D &startPosition() const;
67  void setStartPosition(const QVector3D &position);
68  const QVector3D &endPosition() const;
69  void setEndPosition(const QVector3D &position);
70  const QVector3D &direction() const;
71  const QVector3D &normalizedDirection() const;
72  const QVector3D &color() const;
73  void setColor(const QVector3D &color);
74 
75  Player *player() const;
76  void setPlayer(Player *attachedPlayer);
77 
78  Scene *scene() const;
79  void setScene(Scene *owningScene);
80 
81  bool isStatic() const;
82  void setStatic();
83 
89  void setSelectedSuccessor(LightRay *successor);
90 
92 
93 protected:
95  void calculateSuccessors();
96 
97  AbstractGem *collidingGem() const;
98  void setCollidingGem(AbstractGem *gem);
99 
100 protected:
108 };
109 
110 #endif // LIGHTRAY_H
void playerChanged()
Definition: gemdata.h:6
LightRay * selectedSuccessor()
Returns the ray the player should move on after reaching end of current ray. In case no successors ex...
Definition: lightray.cpp:182
The LightRay class describes the lightrays sent into Scene. Because LightRays are sent into Scene ri...
Definition: lightray.h:24
Player * player() const
const QVector3D & direction() const
void calculateSuccessors()
Definition: lightray.cpp:203
void colorChanged()
virtual void update(int timeDifference)
Updates our game. The player will be moved.
Definition: lightray.cpp:34
const QVector3D & normalizedDirection() const
void setColor(const QVector3D &color)
Definition: lightray.cpp:136
LightRayData * m_data
Definition: lightray.h:102
const QVector3D & startPosition() const
virtual ~LightRay()
Definition: lightray.cpp:23
void sceneChanged()
bool isPlayerBeforeCollisionPoint()
Definition: lightray.cpp:223
const QList< LightRay * > & successors()
Definition: lightray.cpp:198
LightRay * m_selectedSuccessor
Definition: lightray.h:104
AbstractGem * collidingGem() const
Definition: lightray.cpp:121
LightRay(QObject *parent=0)
Definition: lightray.cpp:11
The Scene class provides access to geometry and collision detection methods. Furthermore, some game logic is implemented, so the scene holds the player, the gem influenced by player and cameras.
Definition: scene.h:22
void setSelectedSuccessor(LightRay *successor)
Definition: lightray.cpp:193
Player * m_player
Definition: lightray.h:106
Scene * m_scene
Definition: lightray.h:107
QList< LightRay * > * m_successors
Definition: lightray.h:103
void setEndPosition(const QVector3D &position)
Definition: lightray.cpp:102
void setPlayer(Player *attachedPlayer)
Definition: lightray.cpp:150
void startPositionChanged()
void endPositionChanged()
const QVector3D & endPosition() const
QVector3D normalizedOrthogonalVector() const
Calculates a normalized vector that is orthogonal to direction().
Definition: lightray.cpp:78
AbstractGem * m_collidingGem
Definition: lightray.h:101
QVector3D calculateColor()
calculateSuccessorColor calculates the successor color based on its normalized direction The color va...
Definition: lightray.cpp:215
const QVector3D & color() const
void setStatic()
Definition: lightray.cpp:177
The LightRayData class stores data of a LightRay. The LightRayData doesn't inherit from QObject...
Definition: lightraydata.h:13
void setCollidingGem(AbstractGem *gem)
Definition: lightray.cpp:126
void setScene(Scene *owningScene)
Definition: lightray.cpp:162
The Player class' only responsibilities are riding on lightrays and updating the camera.
Definition: player.h:14
bool m_isStatic
Definition: lightray.h:105
void setStartPosition(const QVector3D &position)
Definition: lightray.cpp:88
The AbstractGem class is the base class of all gems. As base class all required information of a gem...
Definition: abstractgem.h:39
bool isStatic() const
Definition: lightray.cpp:172
Scene * scene() const