123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- #pragma once
- #include "Array.h"
- #include "Mat3.h"
- #include "Punkt.h"
- namespace Framework
- {
- typedef Vec2< float > Vertex;
- class Bild;
- template<typename T>
- 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;
- __declspec( dllexport ) Mat3< float > getInverseObjectMatrix() const;
- __declspec( dllexport ) Vertex getObjectPos( Vertex worldPos ) const;
- __declspec( dllexport ) Vertex getObjectDir( Vertex worldDir ) 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;
- // Bestimmt den Aufschlagspunkt eines Strahls, der von pos ausgehend in Richtung dir abgegeben wird.
- // pos: Der Stützvektor der Linie
- // dir: Der richtungsvektor der Linie
- // hitPoint: eine referenz auf die variable in dem der schnittpunkt gespeichert werden soll
- // return: 1, fals ein Schnittpunkt existiert
- __declspec( dllexport ) virtual bool calcHitPoint( Vertex pos, Vertex dir, Vertex &hitpoint ) const;
- __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 ) void impuls( Vertex worldPos, Vertex worldDir );
- __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();
- };
- }
|