00001 #include <windows.h>
00002 #include "bullet.h"
00003 #include "decal.h"
00004 #include "vector.h"
00005 #include "vertex.h"
00006 #include "polygon.h"
00007 #include "texture.h"
00008 #include "listnode.h"
00009 #include "collision.h"
00010 #include "general.h"
00011 #include "camera.h"
00012 #include "bsp.h"
00013 #include "particle.h"
00014 #include "mmgr.h"
00015
00016 extern VERTEX* vertex;
00017 extern TEXTURE* texture;
00018 extern int numBullets;
00019 extern BULLET* bullet;
00020 extern int numBulletsActive;
00021 extern int numleaves;
00022 extern LinkedList<BSP_node> LeafList;
00023 extern LinkedList<BSP_node> PartitionList;
00024 extern BSP_node* listnode;
00025 extern CAMERA* camera;
00026 extern int currentCamera;
00027 extern int bulletspeed;
00028 extern int bullettype;
00029 extern BSP_node* root;
00030 extern int maxDecals;
00031 extern DECAL muzzleflashdecal;
00032 extern DECAL impactflashdecal;
00033
00034 BULLET::BULLET()
00035 {
00036 }
00037
00038 BULLET::~BULLET()
00039 {
00040 }
00041
00042 void BULLET::Reset()
00043 {
00044 Orientation.Reset();
00045 Position.Reset();
00046 Delta_x = 0.0;
00047 Delta_y = 0.0;
00048 Delta_z = 0.0;
00049 Matrix.LoadIdentity();
00050 }
00051
00052 void BULLET::Initialize()
00053 {
00054 modelvertlist = new VERTEX[numverts];
00055 modelpolylist = new POLYGON[numpolys];
00056 }
00057
00058 void BULLET::Draw()
00059 {
00060 glPushMatrix();
00061 glTranslatef(Position.x,Position.y,Position.z);
00062 Matrix.QuatToMatrix(Orientation);
00063 glMultMatrixf(Matrix.Element);
00064
00065
00066
00067
00068
00069
00070 glDisable(GL_TEXTURE_2D);
00071 for (int loop = 0; loop < numpolys; loop++)
00072 {
00073 glBegin(GL_TRIANGLES);
00074 glNormal3fv(&modelpolylist[loop].Vertex[0].normal.x);
00075 glTexCoord2f(modelpolylist[loop].Vertex[0].u, modelpolylist[loop].Vertex[0].v);
00076 glVertex3fv(&modelpolylist[loop].Vertex[0].coords.x);
00077 glTexCoord2f(modelpolylist[loop].Vertex[1].u, modelpolylist[loop].Vertex[1].v);
00078 glVertex3fv(&modelpolylist[loop].Vertex[1].coords.x);
00079 glTexCoord2f(modelpolylist[loop].Vertex[2].u, modelpolylist[loop].Vertex[2].v);
00080 glVertex3fv(&modelpolylist[loop].Vertex[2].coords.x);
00081 glEnd();
00082 }
00083 glEnable(GL_TEXTURE_2D);
00084 glPopMatrix();
00085 }
00086
00087
00088 void BULLET::Delete()
00089 {
00090 delete[] modelvertlist;
00091 delete[] modelpolylist;
00092 }
00093
00094 void InitializeBullets()
00095 {
00096 VERTEX tempVertices[8];
00097
00098 tempVertices[0].coords.x = -0.05;
00099 tempVertices[0].coords.y = 0.05;
00100 tempVertices[0].coords.z = 0.0;
00101
00102 tempVertices[1].coords.x = 0.05;
00103 tempVertices[1].coords.y = 0.05;
00104 tempVertices[1].coords.z = 0.0;
00105
00106 tempVertices[2].coords.x = 0.05;
00107 tempVertices[2].coords.y = 0.05;
00108 tempVertices[2].coords.z = -0.2;
00109
00110 tempVertices[3].coords.x = -0.05;
00111 tempVertices[3].coords.y = 0.05;
00112 tempVertices[3].coords.z = -0.2;
00113
00114 tempVertices[4].coords.x = -0.05;
00115 tempVertices[4].coords.y = -0.05;
00116 tempVertices[4].coords.z = 0.0;
00117
00118 tempVertices[5].coords.x = 0.05;
00119 tempVertices[5].coords.y = -0.05;
00120 tempVertices[5].coords.z = 0.0;
00121
00122 tempVertices[6].coords.x = 0.05;
00123 tempVertices[6].coords.y = -0.05;
00124 tempVertices[6].coords.z = -0.2;
00125
00126 tempVertices[7].coords.x = -0.05;
00127 tempVertices[7].coords.y = -0.05;
00128 tempVertices[7].coords.z = -0.2;
00129
00130 for (int loop = 0; loop < numBullets; loop++)
00131 {
00132 bullet[loop].numverts = 8;
00133 bullet[loop].numpolys = 12;
00134 bullet[loop].Initialize();
00135 bullet[loop].active = 0;
00136
00137 for (int innerloop = 0; innerloop < bullet[loop].numpolys; innerloop++)
00138 {
00139 bullet[loop].modelpolylist[innerloop].numVertices = 3;
00140 bullet[loop].modelpolylist[innerloop].removable = 0;
00141 }
00142
00143 bullet[loop].modelpolylist[0].Scale[0] = 1.0;
00144 bullet[loop].modelpolylist[0].Scale[1] = 1.0;
00145 bullet[loop].modelpolylist[0].Shift[0] = 0.0;
00146 bullet[loop].modelpolylist[0].Shift[1] = 0.0;
00147 bullet[loop].modelpolylist[0].Rotate = 0.0;
00148 bullet[loop].modelpolylist[0].Vertex[0] = tempVertices[0];
00149 bullet[loop].modelpolylist[0].Vertex[1] = tempVertices[2];
00150 bullet[loop].modelpolylist[0].Vertex[2] = tempVertices[3];
00151 bullet[loop].modelpolylist[0].Texture = texture[4].TexID;
00152 bullet[loop].modelpolylist[0].Vertex[0].u = 0.0;
00153 bullet[loop].modelpolylist[0].Vertex[0].v = 0.0;
00154 bullet[loop].modelpolylist[0].Vertex[1].u = 1.0;
00155 bullet[loop].modelpolylist[0].Vertex[1].v = 1.0;
00156 bullet[loop].modelpolylist[0].Vertex[2].u = 0.0;
00157 bullet[loop].modelpolylist[0].Vertex[2].v = 1.0;
00158
00159 bullet[loop].modelpolylist[1].Scale[0] = 1.0;
00160 bullet[loop].modelpolylist[1].Scale[1] = 1.0;
00161 bullet[loop].modelpolylist[1].Shift[0] = 0.0;
00162 bullet[loop].modelpolylist[1].Shift[1] = 0.0;
00163 bullet[loop].modelpolylist[1].Rotate = 0.0;
00164 bullet[loop].modelpolylist[1].Vertex[0] = tempVertices[0];
00165 bullet[loop].modelpolylist[1].Vertex[1] = tempVertices[1];
00166 bullet[loop].modelpolylist[1].Vertex[2] = tempVertices[2];
00167 bullet[loop].modelpolylist[1].Texture = texture[4].TexID;
00168 bullet[loop].modelpolylist[1].Vertex[0].u = 0.0;
00169 bullet[loop].modelpolylist[1].Vertex[0].v = 0.0;
00170 bullet[loop].modelpolylist[1].Vertex[1].u = 1.0;
00171 bullet[loop].modelpolylist[1].Vertex[1].v = 0.0;
00172 bullet[loop].modelpolylist[1].Vertex[2].u = 1.0;
00173 bullet[loop].modelpolylist[1].Vertex[2].v = 1.0;
00174
00175 bullet[loop].modelpolylist[2].Scale[0] = 1.0;
00176 bullet[loop].modelpolylist[2].Scale[1] = 1.0;
00177 bullet[loop].modelpolylist[2].Shift[0] = 0.0;
00178 bullet[loop].modelpolylist[2].Shift[1] = 0.0;
00179 bullet[loop].modelpolylist[2].Rotate = 0.0;
00180 bullet[loop].modelpolylist[2].Vertex[0] = tempVertices[5];
00181 bullet[loop].modelpolylist[2].Vertex[1] = tempVertices[7];
00182 bullet[loop].modelpolylist[2].Vertex[2] = tempVertices[6];
00183 bullet[loop].modelpolylist[2].Texture = texture[4].TexID;
00184 bullet[loop].modelpolylist[2].Vertex[0].u = 0.0;
00185 bullet[loop].modelpolylist[2].Vertex[0].v = 0.0;
00186 bullet[loop].modelpolylist[2].Vertex[1].u = 1.0;
00187 bullet[loop].modelpolylist[2].Vertex[1].v = 1.0;
00188 bullet[loop].modelpolylist[2].Vertex[2].u = 0.0;
00189 bullet[loop].modelpolylist[2].Vertex[2].v = 1.0;
00190
00191 bullet[loop].modelpolylist[3].Scale[0] = 1.0;
00192 bullet[loop].modelpolylist[3].Scale[1] = 1.0;
00193 bullet[loop].modelpolylist[3].Shift[0] = 0.0;
00194 bullet[loop].modelpolylist[3].Shift[1] = 0.0;
00195 bullet[loop].modelpolylist[3].Rotate = 0.0;
00196 bullet[loop].modelpolylist[3].Vertex[0] = tempVertices[5];
00197 bullet[loop].modelpolylist[3].Vertex[1] = tempVertices[4];
00198 bullet[loop].modelpolylist[3].Vertex[2] = tempVertices[7];
00199 bullet[loop].modelpolylist[3].Texture = texture[4].TexID;
00200 bullet[loop].modelpolylist[3].Vertex[0].u = 0.0;
00201 bullet[loop].modelpolylist[3].Vertex[0].v = 0.0;
00202 bullet[loop].modelpolylist[3].Vertex[1].u = 1.0;
00203 bullet[loop].modelpolylist[3].Vertex[1].v = 0.0;
00204 bullet[loop].modelpolylist[3].Vertex[2].u = 1.0;
00205 bullet[loop].modelpolylist[3].Vertex[2].v = 1.0;
00206
00207 bullet[loop].modelpolylist[4].Scale[0] = 1.0;
00208 bullet[loop].modelpolylist[4].Scale[1] = 1.0;
00209 bullet[loop].modelpolylist[4].Shift[0] = 0.0;
00210 bullet[loop].modelpolylist[4].Shift[1] = 0.0;
00211 bullet[loop].modelpolylist[4].Rotate = 0.0;
00212 bullet[loop].modelpolylist[4].Vertex[0] = tempVertices[4];
00213 bullet[loop].modelpolylist[4].Vertex[1] = tempVertices[1];
00214 bullet[loop].modelpolylist[4].Vertex[2] = tempVertices[0];
00215 bullet[loop].modelpolylist[4].Texture = texture[4].TexID;
00216 bullet[loop].modelpolylist[4].Vertex[0].u = 0.0;
00217 bullet[loop].modelpolylist[4].Vertex[0].v = 0.0;
00218 bullet[loop].modelpolylist[4].Vertex[1].u = 1.0;
00219 bullet[loop].modelpolylist[4].Vertex[1].v = 1.0;
00220 bullet[loop].modelpolylist[4].Vertex[2].u = 0.0;
00221 bullet[loop].modelpolylist[4].Vertex[2].v = 1.0;
00222
00223 bullet[loop].modelpolylist[5].Scale[0] = 1.0;
00224 bullet[loop].modelpolylist[5].Scale[1] = 1.0;
00225 bullet[loop].modelpolylist[5].Shift[0] = 0.0;
00226 bullet[loop].modelpolylist[5].Shift[1] = 0.0;
00227 bullet[loop].modelpolylist[5].Rotate = 0.0;
00228 bullet[loop].modelpolylist[5].Vertex[0] = tempVertices[4];
00229 bullet[loop].modelpolylist[5].Vertex[1] = tempVertices[5];
00230 bullet[loop].modelpolylist[5].Vertex[2] = tempVertices[1];
00231 bullet[loop].modelpolylist[5].Texture = texture[4].TexID;
00232 bullet[loop].modelpolylist[5].Vertex[0].u = 0.0;
00233 bullet[loop].modelpolylist[5].Vertex[0].v = 0.0;
00234 bullet[loop].modelpolylist[5].Vertex[1].u = 1.0;
00235 bullet[loop].modelpolylist[5].Vertex[1].v = 0.0;
00236 bullet[loop].modelpolylist[5].Vertex[2].u = 1.0;
00237 bullet[loop].modelpolylist[5].Vertex[2].v = 1.0;
00238
00239 bullet[loop].modelpolylist[6].Scale[0] = 1.0;
00240 bullet[loop].modelpolylist[6].Scale[1] = 1.0;
00241 bullet[loop].modelpolylist[6].Shift[0] = 0.0;
00242 bullet[loop].modelpolylist[6].Shift[1] = 0.0;
00243 bullet[loop].modelpolylist[6].Rotate = 0.0;
00244 bullet[loop].modelpolylist[6].Vertex[0] = tempVertices[6];
00245 bullet[loop].modelpolylist[6].Vertex[1] = tempVertices[3];
00246 bullet[loop].modelpolylist[6].Vertex[2] = tempVertices[2];
00247 bullet[loop].modelpolylist[6].Texture = texture[4].TexID;
00248 bullet[loop].modelpolylist[6].Vertex[0].u = 0.0;
00249 bullet[loop].modelpolylist[6].Vertex[0].v = 0.0;
00250 bullet[loop].modelpolylist[6].Vertex[1].u = 1.0;
00251 bullet[loop].modelpolylist[6].Vertex[1].v = 1.0;
00252 bullet[loop].modelpolylist[6].Vertex[2].u = 0.0;
00253 bullet[loop].modelpolylist[6].Vertex[2].v = 1.0;
00254
00255 bullet[loop].modelpolylist[7].Scale[0] = 1.0;
00256 bullet[loop].modelpolylist[7].Scale[1] = 1.0;
00257 bullet[loop].modelpolylist[7].Shift[0] = 0.0;
00258 bullet[loop].modelpolylist[7].Shift[1] = 0.0;
00259 bullet[loop].modelpolylist[7].Rotate = 0.0;
00260 bullet[loop].modelpolylist[7].Vertex[0] = tempVertices[6];
00261 bullet[loop].modelpolylist[7].Vertex[1] = tempVertices[7];
00262 bullet[loop].modelpolylist[7].Vertex[2] = tempVertices[3];
00263 bullet[loop].modelpolylist[7].Texture = texture[4].TexID;
00264 bullet[loop].modelpolylist[7].Vertex[0].u = 0.0;
00265 bullet[loop].modelpolylist[7].Vertex[0].v = 0.0;
00266 bullet[loop].modelpolylist[7].Vertex[1].u = 1.0;
00267 bullet[loop].modelpolylist[7].Vertex[1].v = 0.0;
00268 bullet[loop].modelpolylist[7].Vertex[2].u = 1.0;
00269 bullet[loop].modelpolylist[7].Vertex[2].v = 1.0;
00270
00271 bullet[loop].modelpolylist[8].Scale[0] = 1.0;
00272 bullet[loop].modelpolylist[8].Scale[1] = 1.0;
00273 bullet[loop].modelpolylist[8].Shift[0] = 0.0;
00274 bullet[loop].modelpolylist[8].Shift[1] = 0.0;
00275 bullet[loop].modelpolylist[8].Rotate = 0.0;
00276 bullet[loop].modelpolylist[8].Vertex[0] = tempVertices[7];
00277 bullet[loop].modelpolylist[8].Vertex[1] = tempVertices[0];
00278 bullet[loop].modelpolylist[8].Vertex[2] = tempVertices[3];
00279 bullet[loop].modelpolylist[8].Texture = texture[4].TexID;
00280 bullet[loop].modelpolylist[8].Vertex[0].u = 0.0;
00281 bullet[loop].modelpolylist[8].Vertex[0].v = 0.0;
00282 bullet[loop].modelpolylist[8].Vertex[1].u = 1.0;
00283 bullet[loop].modelpolylist[8].Vertex[1].v = 1.0;
00284 bullet[loop].modelpolylist[8].Vertex[2].u = 0.0;
00285 bullet[loop].modelpolylist[8].Vertex[2].v = 1.0;
00286
00287 bullet[loop].modelpolylist[9].Scale[0] = 1.0;
00288 bullet[loop].modelpolylist[9].Scale[1] = 1.0;
00289 bullet[loop].modelpolylist[9].Shift[0] = 0.0;
00290 bullet[loop].modelpolylist[9].Shift[1] = 0.0;
00291 bullet[loop].modelpolylist[9].Rotate = 0.0;
00292 bullet[loop].modelpolylist[9].Vertex[0] = tempVertices[7];
00293 bullet[loop].modelpolylist[9].Vertex[1] = tempVertices[4];
00294 bullet[loop].modelpolylist[9].Vertex[2] = tempVertices[0];
00295 bullet[loop].modelpolylist[9].Texture = texture[4].TexID;
00296 bullet[loop].modelpolylist[9].Vertex[0].u = 0.0;
00297 bullet[loop].modelpolylist[9].Vertex[0].v = 0.0;
00298 bullet[loop].modelpolylist[9].Vertex[1].u = 1.0;
00299 bullet[loop].modelpolylist[9].Vertex[1].v = 0.0;
00300 bullet[loop].modelpolylist[9].Vertex[2].u = 1.0;
00301 bullet[loop].modelpolylist[9].Vertex[2].v = 1.0;
00302
00303 bullet[loop].modelpolylist[10].Scale[0] = 1.0;
00304 bullet[loop].modelpolylist[10].Scale[1] = 1.0;
00305 bullet[loop].modelpolylist[10].Shift[0] = 0.0;
00306 bullet[loop].modelpolylist[10].Shift[1] = 0.0;
00307 bullet[loop].modelpolylist[10].Rotate = 0.0;
00308 bullet[loop].modelpolylist[10].Vertex[0] = tempVertices[5];
00309 bullet[loop].modelpolylist[10].Vertex[1] = tempVertices[2];
00310 bullet[loop].modelpolylist[10].Vertex[2] = tempVertices[1];
00311 bullet[loop].modelpolylist[10].Texture = texture[4].TexID;
00312 bullet[loop].modelpolylist[10].Vertex[0].u = 0.0;
00313 bullet[loop].modelpolylist[10].Vertex[0].v = 0.0;
00314 bullet[loop].modelpolylist[10].Vertex[1].u = 1.0;
00315 bullet[loop].modelpolylist[10].Vertex[1].v = 1.0;
00316 bullet[loop].modelpolylist[10].Vertex[2].u = 0.0;
00317 bullet[loop].modelpolylist[10].Vertex[2].v = 1.0;
00318
00319 bullet[loop].modelpolylist[11].Scale[0] = 1.0;
00320 bullet[loop].modelpolylist[11].Scale[1] = 1.0;
00321 bullet[loop].modelpolylist[11].Shift[0] = 0.0;
00322 bullet[loop].modelpolylist[11].Shift[1] = 0.0;
00323 bullet[loop].modelpolylist[11].Rotate = 0.0;
00324 bullet[loop].modelpolylist[11].Vertex[0] = tempVertices[5];
00325 bullet[loop].modelpolylist[11].Vertex[1] = tempVertices[6];
00326 bullet[loop].modelpolylist[11].Vertex[2] = tempVertices[2];
00327 bullet[loop].modelpolylist[11].Texture = texture[4].TexID;
00328 bullet[loop].modelpolylist[11].Vertex[0].u = 0.0;
00329 bullet[loop].modelpolylist[11].Vertex[0].v = 0.0;
00330 bullet[loop].modelpolylist[11].Vertex[1].u = 1.0;
00331 bullet[loop].modelpolylist[11].Vertex[1].v = 0.0;
00332 bullet[loop].modelpolylist[11].Vertex[2].u = 1.0;
00333 bullet[loop].modelpolylist[11].Vertex[2].v = 1.0;
00334
00335 for (int innerloop = 0; innerloop < bullet[loop].numpolys; innerloop++)
00336 {
00337 bullet[loop].modelpolylist[innerloop].SetNormal();
00338 }
00339 }
00340 }
00341
00342 void UpdateBullets()
00343 {
00344
00345 int Pos, CollisionNode, CollisionPoly;
00346 VECTOR EndPos, p0, pN, a, b, c;
00347 BSP_node* tempNode;
00348 DECAL* tempDecal;
00349 float magnitudedistance, shortestdistance;
00350 VECTOR distance, CollisionPoint;
00351
00352 for (int loop = 0; loop < numBullets; loop++)
00353 {
00354
00355 shortestdistance = 1000000.0;
00356
00357 if (bullet[loop].active == true)
00358 {
00359
00360 if (bullet[loop].flag == true)
00361 {
00362
00363 for (CollisionNode = 1; CollisionNode <= numleaves; CollisionNode++)
00364 {
00365
00366 tempNode = LeafList.Get(CollisionNode);
00367
00368 if (tempNode->visible == true)
00369 {
00370
00371 for (CollisionPoly = 0; CollisionPoly < tempNode->numpolys; CollisionPoly++)
00372 {
00373
00374 p0 = tempNode->nodepolylist[CollisionPoly].Vertex[0].coords;
00375
00376 pN = tempNode->nodepolylist[CollisionPoly].Vertex[0].normal;
00377
00378 if (ClassifyPoint(bullet[loop].Position, p0, pN) != 1)
00379 continue;
00380
00381 EndPos.x = bullet[loop].Position.x - bullet[loop].VelocityVector.x * 500.0;
00382 EndPos.y = bullet[loop].Position.y - bullet[loop].VelocityVector.y * 500.0;
00383 EndPos.z = bullet[loop].Position.z - bullet[loop].VelocityVector.z * 500.0;
00384
00385 CollisionPoint = line_plane_collision(&bullet[loop].Position, &EndPos, &tempNode->nodepolylist[CollisionPoly]);
00386
00387 if (!CheckClipPlanes(camera[currentCamera], CollisionPoint))
00388 continue;
00389 a = tempNode->nodepolylist[CollisionPoly].Vertex[0].coords;
00390 b = tempNode->nodepolylist[CollisionPoly].Vertex[1].coords;
00391 c = tempNode->nodepolylist[CollisionPoly].Vertex[2].coords;
00392
00393 if (CheckPointInTriangle(CollisionPoint, a, b, c))
00394 {
00395
00396 distance = CollisionPoint - bullet[loop].Position;
00397 magnitudedistance = distance.GetMagnitude();
00398
00399 if (magnitudedistance < shortestdistance)
00400 {
00401
00402 bullet[loop].flag = false;
00403
00404 shortestdistance = magnitudedistance;
00405
00406 bullet[loop].CollisionVector = CollisionPoint;
00407 bullet[loop].collisionnode = CollisionNode;
00408 bullet[loop].collisionpoly = CollisionPoly;
00409 }
00410 }
00411 }
00412 }
00413 }
00414 }
00415
00416 float bulletFactor;
00417 if (bulletspeed == 0)
00418 bulletFactor = 1200.0;
00419 else
00420 bulletFactor = 10.0;
00421
00422 bullet[loop].PreviousPosition = bullet[loop].Position;
00423
00424 bullet[loop].Position.x -= bullet[loop].VelocityVector.x * bulletFactor * bullet[loop].Multiplier;
00425 bullet[loop].Position.y -= bullet[loop].VelocityVector.y * bulletFactor * bullet[loop].Multiplier;
00426 bullet[loop].Position.z -= bullet[loop].VelocityVector.z * bulletFactor * bullet[loop].Multiplier;
00427
00428 bullet[loop].leaf = FindCurrentLeaf(bullet[loop].Position, root);
00429
00430 tempNode = LeafList.Get(bullet[loop].collisionnode);
00431
00432 p0 = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].coords;
00433 pN = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].normal;
00434
00435 Pos = ClassifyPoint(bullet[loop].Position, p0, pN);
00436
00437 if (Pos != 1)
00438 {
00439
00440 bullet[loop].active = false;
00441
00442 numBulletsActive--;
00443
00444 VECTOR CollisionPoint = line_plane_collision(&bullet[loop].PreviousPosition, &bullet[loop].Position, &tempNode->nodepolylist[bullet[loop].collisionpoly]);
00445 CreateSparks(bullet[loop].PreviousPosition, CollisionPoint, pN);
00446
00447 if (tempNode->numdecals < maxDecals)
00448 {
00449
00450 tempNode->numdecals++;
00451 tempDecal = new DECAL;
00452
00453 tempDecal->type = bullettype;
00454
00455 if (tempDecal->type == 0)
00456 tempDecal->Size = 0.5;
00457 else
00458 tempDecal->Size = 1.0;
00459 tempDecal->linkPosition = tempNode->numdecals;
00460 tempDecal->CollisionVector = bullet[loop].CollisionVector;
00461
00462 tempDecal->counter = 2000;
00463
00464 CreateDecal(tempDecal->CollisionVector, &tempNode->nodepolylist[bullet[loop].collisionpoly], tempDecal);
00465 tempNode->decallist.Insert(tempDecal);
00466
00467
00468 impactflashdecal.CollisionVector = bullet[loop].CollisionVector;
00469 CreateDecal(impactflashdecal.CollisionVector, &tempNode->nodepolylist[bullet[loop].collisionpoly], &impactflashdecal);
00470 impactflashdecal.active = true;
00471 impactflashdecal.Size = 1;
00472 }
00473 }
00474
00475 distance = bullet[loop].Position - camera[currentCamera].Position;
00476 magnitudedistance = distance.GetMagnitude();
00477
00478 if (magnitudedistance > 500)
00479 {
00480 bullet[loop].active = 0;
00481 numBulletsActive--;
00482 }
00483 }
00484 }
00485 }
00486
00487 void DeleteBullets()
00488 {
00489
00490 for (int loop = 0; loop < numBullets; loop++)
00491 bullet[loop].Delete();
00492
00493 delete[] bullet;
00494 }