Zeichnung3D.h 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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. int ref;
  19. public:
  20. // Konstruktor
  21. __declspec( dllexport ) Zeichnung3D();
  22. __declspec( dllexport ) virtual ~Zeichnung3D();
  23. // Setzt die Position der Zeichnung in der Welt
  24. // p: Die Position
  25. __declspec( dllexport ) void setPosition( Vec3< float > &p );
  26. // Setzt die Position der Zeichnung in der Welt
  27. // x: Die x Position
  28. // y: Die y Position
  29. // z: Die z Position
  30. __declspec( dllexport ) void setPosition( float x, float y, float z );
  31. // Setzt die Position der Zeichnung in der Welt
  32. // x: Die x Position
  33. __declspec( dllexport ) void setX( float x );
  34. // Setzt die Position der Zeichnung in der Welt
  35. // y: Die y Position
  36. __declspec( dllexport ) void setY( float y );
  37. // Setzt die Position der Zeichnung in der Welt
  38. // z: Die z Position
  39. __declspec( dllexport ) void setZ( float z );
  40. // Setzt die Drehung der Zeichnung in der Welt
  41. // d: Die drehung um die x, y und z achse
  42. __declspec( dllexport ) void setDrehung( Vec3< float > &d );
  43. // Setzt die Drehung der Zeichnung in der Welt
  44. // xWinkel: Die drehung um die x achse
  45. // yWinkel: Die drehung um die y achse
  46. // zWinkel: Die drehung um die z achse
  47. __declspec( dllexport ) void setDrehung( float xWinkel, float yWinkel, float zWinkel );
  48. // Setzt die Drehung der Zeichnung in der Welt
  49. // winkel: Die drehung um die x achse
  50. __declspec( dllexport ) void setDrehungX( float winkel );
  51. // Setzt die Drehung der Zeichnung in der Welt
  52. // winkel: Die drehung um die y achse
  53. __declspec( dllexport ) void setDrehungY( float winkel );
  54. // Setzt die Drehung der Zeichnung in der Welt
  55. // winkel: Die drehung um die z achse
  56. __declspec( dllexport ) void setDrehungZ( float winkel );
  57. // Legt fest, ob das Objekt teilweise oder ganz transparente stellen enthält
  58. // a: true, wenn teilweise oder ganz transparente stellen vorhanden sind
  59. __declspec( dllexport ) void setAlpha( bool a );
  60. // Errechnet die Matrizen aller Knochen des Skeletts der Zeichnung
  61. // viewProj: Die miteinander multiplizierten Kameramatrizen
  62. // matBuffer: Ein Array mit Matrizen, der gefüllt werden soll
  63. // return: Die Anzahl der Matrizen, die die Zeichnung benötigt
  64. __declspec( dllexport ) virtual int errechneMatrizen( Mat4< float > &viewProj, Mat4< float > *matBuffer );
  65. // Verarbeitet ein Mausereignis
  66. // me: Das Mausereignis, das verarbeitet werden soll
  67. __declspec( dllexport ) virtual void doMausEreignis( MausEreignis3D &me );
  68. // Verarbeitet ein Tastaturereignis
  69. // te: das Tastaturereignis, das verarbeitet werden soll
  70. __declspec( dllexport ) virtual void doTastaturEreignis( TastaturEreignis &te );
  71. // Verarbeitet die vergangene Zeit
  72. // tickval: Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist
  73. // return: true, wenn sich das Objekt verändert hat, false sonnst.
  74. __declspec( dllexport ) virtual bool tick( double tickval );
  75. // Zeichnet das Objekt
  76. // zRObj: Ein Zeiger auf das Objekt, das zum Zeichnen verwendet werden soll (ohne erhöhten Reference Counter)
  77. __declspec( dllexport ) virtual void render( Render3D *zRObj );
  78. // Gibt zurück, ob das Objekt teilweise oder ganz transparente stellen enthält
  79. __declspec( dllexport ) bool hatAlpha() const;
  80. // Gibt den radius einer Kugel zurück, die das gesammte Model umschließt
  81. __declspec( dllexport ) float getRadius() const;
  82. // Gibt einen Punkt zurück, der die Position der Zeichnung in der Welt darstellt
  83. __declspec( dllexport ) const Vec3< float > &getPos() const;
  84. // Gibt die X Position der Zeichnung in der Welt zurück
  85. __declspec( dllexport ) float getX() const;
  86. // Gibt die Y Position der Zeichnung in der Welt zurück
  87. __declspec( dllexport ) float getY() const;
  88. // Gibt die Z Position der Zeichnung in der Welt zurück
  89. __declspec( 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. __declspec( dllexport ) const Vec3< float > &getDrehung() const;
  92. // Gibt die Drehung um die X Achse im Bogenmaß zurück
  93. __declspec( dllexport ) float getXDrehung() const;
  94. // Gibt die Drehung um die Y Achse im Bogenmaß zurück
  95. __declspec( dllexport ) float getYDrehung() const;
  96. // Gibt die Drehung um die Z Achse im Bogenmaß zurück
  97. __declspec( dllexport ) float getZDrehung() const;
  98. // Gibt die Matrix zurück, die die Zeichnung in den Welt Raum übersetzt
  99. __declspec( dllexport ) const Mat4< float > &getMatrix() const;
  100. // Erhöht den Reference Counting Zähler.
  101. // return: this.
  102. __declspec( dllexport ) Zeichnung3D *getThis();
  103. // Verringert den Reference Counting Zähler. Wenn der Zähler 0 erreicht, wird das Zeichnung automatisch gelöscht.
  104. // return: 0.
  105. __declspec( dllexport ) virtual Zeichnung3D *release();
  106. };
  107. }