//"Include-Guard"
#ifndef __CWuerfel_H
#define __CWuerfel_H
//Einbinden der Header-Datei von Irrlicht
#include <Irrlicht.h>
//Einbinden der Namespaces
using namespace irr;
using namespace core;
using namespace video;
class CWuerfel : public scene::ISceneNode
{
public:
//Konstruktor
CWuerfel(scene::ISceneNode* parent, scene::ISceneManager* mgr, s32 id);
//Prozeduren
void SetSize(f32 fWidth, f32 fHeight, f32 fDepth); //Größe des Würfels angeben
stringw GetDebugString(); //Gibt den Debug-String des Würfels zurück
//Prozeduren zur Zeitsteuerung
void SetTimePos(u32 uiTime); //Zum Speichern des letzten Moments der Drehung
void TellCurrentTime(u32 uiTime); //Zum übergeben der aktuellen Zeit
void SetDeltaTime(u32 uiDeltaTime); //Zum Festlegen der Zeitspanne bis zur Drehung
void TurnIfDesired(); //Dreht den Würfel nach Ablauf der Zeitspanne
//Prozeduren vordefiniert durch die ISceneNode-Klasse von Irrlicht
virtual void OnRegisterSceneNode(); //Registrieren des Würfels im Szene-Manager
virtual void render(); //Zum Zeichnen des Würfels
virtual const core::aabbox3d<f32>& getBoundingBox() const; //Die Bounding-Box übergeben
virtual u32 getMaterialCount() const; //Anzahl der Materialien übergeben
virtual video::SMaterial& getMaterial(u32 i); //Ein bestimmtes Material übergeben
protected:
void Create_Vertices(); //Zum Erstellen der Eckpunkte
void Create_BoundingBox(); //Zum Erstellen der Bounding-Box
void Create_Indicies(); //Zum Erstellen des Indicies-Array
//Unsere Variablen
SMaterial mat; //Unser Material
core::aabbox3d<f32> ABox; //Unsere "Axis Aligned Bounding Box"
u16 uiIndicies[36]; //Das Array für unsere Indicies
S3DVertex cwVertices[8]; //Das Array vom Typ S3DVertex zum Speichern der Vertices
//Variablen zur Definitionshilfe
f32 fMaxLinks, fMaxRechts, //Zur Definition der Grenzen im Koordinatensystem
fMaxVorne, fMaxHinten,
fMaxOben, fMaxUnten,
cwWidth, cwHeight, cwDepth, //Zum Speichern der Dimensionen des Würfels
fWinkel; //Unser Winkel für die Rotation des Würfels
//Unsere Variablen für die Zeitmessung
u32 uAktuelleZeit; //Zum Speichern der aktuellen Zeit
u32 uZuletztGestoppt; //Die letzte gestoppte Zeit
u32 uDeltaTime; //Zeitspanne bis zu jeder Drehung
};
#endif