Zeichnung3D.h 5.4 KB

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