#pragma once #include "Array.h" #include "Mat3.h" #include "Punkt.h" namespace Framework { typedef Vec2< float > Vertex; class Bild; template struct Rect { Vec2< T > topLeft; Vec2< T > bottomRight; }; class Object2D { protected: Vertex position; Vertex speed; float rSpeed; float rotation; float size; int ref; public: __declspec( dllexport ) Object2D(); virtual __declspec( dllexport ) ~Object2D(); __declspec( dllexport ) void explosion( Vertex worldPos, float intensity ); __declspec( dllexport ) virtual void impuls( Vertex start, Vertex speed ); __declspec( dllexport ) void setPosition( Vertex pos ); __declspec( dllexport ) void setPosition( float x, float y ); // Setzt die Drehung des Models gegen den Uhrzeigersinn // drehung: Der winkel in Bogenmas __declspec( dllexport ) void setDrehung( float drehung ); // Fügt zum aktuellen Drehungswinkel etwas hinzu // drehung: Der Winkel in Bogenmas, der hinzugefügt werden soll __declspec( dllexport ) void addDrehung( float drehung ); // Setzt die Skallierung des Modells // size: Der Faktor, mit dem Skalliert wird __declspec( dllexport ) void setSize( float size ); // Addiert zur Skallierung einen bestimmten Wert hinzu // size: Der Wert, der zur skallierung hinzugefügt werden soll __declspec( dllexport ) void addSize( float size ); __declspec( dllexport ) virtual bool tick( double zeit ); virtual void render( Mat3< float > &kamMat, Bild &zRObj ) = 0; __declspec( dllexport ) Mat3< float > getObjectMatrix() const; // gibt die Position des Models zurück __declspec( dllexport ) Vertex getPosition() const; // gibt die Drehung des Models zurück __declspec( dllexport ) float getDrehung() const; // gibt den Skallierungs Faktor zurück __declspec( dllexport ) float getSize() const; __declspec( dllexport ) virtual Rect< float > getBoundingBox() const = 0; __declspec( dllexport ) Object2D *getThis(); __declspec( dllexport ) Object2D *release(); }; class Welt2D { private: RCArray< Object2D > *objects; Punkt topLeft; Punkt rightBottom; int ref; public: __declspec( dllexport ) Welt2D(); __declspec( dllexport ) ~Welt2D(); __declspec( dllexport ) void addObject( Object2D *obj ); __declspec( dllexport ) void explosion( Vertex worldPos, float intensity, float maxRad ); __declspec( dllexport ) bool tick( double zeit ); __declspec( dllexport ) void render( Mat3< float > &kamMat, Punkt size, Bild &zRObj ); __declspec( dllexport ) Welt2D *getThis(); __declspec( dllexport ) Welt2D *release(); }; }