#pragma once #include "Mat4.h" namespace Framework { struct MausEreignis3D; struct TastaturEreignis; class Render3D; //! Render3D.h //! Ein Objekt, das von der Bildschirm3D Klasse gezeichnet werden kann. class Zeichnung3D { protected: Vec3< float > pos; //! Position des Objekts Vec3< float > angle; //! Drehungswinkel für x, y und z Mat4< float > welt; //! Wlet translation matrix float radius; //! Der radius einer Kugel, der das gesamte Objekt umschließt bool alpha; //! Speichert ob das Objekt teilweise oder ganz transparente stellen enthält bool rend; float size; int ref; public: //! Konstruktor __declspec( dllexport ) Zeichnung3D(); __declspec( dllexport ) virtual ~Zeichnung3D(); //! Setzt die Position der Zeichnung in der Welt //! \param p Die Position __declspec( dllexport ) void setPosition( Vec3< float > &p ); //! Setzt die Position der Zeichnung in der Welt //! \param x Die x Position //! \param y Die y Position //! \param z Die z Position __declspec( dllexport ) void setPosition( float x, float y, float z ); //! Setzt die Position der Zeichnung in der Welt //! \param x Die x Position __declspec( dllexport ) void setX( float x ); //! Setzt die Position der Zeichnung in der Welt //! \param y Die y Position __declspec( dllexport ) void setY( float y ); //! Setzt die Position der Zeichnung in der Welt //! \param z Die z Position __declspec( dllexport ) void setZ( float z ); //! Setzt die Drehung der Zeichnung in der Welt //! \param d Die drehung um die x, y und z achse __declspec( dllexport ) void setDrehung( Vec3< float > &d ); //! Setzt die Drehung der Zeichnung in der Welt //! \param xWinkel Die drehung um die x achse //! \param yWinkel Die drehung um die y achse //! \param zWinkel Die drehung um die z achse __declspec( dllexport ) void setDrehung( float xWinkel, float yWinkel, float zWinkel ); //! Setzt die Drehung der Zeichnung in der Welt //! \param winkel Die drehung um die x achse __declspec( dllexport ) void setDrehungX( float winkel ); //! Setzt die Drehung der Zeichnung in der Welt //! \param winkel Die drehung um die y achse __declspec( dllexport ) void setDrehungY( float winkel ); //! Setzt die Drehung der Zeichnung in der Welt //! \param winkel Die drehung um die z achse __declspec( dllexport ) void setDrehungZ( float winkel ); //! Legt fest, ob das Objekt teilweise oder ganz transparente stellen enthält //! \param a true, wenn teilweise oder ganz transparente stellen vorhanden sind __declspec( dllexport ) void setAlpha( bool a ); //! Errechnet die Matrizen aller Knochen des Skeletts der Zeichnung //! \param viewProj Die miteinander multiplizierten Kameramatrizen //! \param matBuffer Ein Array mit Matrizen, der gefüllt werden soll //! \return Die Anzahl der Matrizen, die die Zeichnung benötigt __declspec( dllexport ) virtual int errechneMatrizen( Mat4< float > &viewProj, Mat4< float > *matBuffer ); //! Verarbeitet ein Mausereignis //! \param me Das Mausereignis, das verarbeitet werden soll __declspec( dllexport ) virtual void doMausEreignis( MausEreignis3D &me ); //! Verarbeitet ein Tastaturereignis //! \param te das Tastaturereignis, das verarbeitet werden soll __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te ); //! Verarbeitet die vergangene Zeit //! \param tickval Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist //! \return true, wenn sich das Objekt verändert hat, false sonnst. __declspec( dllexport ) virtual bool tick( double tickval ); //! Gibt zurück, ob das Objekt teilweise oder ganz transparente stellen enthält __declspec( dllexport ) bool hatAlpha() const; //! Gibt den radius einer Kugel zurück, die das gesammte Model umschließt __declspec( dllexport ) float getRadius() const; //! Gibt einen Punkt zurück, der die Position der Zeichnung in der Welt darstellt __declspec( dllexport ) const Vec3< float > &getPos() const; //! Gibt die X Position der Zeichnung in der Welt zurück __declspec( dllexport ) float getX() const; //! Gibt die Y Position der Zeichnung in der Welt zurück __declspec( dllexport ) float getY() const; //! Gibt die Z Position der Zeichnung in der Welt zurück __declspec( dllexport ) float getZ() const; //! Gibt einen Vektor zurück, der die drehung der Zeichnung in der Welt darstellt. x ist die Drehung um die X Achse im Bogenmaß usw __declspec( dllexport ) const Vec3< float > &getDrehung() const; //! Gibt die Drehung um die X Achse im Bogenmaß zurück __declspec( dllexport ) float getXDrehung() const; //! Gibt die Drehung um die Y Achse im Bogenmaß zurück __declspec( dllexport ) float getYDrehung() const; //! Gibt die Drehung um die Z Achse im Bogenmaß zurück __declspec( dllexport ) float getZDrehung() const; //! Gibt die Matrix zurück, die die Zeichnung in den Welt Raum übersetzt __declspec( dllexport ) const Mat4< float > &getMatrix() const; //! Erhöht den Reference Counting Zähler. //! \return this. __declspec( dllexport ) Zeichnung3D *getThis(); //! Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht. //! \return 0. __declspec( dllexport ) virtual Zeichnung3D *release(); }; }