Zum Inhalt springen

Irrlicht - from Noob to Pro: CWuerfel Header

Aus Wikibooks
//"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