Welt2D.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #pragma once
  2. #include "Array.h"
  3. #include "Mat3.h"
  4. #include "Punkt.h"
  5. namespace Framework
  6. {
  7. typedef Vec2< float > Vertex;
  8. class Bild;
  9. template<typename T>
  10. struct Rect
  11. {
  12. Vec2< T > topLeft;
  13. Vec2< T > bottomRight;
  14. };
  15. class Object2D
  16. {
  17. protected:
  18. Vertex position;
  19. Vertex speed;
  20. float rSpeed;
  21. float rotation;
  22. float size;
  23. int ref;
  24. public:
  25. __declspec( dllexport ) Object2D();
  26. virtual __declspec( dllexport ) ~Object2D();
  27. __declspec( dllexport ) void explosion( Vertex worldPos, float intensity );
  28. __declspec( dllexport ) virtual void impuls( Vertex start, Vertex speed );
  29. __declspec( dllexport ) void setPosition( Vertex pos );
  30. __declspec( dllexport ) void setPosition( float x, float y );
  31. // Setzt die Drehung des Models gegen den Uhrzeigersinn
  32. // drehung: Der winkel in Bogenmas
  33. __declspec( dllexport ) void setDrehung( float drehung );
  34. // Fügt zum aktuellen Drehungswinkel etwas hinzu
  35. // drehung: Der Winkel in Bogenmas, der hinzugefügt werden soll
  36. __declspec( dllexport ) void addDrehung( float drehung );
  37. // Setzt die Skallierung des Modells
  38. // size: Der Faktor, mit dem Skalliert wird
  39. __declspec( dllexport ) void setSize( float size );
  40. // Addiert zur Skallierung einen bestimmten Wert hinzu
  41. // size: Der Wert, der zur skallierung hinzugefügt werden soll
  42. __declspec( dllexport ) void addSize( float size );
  43. __declspec( dllexport ) virtual bool tick( double zeit );
  44. virtual void render( Mat3< float > &kamMat, Bild &zRObj ) = 0;
  45. __declspec( dllexport ) Mat3< float > getObjectMatrix() const;
  46. // gibt die Position des Models zurück
  47. __declspec( dllexport ) Vertex getPosition() const;
  48. // gibt die Drehung des Models zurück
  49. __declspec( dllexport ) float getDrehung() const;
  50. // gibt den Skallierungs Faktor zurück
  51. __declspec( dllexport ) float getSize() const;
  52. __declspec( dllexport ) virtual Rect< float > getBoundingBox() const = 0;
  53. __declspec( dllexport ) Object2D *getThis();
  54. __declspec( dllexport ) Object2D *release();
  55. };
  56. class Welt2D
  57. {
  58. private:
  59. RCArray< Object2D > *objects;
  60. Punkt topLeft;
  61. Punkt rightBottom;
  62. int ref;
  63. public:
  64. __declspec( dllexport ) Welt2D();
  65. __declspec( dllexport ) ~Welt2D();
  66. __declspec( dllexport ) void addObject( Object2D *obj );
  67. __declspec( dllexport ) void explosion( Vertex worldPos, float intensity, float maxRad );
  68. __declspec( dllexport ) bool tick( double zeit );
  69. __declspec( dllexport ) void render( Mat3< float > &kamMat, Punkt size, Bild &zRObj );
  70. __declspec( dllexport ) Welt2D *getThis();
  71. __declspec( dllexport ) Welt2D *release();
  72. };
  73. }