- class TBullet
- {
- protected:
- TVector m_Position;//aktuelle Position
- TVector m_Direction;//in welche Richtung zeigt die Kugel aktuell
- float m_fSpeed;
- bool m_bActive;
- ...//Handler für Physiksystem, wenn genutzt
- public:
- //static in klassen sorgt dafür, dass es in den Klassendaten und nicht in den Instanzdaten gespeichert wird.
- //Der Unterschied sind bei 100 Instanzen, 396Byte weniger Speicherverbrauch, da das Float nur einmal im Speicher liegt egal wieviele Instanzen erzeugt werden.
- static float Speedreduction;//vereinfache Gewicht und Luftwiederstand zu einer konstanten Geschwindigkeitsabnahme
- void Show();//aktiviert das Geschoss
- void Hide();//deaktiviert das Geschoss
- void SetType();
- bool Active();
- };
- class TBulletManager
- {
- protected:
- TBullet* m_BulletArray;
- vector<unsigned int> m_FragmentedBulletSlots;//Index auf freie nicht zusammenhängende Bulletslots. Beim erstellen einfach den ersten Eintrag nehmen, entfernen und als neue Instanz zurück geben.
- unsigned int m_uiBulletcount;//aktuell verwendete Anzahl
- unsigned int m_uiBulletCreateIntervall;//Stückzahl, um die der Array erweitert wird, wenn nicht genug da sind.
- unsigned int m_uiBulletReservedCount;//wirkliche Arraygröße
- vector<TRessource*> m_Res;
- public:
- TBullet& GetInstance();//gibt ein freien Slot raus
- void RemoveInstance(TBullet& Object);//gibt ein Slot frei
- void Update();//Verarbeitet alle aktiven Kugeln
- void Draw();//Zeichne alle aktiven und sichtbaren Kugeln
- void BindRessource(TRessource& Res);
- void UnbindRessource(TRessource& Res);
- };