Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

 Allgemein  Speicherung der Informationen  Die Schiffsysteme › Die Struktur SShipType › Die Struktur SWeaponType  Laden aus der INI- Datei  Die Klasse.

Ähnliche Präsentationen


Präsentation zum Thema: " Allgemein  Speicherung der Informationen  Die Schiffsysteme › Die Struktur SShipType › Die Struktur SWeaponType  Laden aus der INI- Datei  Die Klasse."—  Präsentation transkript:

1

2  Allgemein  Speicherung der Informationen  Die Schiffsysteme › Die Struktur SShipType › Die Struktur SWeaponType  Laden aus der INI- Datei  Die Klasse tbObject › Position und Skalierung › Die kombinierte Transformationsmatrix › Die Physik kommt hinzu  Implementierung von tbObject › Variablen › Methoden › Rotation › Wirkung einer Kraft

3  CIntro, CMain und CGame  CGalactica  6 Schiffarten › Verschiedene Waffensysteme

4  3D- Modelle werden in separaten Dateien abgelegt › Wo sollen die Informationen hin?  INI- Dateien

5  Effizienz des Systems  Effizienz steht im Verhältnis zu Schaden  Reparierungsrate  Position des Schiffes für Schadensberechnung genutzt werden  Wiederaufladefunktion

6  SShipType beschreibt den Typ eines Schiffes › Name des Schiffes › Dateiname des 3D- Modells › tbModel* › max. Beschleunigung & max. Schaden › Reparierungsrate der Schiffssysteme und die Informationen zu den Waffen des Schiffstyps

7 struct SShipType { char acName[256]; // Name des Schiffstyps char acDesc[1024]; // Beschreibungstext char acModel[256]; // Name der Modelldatei tbModel* pModel; // Modell des Schiffstyps float fMass; // Masse float fMovementFriction; // Reibung bei der Bewegung float fRotationFriction; // Reibung bei der Rotation float fMaxHullDamage; // Schadenskapazität der Hülle float fHullRepairRate; // Reparierungsrate der Hülle float fMaxAccel; // Maximale Beschleunigung float fMaxAngularAccel; // Maximale Drehbeschleunigung float fMaxEngineDamage; // Schadenskapazität des Antriebs float fEngineRepairRate; // Reparierungsrate des Antriebs tbVector3 vEnginePos; // Relative Position des Antriebs float fMaxShieldEnergy; // Maximale Schildenergie float fMaxShieldReloadRate; // Wiederaufladrate float fMaxShieldDamage; // Schadenskapazität des Schildgenerators float fShieldRepairRate; // Reparierungsrate des Schildgenerators tbVector3 vShieldPos; // Rel. Position des Schildgenerators float fMaxSensorsDamage; // Schadenskapazität der Sensoren float fSensorsRepairRate; // Reparierungsrate der Sensoren tbVector3 vSensorsPos; // Relative Position der Sensoren int iNumWeapons; // Anzahl der Waffensysteme int aiWeaponType[8]; // Waffentypen (für jede Waffe eine Zahl) tbVector3 avWeaponPos[8]; // Relative Positionen der Waffensysteme SWeaponType* apWeaponType[8]; // Zeiger auf die Waffentypen float fMaxWeaponEnergy; // Maximale Waffenenergie float fWeaponEnergyReloadRate; // Max. Wiederaufladrate d. Waffenenergie tbVector3 vCockpitPos; // Position des Cockpits }; Listing 8.2 Die erste Version von SShipType - S.559

8  Speicherort für Informationen eines Waffensystems › Laser-oder Raketenwaffe? z.B. BOOL bIsLaserWeapon › Dateiname des Projektilmodells - acProjectileModel[256] › float fMaxDamage & float fRepairRate › Projektil- Lebenszeit in sec. - float fProjectileLifetime › tbVector3 vProjectileStartPos z.B. (0,0,10) › fMinReloadTime, fDamageToHull › fEnergyPerShot, fDamageToShields › fHitForce

9  Initialisierung in CGame::Init › CGame::LoadShipTypes & CGame::LoadWeaponTypes › Welche Informationen hier geladen werden sollen, legt BOOL bFullLoad fest. › CGame-Erweiterung um SShipType m_aShipType[256] und SWeaponType m_aWeaponType[256] › Wie viele Schiffs- und Waffentypen haben wir? › For- Schleife durchsucht INI nach NumShipType s und NumWeaponTypes › Zum Auslesen von Schlüsseln aus einer INI- Datei gibt es die Methoden ReadINIString, ReadINIInt, ReadINIFloat, ReadINIVector3 und ReadINIColor

10  Bild S562 ~ CGame::LoadShipTypes

11  Rotation bisher: Drehung um die x-, y- und z- Achse.  Neuer Ansatz: Das Raumschiff dreht sich stets um die eigene relative Achse. › Achsenvektoren

12  Die Achsenvektoren liefern nur eine Orientierung des Objekts; um genauer zu werden fehlen die Angaben zu Position und Skalierung › Position bezieht sich hier auf das absolute Koordinatensystem

13  Achsenvektoren, Position und Skalierung des Objekts sollten durch eine Transformationsmatrix kombiniert werden.  tbmatrixTranslation  tbMatrixScaling  Skalierungsmatrix*Rotationsmatrix*Translationsm atrix (Kapitel 2)

14  tbObject-Erweiterung durch Bewegungs- und Rotationsvektor  Reibungsfaktor für Bewegung und Rotation › Ist z.B. der Reibungsfaktor von Bewegungs 0.8, verliert das Objekt 20% seiner Geschwindigkeit  Radius eines Objekt wird für die Berechnung der Wirkung einer Kraft auf das Objekt benötigt.

15  Variablen  5 Vektoren des Typs tbVector3 : › m_vPosition, m_vXAxis, m_vYAxis, m_vZAxis & m_vScaling  tbVector3 m_vVelocity  tbVector3 m_vRotation  Vier float-Werte: m_fMass, m_fRadius, m_fMovementFriction und m_fRotationFriction  Transformationsmatrix: tbMatrix m_mMatrix ;  die invertierte Version m_mInvMatrix.

16  tbObject::Update  Umrechnung von Koordinaten: › AbsToRelPos › RelToAbsPos › AbsToRelDir › RelToAbsDir  tbObject::Move  tbObject::Align & tbObject::LookAt  tbObject::ApplyForce

17  tbObject::RotateRel  tbObject::RotateAbs

18  tbObject::ApplyForce › Bild S.572/3

19 Danke für die Aufmerksamkeit!


Herunterladen ppt " Allgemein  Speicherung der Informationen  Die Schiffsysteme › Die Struktur SShipType › Die Struktur SWeaponType  Laden aus der INI- Datei  Die Klasse."

Ähnliche Präsentationen


Google-Anzeigen