123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- #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(const 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(const 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);
- //! Setzt die skallierung
- DLLEXPORT void setSize(float size);
- //! 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(
- const 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 inline 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;
- //! Berechnet wür einen Punkt in lokalen Zeichnungs Koordinaten den
- //! Punkt in Weltkoordinaten durch anwendung von Drehung, Skallierung
- //! und Verschiebung
- DLLEXPORT Vec3<float> applyWorldTransformation(
- const Vec3<float>& modelPos) const;
- };
- } // namespace Framework
|