00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #if 0
00029 #include "gParticles.h"
00030 #include <cmath>
00031 #include <ctime>
00032 #include <cstdlib>
00033
00034
00035 #ifndef DEDICATED
00036 void gParticles::Render(const eCamera *cam) {
00037 #ifdef USE_PARTICLES
00038
00039 pCurrentGroup(thisSystem);
00040
00041 pDrawGroupp(GL_POINTS, true);
00042 #endif
00043 }
00044 #endif
00045
00046 bool gParticles::Timestep(REAL currentTime) {
00047 #ifdef USE_PARTICLES
00048 REAL ticks = currentTime - lastTime;
00049
00050
00051 lastTime = currentTime;
00052
00053
00054 pCurrentGroup(thisSystem);
00055
00056
00057 pTimeStep( (float) ticks);
00058
00059
00060
00061
00062
00063
00064
00065
00066 pMove();
00067
00068
00069
00070
00071
00072
00073 #endif
00074 return false;
00075 }
00076
00077 void gParticles::GiveBirth(REAL currentTime) {
00078 #ifdef USE_PARTICLES
00079 ParticleInfo newParticle;
00080
00081 glCoord tmpFocus;
00082 glCoord tmpVec;
00083
00084 tmpFocus = focus;
00085
00086 float randomaxis;
00087
00088 randomaxis = 10.0f * rand()/(RAND_MAX+1.0f);
00089 tmpFocus.x -= randomaxis/2.0f;
00090 tmpFocus.x += randomaxis;
00091
00092 tmpFocus.y -= randomaxis/2.0f;
00093 tmpFocus.y += randomaxis;
00094
00095 tmpVec = svector;
00096
00097
00098
00099
00100
00101
00102
00103 newParticle.pos = tmpFocus;
00104 newParticle.vec = tmpVec;
00105 newParticle.life = psystem.life;
00106 newParticle.startTime = currentTime;
00107
00108 particles.push_back(newParticle);
00109 #endif
00110 }
00111
00112 gParticles::gParticles(const eCoord &pos,const glCoord &vec,REAL time, ParticleSystem ¶m) {
00113 #ifdef USE_PARTICLES
00114
00115 startTime = time;
00116
00117
00118 focus.x = pos.x;
00119 focus.y = pos.y;
00120 focus.z = 0;
00121
00122
00123 svector.x = vec.x;
00124 svector.y = vec.y;
00125 svector.z = vec.z;
00126
00127
00128 psystem = param;
00129
00130
00131 thisSystem = pGenParticleGroups(1, psystem.numParticles);
00132
00133 pCurrentGroup(thisSystem);
00134
00135
00136 pVelocity(svector.x, svector.y, svector.z);
00137 pColorD(1.0, PDLine, 0.8, 0.9, 1.0, 1.0, 1.0, 1.0);
00138 pSize(1.5);
00139
00140
00141 pSource(psystem.numParticles, PDSphere, focus.x, focus.y, focus.z, 20);
00142
00143
00144 pGravity(0.0, 0.0, -0.01);
00145 #endif
00146 }
00147
00148 #endif
00149