Gem Illuminator
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
Public Slots | Signals | Public Member Functions | Protected Attributes | List of all members
Scene Class Reference

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. More...

#include <scene.h>

Inheritance diagram for Scene:

Public Slots

virtual void update (int elapsedTime)
 
void handleGameLost ()
 
void handleGameStarted ()
 
void registerNavigation (Navigation *navigation)
 
void rotateCurrentGem (const QQuaternion &quaternion)
 

Signals

void cubesChanged ()
 
void geometriesChanged ()
 
void rootLightRayChanged ()
 
void gameStarted ()
 
void gameLost ()
 

Public Member Functions

 Scene (QQuickItem *parent=0)
 Creates a new scene without any further information. Before use scene you have to set geometries(), rootLightRay(), camera(), previewCamera() and registerNavigation() More...
 
virtual ~Scene ()
 
QQmlListProperty< AbstractGemgeometriesQML ()
 Allow QML classes to read our gems. Initially it was planned to manipulate our gems from QML classes, but we did not get it to work. Now we create it over a JSON-object and set it once, which works. All in all gem manipulation from QML is magic and we do not know why and how it really works. More...
 
QList< AbstractGem * > geometries ()
 
Cameracamera () const
 
void setCamera (Camera *camera)
 
CamerapreviewCamera () const
 
void setPreviewCamera (Camera *camera)
 
AbstractGemfindGemWithBoundingSphereIntersectedBy (const LightRay &ray, QVector3D *collisionPoint=nullptr) const
 Finds the nearest gem, that bounding sphere is intersected by given ray. More...
 
AbstractGemfindGemIntersectedBy (const LightRay &ray, QVector3D *collisionPoint=nullptr) const
 Finds the nearest gem with bounding sphere intersected by given ray. More...
 
void setCurrentGem (AbstractGem *currentGem)
 Sets the gem, that will be controlled by player. More...
 
LightRayrootLightRay () const
 
void setRootLightRay (LightRay *rootLightRay)
 

Protected Attributes

SceneBoundsm_bounds
 
Cameram_camera
 
Cameram_previewCamera
 
AbstractGemm_currentGem
 
QList< AbstractGem * > m_gems
 
Navigationm_navigation
 
LightRaym_rootLightRay
 

Detailed Description

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.

Constructor & Destructor Documentation

Scene::Scene ( QQuickItem *  parent = 0)
explicit

Creates a new scene without any further information. Before use scene you have to set geometries(), rootLightRay(), camera(), previewCamera() and registerNavigation()

Parameters
parent
Scene::~Scene ( )
virtual

Member Function Documentation

Camera* Scene::camera ( ) const
void Scene::cubesChanged ( )
signal
AbstractGem * Scene::findGemIntersectedBy ( const LightRay ray,
QVector3D *  collisionPoint = nullptr 
) const

Finds the nearest gem with bounding sphere intersected by given ray.

Parameters
rayRay sent into scene to find gem.
collisionPointOptional parameter. The point of collision is written into.
Returns
Returns the nearst intersected gem. Never returns nullptr;
AbstractGem * Scene::findGemWithBoundingSphereIntersectedBy ( const LightRay ray,
QVector3D *  collisionPoint = nullptr 
) const

Finds the nearest gem, that bounding sphere is intersected by given ray.

Parameters
rayRay sent into scene to find gem.
collisionPointOptional parameter. The point of collision is written into. Only if no nullptr is returned this value is usable.
Returns
Returns the nearst intersected gem. nullptr.
void Scene::gameLost ( )
signal
void Scene::gameStarted ( )
signal
QList<AbstractGem *> Scene::geometries ( )
void Scene::geometriesChanged ( )
signal
QQmlListProperty< AbstractGem > Scene::geometriesQML ( )

Allow QML classes to read our gems. Initially it was planned to manipulate our gems from QML classes, but we did not get it to work. Now we create it over a JSON-object and set it once, which works. All in all gem manipulation from QML is magic and we do not know why and how it really works.

Returns
Returns a List of Gems which is supported by QML.
void Scene::handleGameLost ( )
slot
void Scene::handleGameStarted ( )
slot
Camera* Scene::previewCamera ( ) const
void Scene::registerNavigation ( Navigation navigation)
slot
LightRay* Scene::rootLightRay ( ) const
void Scene::rootLightRayChanged ( )
signal
void Scene::rotateCurrentGem ( const QQuaternion &  quaternion)
slot
void Scene::setCamera ( Camera camera)
void Scene::setCurrentGem ( AbstractGem currentGem)

Sets the gem, that will be controlled by player.

Parameters
currentGemThe gem that will be controlled by player.
void Scene::setPreviewCamera ( Camera camera)
void Scene::setRootLightRay ( LightRay rootLightRay)
void Scene::update ( int  elapsedTime)
virtualslot

Member Data Documentation

SceneBounds* Scene::m_bounds
protected
Camera* Scene::m_camera
protected
AbstractGem* Scene::m_currentGem
protected
QList<AbstractGem*> Scene::m_gems
protected
Navigation* Scene::m_navigation
protected
Camera* Scene::m_previewCamera
protected
LightRay* Scene::m_rootLightRay
protected

The documentation for this class was generated from the following files: