#pragma once #include "Mat4.h" #include "ReferenceCounter.h" namespace Framework { struct MausEreignis3D; struct TastaturEreignis; class Render3D; //! Render3D.h //! Ein Objekt, das von der Bildschirm3D Klasse gezeichnet werden kann. class Zeichnung3D : public virtual ReferenceCounter { 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; public: //! Konstruktor DLLEXPORT Zeichnung3D(); DLLEXPORT virtual ~Zeichnung3D(); //! Setzt die Position der Zeichnung in der Welt //! \param p Die Position 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 DLLEXPORT void setPosition( float x, float y, float z ); //! Setzt die Position der Zeichnung in der Welt //! \param x Die x Position DLLEXPORT void setX( float x ); //! Setzt die Position der Zeichnung in der Welt //! \param y Die y Position DLLEXPORT void setY( float y ); //! Setzt die Position der Zeichnung in der Welt //! \param z Die z Position DLLEXPORT void setZ( float z ); //! Setzt die Drehung der Zeichnung in der Welt //! \param d Die drehung um die x, y und z achse 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 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 DLLEXPORT void setDrehungX( float winkel ); //! Setzt die Drehung der Zeichnung in der Welt //! \param winkel Die drehung um die y achse DLLEXPORT void setDrehungY( float winkel ); //! Setzt die Drehung der Zeichnung in der Welt //! \param winkel Die drehung um die z achse 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 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 DLLEXPORT virtual int errechneMatrizen( Mat4< float > &viewProj, Mat4< float > *matBuffer ); //! Verarbeitet ein Mausereignis //! \param me Das Mausereignis, das verarbeitet werden soll DLLEXPORT virtual void doMausEreignis( MausEreignis3D &me ); //! Verarbeitet ein Tastaturereignis //! \param te das Tastaturereignis, das verarbeitet werden soll 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. DLLEXPORT virtual bool tick( double tickval ); //! Gibt zurück, ob das Objekt teilweise oder ganz transparente stellen enthält DLLEXPORT bool hatAlpha() const; //! Gibt den radius einer Kugel zurück, die das gesammte Model umschließt DLLEXPORT float getRadius() const; //! Gibt einen Punkt zurück, der die Position der Zeichnung in der Welt darstellt DLLEXPORT const Vec3< float > &getPos() const; //! Gibt die X Position der Zeichnung in der Welt zurück DLLEXPORT float getX() const; //! Gibt die Y Position der Zeichnung in der Welt zurück DLLEXPORT float getY() const; //! Gibt die Z Position der Zeichnung in der Welt zurück 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 DLLEXPORT const Vec3< float > &getDrehung() const; //! Gibt die Drehung um die X Achse im Bogenmaß zurück DLLEXPORT float getXDrehung() const; //! Gibt die Drehung um die Y Achse im Bogenmaß zurück DLLEXPORT float getYDrehung() const; //! Gibt die Drehung um die Z Achse im Bogenmaß zurück DLLEXPORT float getZDrehung() const; //! Gibt die Matrix zurück, die die Zeichnung in den Welt Raum übersetzt DLLEXPORT const Mat4< float > &getMatrix() const; }; }