1
/************************************************************************************
3
AstroMenace (Hardcore 3D space shooter with spaceship upgrade possibilities)
4
Copyright © 2006-2012 Michael Kurinnoy, Viewizard
7
AstroMenace is free software: you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation, either version 3 of the License, or
10
(at your option) any later version.
12
AstroMenace is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
GNU General Public License for more details.
17
You should have received a copy of the GNU General Public License
18
along with AstroMenace. If not, see <http://www.gnu.org/licenses/>.
21
Web Site: http://www.viewizard.com/
22
Project: http://sourceforge.net/projects/openastromenace/
23
E-mail: viewizard@viewizard.com
25
*************************************************************************************/
32
#include "../Object3D.h"
33
#include "../Projectile/Projectile.h"
39
//-----------------------------------------------------------------------------
40
// Структура CExplosionPiece
41
//-----------------------------------------------------------------------------
42
struct CExplosionPiece
44
// вектор направления движения частицы (скорости включены)
46
// оставшееся время жизни частицы
57
//-----------------------------------------------------------------------------
59
//-----------------------------------------------------------------------------
60
class CExplosion : public CObject3D
64
// базовые конструктор и деструктор объекта
66
virtual ~CExplosion();
68
// Обновление данных объектa
69
virtual bool Update(float Time);
72
int ExplosionTypeByClass;
75
// набор управления частицами
76
CExplosionPiece *ExplosionPieceData;
79
float ExplosionGeometryMoveLastTime;// последнее время изменения геометрии, нет смысла постоянно менять геометрию, делаем это 30 раз в секунду только
83
VECTOR3D VelocityOrientation;
87
// скорость изменения AABB
91
// для прорисовки графических эффектов
92
int GraphicFXQuantity;
93
eParticleSystem **GraphicFX;
96
// для собственного списка
109
//-----------------------------------------------------------------------------
110
// Менеджер Explosion, дополнительный
111
//-----------------------------------------------------------------------------
114
void AttachExplosion(CExplosion* Explosion);
115
// Исключаем из списка
116
void DetachExplosion(CExplosion* Explosion);
117
// Проверяем все объекты, обновляем данные
118
void UpdateAllExplosion(float Time);
119
// Прорисовываем все объекты
120
void DrawAllExplosion(bool VertexOnlyPass);
121
// Удаляем все объекты в списке
122
void ReleaseAllExplosion();
127
//-----------------------------------------------------------------------------
128
// Дополнительные функции
129
//-----------------------------------------------------------------------------
130
void SetExplosionGFX(eParticleSystem *ParticleSystem, int GFXNum);
137
#endif // EXPLOSION_H