00001 /* 00002 Debris - A 3D-Space-Shooter Game based on OpenGL 00003 Copyright (C) 2002 Daniel Wagner <daniel@kwaxi.org> and 00004 Sebastian Zambal <e9826978@student.tuwien.ac.at> 00005 00006 file: DObject3D.h 00007 */ 00008 00009 #pragma once 00010 00011 #include "debris.h" 00012 00013 typedef float* DParticleVector; 00014 00016 00019 class DParticleSystem: public DObject3D { 00020 private: 00022 DParticleVector *vertex1; 00024 DParticleVector *particleVelocity; 00026 float *lifeTime; 00028 GLuint particleCount; 00029 public: 00031 bool active; 00033 virtual void Draw(void); 00035 virtual void Move(void); 00037 virtual void Init(void); 00039 DParticleSystem(DSystem *system); 00041 ~DParticleSystem(void); 00042 }; 00043 00044 typedef DParticleSystem *DParticleSystemPtr; 00045 00047 00050 class DExplosion: public DParticleSystem { 00051 private: 00053 DParticleVector *vertex1; 00054 DParticleVector *vertex2; 00055 DParticleVector *vertex3; 00057 DParticleVector *particleVelocity; 00059 float *lifeTime; 00061 float centerLifeTime; 00063 GLuint particleCount; 00064 public: 00066 GLuint particleTex1, particleTex2, particleTex3; 00068 bool active; 00070 virtual void Draw(void); 00072 virtual void DrawWireFrame(void); 00074 virtual void Move(void); 00076 virtual void Init(void); 00078 DExplosion(DSystem *system); 00080 ~DExplosion(void); 00081 }; 00082 00083 typedef DExplosion *DExplosionPtr; 00084 00086 00089 class DVaporTrail : public DParticleSystem { 00090 private: 00092 DParticleVector *planes; 00094 float *lifeTime; 00096 int particleCount; 00098 DObject3D *source; 00100 float intensity; 00102 float intensityCounter; 00104 float *dist; 00105 int *index; 00107 float *matrix; 00108 public: 00110 int current; 00112 GLuint particleTex1; 00114 bool active; 00116 virtual void Draw(void); 00118 virtual void DrawWireFrame(void); 00120 virtual void Move(void); 00122 virtual void Init(DObject3D *obj, float intensity); 00124 DVaporTrail(DSystem *system); 00126 ~DVaporTrail(void); 00127 }; 00128 00129 typedef DVaporTrail *DVaporTrailPtr;