Kam3D.h 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #pragma once
  2. #include "Mat4.h"
  3. #include "Zeichnung3D.h"
  4. #include "Punkt.h"
  5. // DirectX 11 Types
  6. struct D3D11_VIEWPORT;
  7. namespace Framework
  8. {
  9. struct MausEreignis; // MausEreignis.h
  10. class Render3D; // Render3D.h
  11. class Welt3D; // Welt3D.h
  12. // Eine 3d Kamera, die einen Ausschnitt einer 3D Welt in einen bestimmten Teil des Bildschirms zeichnet
  13. class Kam3D
  14. {
  15. private:
  16. Mat4< float > view;
  17. Mat4< float > proj;
  18. float openingAngle;
  19. float minZ;
  20. float maxZ;
  21. Vec3< float > pos;
  22. float rotX;
  23. float rotY;
  24. float rotZ;
  25. D3D11_VIEWPORT *viewport;
  26. Welt3D *welt;
  27. int ref;
  28. // Aktualisiert die view und projektion matrizen
  29. void updateMatrix();
  30. public:
  31. // Konstruktor
  32. __declspec( dllexport ) Kam3D();
  33. // Destruktor
  34. __declspec( dllexport ) ~Kam3D();
  35. // Setzt die Position der Kamera in der 3D Welt
  36. __declspec( dllexport ) void setPosition( Vec3< float > pos );
  37. // zoomt heran, indem sich die Kamera etwas auf das Blickziel zubewegt
  38. // val: Die länge der Strecke um die sich die Kamera bewegen soll
  39. __declspec( dllexport ) void scrollIn( float val );
  40. // zppmt heraus, indem sich die Kamera etwas von dem Blockziel entfernt
  41. // val: Die länge der Strecke um die sich die Kamera bewegen soll
  42. __declspec( dllexport ) void scrollOut( float val );
  43. // Richtet die Kamera so aus, dass sie genau auf einen bestimmten Punkt zeigt
  44. // ziel: Der Punkt, auf den die Kamera zeigen soll
  45. __declspec( dllexport ) void setAusrichtung( Vec3< float > ziel );
  46. // Setzt die Position des Bildes auf dem Bildschirm
  47. // p: Ein Punkt mit x und y Koordinaten in Pixeln
  48. __declspec( dllexport ) void setBildschirmPosition( Punkt p );
  49. // Setzt die Position des Bildes auf dem Bildschirm
  50. // x: Die x Koordinate in Pixeln
  51. // y: Die y Koordinate in Pixeln
  52. __declspec( dllexport ) void setBildschirmPosition( int x, int y );
  53. // Setzt die Größe des Bildes auf dem Bildschirm
  54. // p: Ein Punkt, mit x als Breite und y als Höhe in Pixlen
  55. __declspec( dllexport ) void setBildschirmSize( Punkt p );
  56. // Setzt die Größe des Bildes auf dem Bildschirm
  57. // br: Die Breite in Pixeln
  58. // hi: Die Höhe in Pixeln
  59. __declspec( dllexport ) void setBildschirmSize( int br, int hi );
  60. // Setzt die Welt, die gezeichnet werden soll
  61. // w: Die Welt
  62. __declspec( dllexport ) void setWelt( Welt3D *w );
  63. // Verarbeitet die vergangene Zeit
  64. // tickval: Die zeit in sekunden, die seit dem letzten Aufruf der Funktion vergangen ist
  65. // return: true, wenn sich das Bild neu gezeichnet werden muss, false sonnst.
  66. __declspec( dllexport ) bool tick( double tv );
  67. // Verarbeitet ein Mausereignis
  68. // me: Das Mausereignis, das verarbeitet werden soll
  69. __declspec( dllexport ) void doMausEreignis( MausEreignis &me );
  70. // Verarbeitet ein Tastaturereignis
  71. // te: das Tastaturereignis, das verarbeitet werden soll
  72. __declspec( dllexport ) void doTastaturEreignis( TastaturEreignis &te );
  73. // Zeichnet den Auschnitt der Welt, den die Kamera filmt
  74. // zRObj: Das Render Objekt, mit dem gezeichnet werden soll
  75. __declspec( dllexport ) void render( Render3D *zRObj );
  76. // Erhöht den Reference Counter um 1
  77. // Return: Ein zeiger auf diesen Shader
  78. __declspec( dllexport ) Kam3D *getThis();
  79. // Verringert den Reference Counter und löscht den Shader, falls der Refeence Counter auf 0 ist
  80. // Return: 0
  81. __declspec( dllexport ) Kam3D *release();
  82. };
  83. }