14 class QOpenGLFunctions;
45 virtual void update()
final;
56 virtual void render(QOpenGLFunctions & gl)
final;
97 virtual void moveEvent(QVector3D movement);
109 const QVector3D &
minBB()
const;
114 const QVector3D &
maxBB()
const;
143 QVector3D
scale()
const;
174 virtual void localRender(QOpenGLFunctions & gl)
const;
221 void setScale(
const QVector3D & scale);
QVector3D worldFront()
Definition: abstractgraphicsobject.cpp:142
virtual void localRenderSetup(QOpenGLFunctions &gl, Program &program) const
override this method to customize the rendering process
Definition: abstractgraphicsobject.cpp:228
QMatrix4x4 modelMatrix() const
Definition: abstractgraphicsobject.cpp:165
const QVector3D & minBB() const
Definition: abstractgraphicsobject.cpp:117
QVector3D worldUp()
Definition: abstractgraphicsobject.cpp:137
void setScale(const QVector3D &scale)
sets the scale and invalidates the model matrices
Definition: abstractgraphicsobject.cpp:259
virtual void onBindCamera()
override this method to perform specific actions once a camera has been bound
Definition: abstractgraphicsobject.cpp:97
const QVector3D & maxBB() const
Definition: abstractgraphicsobject.cpp:127
virtual void localRenderCleanup(QOpenGLFunctions &gl, Program &program) const
override this method to customize the rendering process
Definition: abstractgraphicsobject.cpp:232
std::shared_ptr< std::unique_ptr< Material > > m_material
Definition: abstractgraphicsobject.h:260
virtual void doForAllChildren(std::function< void(AbstractGraphicsObject &)> callback)
override this method to make child objects known
Definition: abstractgraphicsobject.cpp:241
void dispose()
remove this object from the world and delete it as soon as it is safe to do so
Definition: abstractgraphicsobject.cpp:285
virtual void moveEvent(QVector3D movement)
override this method to react to move events received by a bound camera
Definition: abstractgraphicsobject.cpp:109
bool m_modelMatrixInvertedChanged
Definition: abstractgraphicsobject.h:267
bool m_modelMatrixChanged
Definition: abstractgraphicsobject.h:265
bool m_validState
Definition: abstractgraphicsobject.h:254
void setPosition(const QVector3D &position)
sets the position and invalidates the model matrices
Definition: abstractgraphicsobject.cpp:245
QVector3D worldSide()
Definition: abstractgraphicsobject.cpp:147
virtual void rotateEvent(QVector2D rotation)
override this method to react to rotate events received by a bound camera
Definition: abstractgraphicsobject.cpp:113
The AbstractGraphicsObject class is the root of a class hierarchy of objects that contain independen ...
Definition: abstractgraphicsobject.h:27
virtual void bindCamera(Camera *camera)
binds a camera to track this object
Definition: abstractgraphicsobject.cpp:86
virtual void render(QOpenGLFunctions &gl) final
render object hierarchy beginning at this object
Definition: abstractgraphicsobject.cpp:53
virtual bool localRenderEnabled() const
override this method to disable or enable rendering conditionally
Definition: abstractgraphicsobject.cpp:236
QVector3D m_scale
Definition: abstractgraphicsobject.h:264
QMatrix4x4 modelMatrixInverted() const
Definition: abstractgraphicsobject.cpp:178
virtual void localRender(QOpenGLFunctions &gl) const
this method contains the default render code using m_geometry, m_program and m_material ...
Definition: abstractgraphicsobject.cpp:192
std::shared_ptr< std::unique_ptr< Geometry > > m_geometry
Definition: abstractgraphicsobject.h:259
QVector3D modelToWorld(const QVector3D &vModel)
Definition: abstractgraphicsobject.cpp:279
The program class implements the basic functionality used for binding programs to openGL...
Definition: program.h:18
virtual void unbindCamera(Camera *camera)
release a camera so that it wont track this object any longer
Definition: abstractgraphicsobject.cpp:72
The World class represents a running game instance and contains all graphical (3D) elements of the sc...
Definition: world.h:46
virtual void onUnbindCamera()
override this method to perform specific actions once a camera has been released
Definition: abstractgraphicsobject.cpp:101
void setRotation(const QQuaternion &rotation)
sets the rotation and invalidates the model matrices
Definition: abstractgraphicsobject.cpp:252
virtual void update() final
update object hierarchy beginning at this object
Definition: abstractgraphicsobject.cpp:32
virtual void localUpdate()
override this method to update this objects state
Definition: abstractgraphicsobject.cpp:188
QMatrix4x4 m_modelMatrix
Definition: abstractgraphicsobject.h:266
QVector3D m_position
Definition: abstractgraphicsobject.h:262
std::shared_ptr< std::unique_ptr< Program > > m_program
Definition: abstractgraphicsobject.h:258
virtual void adjustCamera()
override this method to adjust the parameters of a bound camera according to this objects own state ...
Definition: abstractgraphicsobject.cpp:105
QMatrix4x4 m_modelMatrixInverted
Definition: abstractgraphicsobject.h:268
Definition: eventhandler.cpp:18
World & m_world
Definition: abstractgraphicsobject.h:253
The Camera class manages view and projection matrices that define a view of a 3D scene.
Definition: camera.h:26
QQuaternion rotation() const
Definition: abstractgraphicsobject.cpp:156
QVector3D worldToModel(const QVector3D &vWorld)
Definition: abstractgraphicsobject.cpp:273
AbstractGraphicsObject(World &world)
Definition: abstractgraphicsobject.cpp:16
virtual ~AbstractGraphicsObject()
Definition: abstractgraphicsobject.cpp:28
Camera * m_camera
Definition: abstractgraphicsobject.h:256
QQuaternion m_rotation
Definition: abstractgraphicsobject.h:263
QVector3D scale() const
Definition: abstractgraphicsobject.cpp:160
QVector3D position() const
Definition: abstractgraphicsobject.cpp:152