Zeichnung3D.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #pragma once
  2. #include "Mat4.h"
  3. #include "ReferenceCounter.h"
  4. namespace Framework
  5. {
  6. struct MausEreignis3D;
  7. struct TastaturEreignis;
  8. class Render3D; //! Render3D.h
  9. //! Ein Objekt, das von der Bildschirm3D Klasse gezeichnet werden kann.
  10. class Zeichnung3D : public virtual ReferenceCounter
  11. {
  12. protected:
  13. Vec3< float > pos; //! Position des Objekts
  14. Vec3< float > angle; //! Drehungswinkel für x, y und z
  15. Mat4< float > welt; //! Wlet translation matrix
  16. float radius; //! Der radius einer Kugel, der das gesamte Objekt umschließt
  17. bool alpha; //! Speichert ob das Objekt teilweise oder ganz transparente stellen enthält
  18. bool rend;
  19. float size;
  20. public:
  21. //! Konstruktor
  22. DLLEXPORT Zeichnung3D();
  23. DLLEXPORT virtual ~Zeichnung3D();
  24. //! Setzt die Position der Zeichnung in der Welt
  25. //! \param p Die Position
  26. DLLEXPORT void setPosition(Vec3< float >& p);
  27. //! Setzt die Position der Zeichnung in der Welt
  28. //! \param x Die x Position
  29. //! \param y Die y Position
  30. //! \param z Die z Position
  31. DLLEXPORT void setPosition(float x, float y, float z);
  32. //! Setzt die Position der Zeichnung in der Welt
  33. //! \param x Die x Position
  34. DLLEXPORT void setX(float x);
  35. //! Setzt die Position der Zeichnung in der Welt
  36. //! \param y Die y Position
  37. DLLEXPORT void setY(float y);
  38. //! Setzt die Position der Zeichnung in der Welt
  39. //! \param z Die z Position
  40. DLLEXPORT void setZ(float z);
  41. //! Setzt die Drehung der Zeichnung in der Welt
  42. //! \param d Die drehung um die x, y und z achse
  43. DLLEXPORT void setDrehung(Vec3< float >& d);
  44. //! Setzt die Drehung der Zeichnung in der Welt
  45. //! \param xWinkel Die drehung um die x achse
  46. //! \param yWinkel Die drehung um die y achse
  47. //! \param zWinkel Die drehung um die z achse
  48. DLLEXPORT void setDrehung(float xWinkel, float yWinkel, float zWinkel);
  49. //! Setzt die Drehung der Zeichnung in der Welt
  50. //! \param winkel Die drehung um die x achse
  51. DLLEXPORT void setDrehungX(float winkel);
  52. //! Setzt die Drehung der Zeichnung in der Welt
  53. //! \param winkel Die drehung um die y achse
  54. DLLEXPORT void setDrehungY(float winkel);
  55. //! Setzt die Drehung der Zeichnung in der Welt
  56. //! \param winkel Die drehung um die z achse
  57. DLLEXPORT void setDrehungZ(float winkel);
  58. //! Legt fest, ob das Objekt teilweise oder ganz transparente stellen enthält
  59. //! \param a true, wenn teilweise oder ganz transparente stellen vorhanden sind
  60. DLLEXPORT void setAlpha(bool a);
  61. //! Setzt die skallierung
  62. DLLEXPORT void setSize(float size);
  63. //! Errechnet die Matrizen aller Knochen des Skeletts der Zeichnung
  64. //! \param viewProj Die miteinander multiplizierten Kameramatrizen
  65. //! \param matBuffer Ein Array mit Matrizen, der gefüllt werden soll
  66. //! \return Die Anzahl der Matrizen, die die Zeichnung benötigt
  67. DLLEXPORT virtual int errechneMatrizen(Mat4< float >& viewProj, Mat4< float >* matBuffer);
  68. //! Verarbeitet ein Mausereignis
  69. //! \param me Das Mausereignis, das verarbeitet werden soll
  70. DLLEXPORT virtual void doMausEreignis(MausEreignis3D& me);
  71. //! Verarbeitet ein Tastaturereignis
  72. //! \param te das Tastaturereignis, das verarbeitet werden soll
  73. DLLEXPORT virtual void doTastaturEreignis(TastaturEreignis& te);
  74. //! Verarbeitet die vergangene Zeit
  75. //! \param tickval Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist
  76. //! \return true, wenn sich das Objekt verändert hat, false sonnst.
  77. DLLEXPORT virtual bool tick(double tickval);
  78. //! Gibt zurück, ob das Objekt teilweise oder ganz transparente stellen enthält
  79. DLLEXPORT bool hatAlpha() const;
  80. //! Gibt den radius einer Kugel zurück, die das gesammte Model umschließt
  81. DLLEXPORT inline float getRadius() const;
  82. //! Gibt einen Punkt zurück, der die Position der Zeichnung in der Welt darstellt
  83. DLLEXPORT const Vec3< float >& getPos() const;
  84. //! Gibt die X Position der Zeichnung in der Welt zurück
  85. DLLEXPORT float getX() const;
  86. //! Gibt die Y Position der Zeichnung in der Welt zurück
  87. DLLEXPORT float getY() const;
  88. //! Gibt die Z Position der Zeichnung in der Welt zurück
  89. DLLEXPORT float getZ() const;
  90. //! 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
  91. DLLEXPORT const Vec3< float >& getDrehung() const;
  92. //! Gibt die Drehung um die X Achse im Bogenmaß zurück
  93. DLLEXPORT float getXDrehung() const;
  94. //! Gibt die Drehung um die Y Achse im Bogenmaß zurück
  95. DLLEXPORT float getYDrehung() const;
  96. //! Gibt die Drehung um die Z Achse im Bogenmaß zurück
  97. DLLEXPORT float getZDrehung() const;
  98. //! Gibt die Matrix zurück, die die Zeichnung in den Welt Raum übersetzt
  99. DLLEXPORT const Mat4< float >& getMatrix() const;
  100. //! Berechnet wür einen Punkt in lokalen Zeichnungs Koordinaten den Punkt in Weltkoordinaten durch anwendung von Drehung, Skallierung und Verschiebung
  101. DLLEXPORT Vec3<float> applyWorldTransformation(Vec3<float> modelPos) const;
  102. };
  103. }