|
@@ -3,17 +3,16 @@
|
|
#include "Array.h"
|
|
#include "Array.h"
|
|
#include "Mat3.h"
|
|
#include "Mat3.h"
|
|
#include "Punkt.h"
|
|
#include "Punkt.h"
|
|
|
|
+#include "Rect2.h"
|
|
|
|
|
|
namespace Framework
|
|
namespace Framework
|
|
{
|
|
{
|
|
typedef Vec2< float > Vertex;
|
|
typedef Vec2< float > Vertex;
|
|
class Bild;
|
|
class Bild;
|
|
|
|
|
|
- template<typename T>
|
|
|
|
- struct Rect
|
|
|
|
|
|
+ struct WeltInfo
|
|
{
|
|
{
|
|
- Vec2< T > topLeft;
|
|
|
|
- Vec2< T > bottomRight;
|
|
|
|
|
|
+ float airResistance;
|
|
};
|
|
};
|
|
|
|
|
|
class Object2D
|
|
class Object2D
|
|
@@ -29,10 +28,31 @@ namespace Framework
|
|
public:
|
|
public:
|
|
__declspec( dllexport ) Object2D();
|
|
__declspec( dllexport ) Object2D();
|
|
virtual __declspec( dllexport ) ~Object2D();
|
|
virtual __declspec( dllexport ) ~Object2D();
|
|
|
|
+ // Fügt einen Schub in die ausbreitungsrichtung der Explusion zur Bewegung des Objektes hinzu
|
|
|
|
+ // worldPos: Die Position des Explusionsuhrsprungs
|
|
|
|
+ // intensity: Die Intensität der Explusion
|
|
__declspec( dllexport ) void explosion( Vertex worldPos, float intensity );
|
|
__declspec( dllexport ) void explosion( Vertex worldPos, float intensity );
|
|
|
|
+ // Übt auf das Objekt einen Impuls aus, der sowohl die geschwindigkeit, als auch die Drehungsgeschwindigkeit des Objektes beeinflusst
|
|
|
|
+ // start: Die Startposition des Impulses in der Welt
|
|
|
|
+ // speed: Die Geschwindigkeit des Impulses in der Welt
|
|
__declspec( dllexport ) virtual void impuls( Vertex start, Vertex speed );
|
|
__declspec( dllexport ) virtual void impuls( Vertex start, Vertex speed );
|
|
|
|
+ // Setzt die Geschwindigkeit des Objektes in der Welt
|
|
|
|
+ // speed: Anzahl der zurückgelegten Koordinaten pro Sekunde
|
|
|
|
+ __declspec( dllexport ) void setSpeed( Vertex speed );
|
|
|
|
+ // Setzt die Geschwindigkeit des Objektes in der Welt
|
|
|
|
+ // x: Anzahl der zurückgelegten x Koordinaten pro Sekunde
|
|
|
|
+ // y: Anzahl der zurückgelegten y Koordinaten pro Sekunde
|
|
|
|
+ __declspec( dllexport ) void setSpeed( float x, float y );
|
|
|
|
+ // Setzt die Position des Objektes in der Welt
|
|
|
|
+ // pos: Die Position in Weltkoordinaten
|
|
__declspec( dllexport ) void setPosition( Vertex pos );
|
|
__declspec( dllexport ) void setPosition( Vertex pos );
|
|
|
|
+ // Setzt die Position des Objektes in der Welt
|
|
|
|
+ // x: Die X Position in Weltkoordinaten
|
|
|
|
+ // y: Die Y Position in Weltkoordinaten
|
|
__declspec( dllexport ) void setPosition( float x, float y );
|
|
__declspec( dllexport ) void setPosition( float x, float y );
|
|
|
|
+ // Setzt die Rotationsgeschwindigkeit in Radiant pro Sekunde
|
|
|
|
+ // ds: Die neue Rptationsgeschwindigkeit
|
|
|
|
+ __declspec( dllexport ) void setDrehungSpeed( float ds );
|
|
// Setzt die Drehung des Models gegen den Uhrzeigersinn
|
|
// Setzt die Drehung des Models gegen den Uhrzeigersinn
|
|
// drehung: Der winkel in Bogenmas
|
|
// drehung: Der winkel in Bogenmas
|
|
__declspec( dllexport ) void setDrehung( float drehung );
|
|
__declspec( dllexport ) void setDrehung( float drehung );
|
|
@@ -45,26 +65,69 @@ namespace Framework
|
|
// Addiert zur Skallierung einen bestimmten Wert hinzu
|
|
// Addiert zur Skallierung einen bestimmten Wert hinzu
|
|
// size: Der Wert, der zur skallierung hinzugefügt werden soll
|
|
// size: Der Wert, der zur skallierung hinzugefügt werden soll
|
|
__declspec( dllexport ) void addSize( float size );
|
|
__declspec( dllexport ) void addSize( float size );
|
|
- __declspec( dllexport ) virtual bool tick( double zeit );
|
|
|
|
|
|
+ // Prüft ob eine Collision mit einem anderen Objekt vorliegt und passt die Geschwindigkeiten beider Objekte entsprechend an
|
|
|
|
+ __declspec( dllexport ) virtual bool handleCollision( Object2D *obj );
|
|
|
|
+ // Verarbeitet vargangene Zeit und aktualisiert die Position und die Drehung des Objektes in der Welt
|
|
|
|
+ // zeit: Die vergangene Zeit in Sekunden
|
|
|
|
+ __declspec( dllexport ) virtual bool tick( const WeltInfo &info, double zeit );
|
|
|
|
+ // Zeichnet das Objekt in ein Bild
|
|
|
|
+ // kamMat: Due Kamera Matrix, welche einen Punkt aus Weltkoordinaten in Bildschirmkoordinaten umwandelt
|
|
|
|
+ // zRObj: Das Bild, in welches gezeichnet werden soll
|
|
virtual void render( Mat3< float > &kamMat, Bild &zRObj ) = 0;
|
|
virtual void render( Mat3< float > &kamMat, Bild &zRObj ) = 0;
|
|
|
|
+ // Gibt zurück, ob ein Punkt in dem Objekt enthalten ist
|
|
|
|
+ // p: Der Punkt
|
|
|
|
+ __declspec( dllexport ) virtual bool istPunktInnen( Vertex p ) const;
|
|
|
|
+ // Überprüft, ob eine Linie im Objekt enthalten ist
|
|
|
|
+ // a: Der startpunkt der Linie
|
|
|
|
+ // b: Der endpunkt der Linie
|
|
|
|
+ __declspec( dllexport ) virtual bool istLinieInnen( Vertex a, Vertex b ) const;
|
|
|
|
+ // Überprüft, ob sich das Objekt mit einem anderen Überschneidet
|
|
|
|
+ // zObj: Ein Zeiger auf das andere Objekt ohne erhöhten Reference Counter
|
|
|
|
+ // sp: Ein Zeiger auf einen Punkt, in dem der Schnittpunkt gespeichert wird
|
|
|
|
+ // end: 0, falls alle Ecken beider Objekte überprüft werdden sollen. 1, falls nur die Punkte dieses Models im anderen gesucht werden sollen
|
|
|
|
+ __declspec( dllexport ) virtual bool istModelInnen( const Object2D *zObj, Vertex *sp = 0, bool end = 0 ) const;
|
|
|
|
+ // Gibt eine Matrix zurück, welche einen Punkt aus Objektkoordinaten in Bildschirmkoordinaten umrechnet
|
|
__declspec( dllexport ) Mat3< float > getObjectMatrix() const;
|
|
__declspec( dllexport ) Mat3< float > getObjectMatrix() const;
|
|
|
|
+ // Gibt eine Matrix zurück, welche einen Punkt aus Bildschirmkoordinaten in Objektkoordinaten umrechnet
|
|
__declspec( dllexport ) Mat3< float > getInverseObjectMatrix() const;
|
|
__declspec( dllexport ) Mat3< float > getInverseObjectMatrix() const;
|
|
|
|
+ // Rechnet einen Punkt aus Welt Koordinaten in Objektkoordinaten um
|
|
|
|
+ // worldPos: Die Position des Punktes in der Welt
|
|
__declspec( dllexport ) Vertex getObjectPos( Vertex worldPos ) const;
|
|
__declspec( dllexport ) Vertex getObjectPos( Vertex worldPos ) const;
|
|
|
|
+ // Rechnet eine Richtung aus Weltkoordinaten in Objektkoordinaten um
|
|
|
|
+ // worldDir: Die Richtung in Weltkoordinaten
|
|
__declspec( dllexport ) Vertex getObjectDir( Vertex worldDir ) const;
|
|
__declspec( dllexport ) Vertex getObjectDir( Vertex worldDir ) const;
|
|
- // gibt die Position des Models zurück
|
|
|
|
|
|
+ // Rechnet einen Punkt aus Objektkoordinaten in Weltkoordinaten um
|
|
|
|
+ // worldPos: Die Position des Punktes in Objektkoordinaten
|
|
|
|
+ __declspec( dllexport ) Vertex getWorldPos( Vertex objectPos ) const;
|
|
|
|
+ // Rechnet eine Richtung aus Objektkoordinaten in Weltkoordinaten um
|
|
|
|
+ // worldDir: Die Richtung in Objektkoordinaten
|
|
|
|
+ __declspec( dllexport ) Vertex getWorldDir( Vertex objectDir ) const;
|
|
|
|
+ // Gibt die Geschwindigkeit des Objektes zurück
|
|
|
|
+ __declspec( dllexport ) Vertex getSpeed() const;
|
|
|
|
+ // gibt die Position des Objektes zurück
|
|
__declspec( dllexport ) Vertex getPosition() const;
|
|
__declspec( dllexport ) Vertex getPosition() const;
|
|
- // gibt die Drehung des Models zurück
|
|
|
|
|
|
+ // gibt die Drehgeschwindigkeit des Objektes zurück
|
|
|
|
+ __declspec( dllexport ) float getDrehungSpeed() const;
|
|
|
|
+ // gibt die Drehung des Objektes zurück
|
|
__declspec( dllexport ) float getDrehung() const;
|
|
__declspec( dllexport ) float getDrehung() const;
|
|
- // gibt den Skallierungs Faktor zurück
|
|
|
|
|
|
+ // gibt den Skallierungs Objektes zurück
|
|
__declspec( dllexport ) float getSize() const;
|
|
__declspec( dllexport ) float getSize() const;
|
|
- __declspec( dllexport ) virtual Rect< float > getBoundingBox() const = 0;
|
|
|
|
|
|
+ // Gibt eine Boundingbox zurück, in der sich alle Punkte des Objektes befinden ( in Weltkoordinaten)
|
|
|
|
+ __declspec( dllexport ) virtual Rect2< float > getBoundingBox() const = 0;
|
|
// Bestimmt den Aufschlagspunkt eines Strahls, der von pos ausgehend in Richtung dir abgegeben wird.
|
|
// Bestimmt den Aufschlagspunkt eines Strahls, der von pos ausgehend in Richtung dir abgegeben wird.
|
|
// pos: Der Stützvektor der Linie
|
|
// pos: Der Stützvektor der Linie
|
|
// dir: Der richtungsvektor der Linie
|
|
// dir: Der richtungsvektor der Linie
|
|
// hitPoint: eine referenz auf die variable in dem der schnittpunkt gespeichert werden soll
|
|
// hitPoint: eine referenz auf die variable in dem der schnittpunkt gespeichert werden soll
|
|
// return: 1, fals ein Schnittpunkt existiert
|
|
// return: 1, fals ein Schnittpunkt existiert
|
|
__declspec( dllexport ) virtual bool calcHitPoint( Vertex pos, Vertex dir, Vertex &hitpoint ) const;
|
|
__declspec( dllexport ) virtual bool calcHitPoint( Vertex pos, Vertex dir, Vertex &hitpoint ) const;
|
|
|
|
+ // Ermittelt die Fläche des Objektes, welche rechtwinklich zum Bewegungsvektor steht
|
|
|
|
+ __declspec( dllexport ) virtual float getLuftWiederstand() const;
|
|
|
|
+ // Gibt die Masse des Objektes zurück
|
|
|
|
+ __declspec( dllexport ) virtual float getMasse() const;
|
|
|
|
+ // Erhöht den Reference Counter um 1 und gibt this zurück
|
|
__declspec( dllexport ) Object2D *getThis();
|
|
__declspec( dllexport ) Object2D *getThis();
|
|
|
|
+ // Verringert den Reference Counter um 1 (bei 0 löscht sich das Objekt selbst)
|
|
|
|
+ // Gibt 0 zurück
|
|
__declspec( dllexport ) Object2D *release();
|
|
__declspec( dllexport ) Object2D *release();
|
|
};
|
|
};
|
|
|
|
|
|
@@ -74,11 +137,13 @@ namespace Framework
|
|
RCArray< Object2D > *objects;
|
|
RCArray< Object2D > *objects;
|
|
Punkt topLeft;
|
|
Punkt topLeft;
|
|
Punkt rightBottom;
|
|
Punkt rightBottom;
|
|
|
|
+ WeltInfo info;
|
|
int ref;
|
|
int ref;
|
|
|
|
|
|
public:
|
|
public:
|
|
__declspec( dllexport ) Welt2D();
|
|
__declspec( dllexport ) Welt2D();
|
|
__declspec( dllexport ) ~Welt2D();
|
|
__declspec( dllexport ) ~Welt2D();
|
|
|
|
+ __declspec( dllexport ) void setAirResistance( float resistance );
|
|
__declspec( dllexport ) void addObject( Object2D *obj );
|
|
__declspec( dllexport ) void addObject( Object2D *obj );
|
|
__declspec( dllexport ) void explosion( Vertex worldPos, float intensity, float maxRad );
|
|
__declspec( dllexport ) void explosion( Vertex worldPos, float intensity, float maxRad );
|
|
__declspec( dllexport ) void impuls( Vertex worldPos, Vertex worldDir );
|
|
__declspec( dllexport ) void impuls( Vertex worldPos, Vertex worldDir );
|