#include "object.h"
#include "vector.h"
#include "vertex.h"
#include "polygon.h"
#include "matrix.h"
Go to the source code of this file.
Compounds | |
class | BULLET |
Functions | |
void | InitializeBullets () |
void | UpdateBullets () |
void | DeleteBullets () |
|
Definition at line 487 of file bullet.cpp. References BULLET::Delete(), and numBullets. Referenced by WndProc().
00488 { 00489 // Call the delete method for all bullets 00490 for (int loop = 0; loop < numBullets; loop++) 00491 bullet[loop].Delete(); 00492 // Delete the array of bullets 00493 delete[] bullet; 00494 } |
|
Definition at line 94 of file bullet.cpp. References BULLET::active, VERTEX::coords, BULLET::Initialize(), BULLET::modelpolylist, numBullets, BULLET::numpolys, POLYGON::numVertices, BULLET::numverts, POLYGON::removable, POLYGON::Rotate, POLYGON::Scale, POLYGON::SetNormal(), POLYGON::Shift, TEXTURE::TexID, POLYGON::Texture, VERTEX::u, VERTEX::v, POLYGON::Vertex, VECTOR::x, VECTOR::y, and VECTOR::z. Referenced by InitGL().
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 } |
|
Definition at line 342 of file bullet.cpp. References DECAL::active, BULLET::active, bulletspeed, bullettype, CheckClipPlanes(), CheckPointInTriangle(), ClassifyPoint(), BULLET::collisionnode, BULLET::collisionpoly, DECAL::CollisionVector, BULLET::CollisionVector, VERTEX::coords, DECAL::counter, CreateDecal(), CreateSparks(), currentCamera, BSP_node::decallist, FindCurrentLeaf(), BULLET::flag, LinkedList< T >::Get(), VECTOR::GetMagnitude(), LinkedList< DECAL >::Insert(), BULLET::leaf, line_plane_collision(), DECAL::linkPosition, maxDecals, OBJECT::Multiplier, BSP_node::nodepolylist, VERTEX::normal, numBullets, numBulletsActive, BSP_node::numdecals, numleaves, BSP_node::numpolys, OBJECT::Position, BULLET::PreviousPosition, DECAL::Size, DECAL::type, BULLET::VelocityVector, POLYGON::Vertex, BSP_node::visible, VECTOR::x, VECTOR::y, and VECTOR::z. Referenced by DrawGLScene().
00343 { 00344 // Update Bullets 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 // Loop through maximum number of bullets 00352 for (int loop = 0; loop < numBullets; loop++) 00353 { 00354 // Set to a distance further than any in the map 00355 shortestdistance = 1000000.0; 00356 // If the bullet is active 00357 if (bullet[loop].active == true) 00358 { 00359 // If it has just been fired 00360 if (bullet[loop].flag == true) 00361 { 00362 // Loop through all leaves 00363 for (CollisionNode = 1; CollisionNode <= numleaves; CollisionNode++) 00364 { 00365 // Get the leaf node 00366 tempNode = LeafList.Get(CollisionNode); 00367 // If the node is marked as visible 00368 if (tempNode->visible == true) 00369 { 00370 // Loop through all polygons in the leaf 00371 for (CollisionPoly = 0; CollisionPoly < tempNode->numpolys; CollisionPoly++) 00372 { 00373 // Get a point on the polygon 00374 p0 = tempNode->nodepolylist[CollisionPoly].Vertex[0].coords; 00375 // Get the normal of the polygon 00376 pN = tempNode->nodepolylist[CollisionPoly].Vertex[0].normal; 00377 // If the bullet isn't in front of the polygon then continue 00378 if (ClassifyPoint(bullet[loop].Position, p0, pN) != 1) 00379 continue; 00380 // Find the bullets final position 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 // Find collision point on the plane 00385 CollisionPoint = line_plane_collision(&bullet[loop].Position, &EndPos, &tempNode->nodepolylist[CollisionPoly]); 00386 // If the collision point is outside the frustum then continue (stops collisions behind the player) 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 // If collision point is within the polygon 00393 if (CheckPointInTriangle(CollisionPoint, a, b, c)) 00394 { 00395 // Get the collision distance 00396 distance = CollisionPoint - bullet[loop].Position; 00397 magnitudedistance = distance.GetMagnitude(); 00398 // If collision distance is shorter than previous distance 00399 if (magnitudedistance < shortestdistance) 00400 { 00401 // Bullet has been processed so set first time flag to false 00402 bullet[loop].flag = false; 00403 // Set new shortest distance 00404 shortestdistance = magnitudedistance; 00405 // Set collision details 00406 bullet[loop].CollisionVector = CollisionPoint; 00407 bullet[loop].collisionnode = CollisionNode; 00408 bullet[loop].collisionpoly = CollisionPoly; 00409 } 00410 } 00411 } 00412 } 00413 } 00414 } 00415 // Set bullet speed 00416 float bulletFactor; 00417 if (bulletspeed == 0) 00418 bulletFactor = 1200.0; 00419 else 00420 bulletFactor = 10.0; 00421 // Set the previous position 00422 bullet[loop].PreviousPosition = bullet[loop].Position; 00423 // Get the present position 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 // Find the leaf node of the bullets position (to determine when to render it) 00428 bullet[loop].leaf = FindCurrentLeaf(bullet[loop].Position, root); 00429 // Get the bullets collision node 00430 tempNode = LeafList.Get(bullet[loop].collisionnode); 00431 // Get a point on the collision polygon and it's normal 00432 p0 = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].coords; 00433 pN = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].normal; 00434 // Classify the bullet position with respect to the collision polygon 00435 Pos = ClassifyPoint(bullet[loop].Position, p0, pN); 00436 // If the bullet is on or behind the collision polygon 00437 if (Pos != 1) 00438 { 00439 // Set the bullet to inactive 00440 bullet[loop].active = false; 00441 // Decrease the active bullet count 00442 numBulletsActive--; 00443 // Create the particles 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 // If we have not reached the maximum decals for this node 00447 if (tempNode->numdecals < maxDecals) 00448 { 00449 // Create a new decal and set it's properties 00450 tempNode->numdecals++; 00451 tempDecal = new DECAL; 00452 // Set the decal to the current global type of decal selected 00453 tempDecal->type = bullettype; 00454 // Set the decal's size accordingly 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 // Set persistence counter (decreased with each render) 00462 tempDecal->counter = 2000; 00463 00464 CreateDecal(tempDecal->CollisionVector, &tempNode->nodepolylist[bullet[loop].collisionpoly], tempDecal); 00465 tempNode->decallist.Insert(tempDecal); 00466 00467 // Set impact-flash decal properties 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 // Find distance of bullet from camera 00475 distance = bullet[loop].Position - camera[currentCamera].Position; 00476 magnitudedistance = distance.GetMagnitude(); 00477 // If the distance is greater than 500 units then make bullet inactive 00478 if (magnitudedistance > 500) 00479 { 00480 bullet[loop].active = 0; 00481 numBulletsActive--; 00482 } 00483 } 00484 } 00485 } |