#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 490 of file bullet.cpp. References BULLET::Delete(), and numBullets. Referenced by WndProc().
00491 { 00492 // Call the delete method for all bullets 00493 for (int loop = 0; loop < numBullets; loop++) 00494 bullet[loop].Delete(); 00495 // Delete the array of bullets 00496 delete[] bullet; 00497 } |
|
Definition at line 93 of file bullet.cpp. References BULLET::active, BULLET::Initialize(), BULLET::modelpolylist, numBullets, BULLET::numpolys, BULLET::numverts, POLYGON::Rotate, POLYGON::Scale, POLYGON::Shift, TEXTURE::TexID, POLYGON::Texture, VERTEX::u, VERTEX::v, POLYGON::Vertex, VERTEX::x, VERTEX::y, and VERTEX::z. Referenced by InitGL().
00094 { 00095 for (int loop = 0; loop < numBullets; loop++) 00096 { 00097 bullet[loop].numverts = 8; 00098 bullet[loop].numpolys = 12; 00099 bullet[loop].Initialize(); 00100 bullet[loop].active = 0; 00101 00102 vertex[0].x = -0.05; 00103 vertex[0].y = 0.05; 00104 vertex[0].z = 0.0; 00105 00106 vertex[1].x = 0.05; 00107 vertex[1].y = 0.05; 00108 vertex[1].z = 0.0; 00109 00110 vertex[2].x = 0.05; 00111 vertex[2].y = 0.05; 00112 vertex[2].z = -0.2; 00113 00114 vertex[3].x = -0.05; 00115 vertex[3].y = 0.05; 00116 vertex[3].z = -0.2; 00117 00118 vertex[4].x = -0.05; 00119 vertex[4].y = -0.05; 00120 vertex[4].z = 0.0; 00121 00122 vertex[5].x = 0.05; 00123 vertex[5].y = -0.05; 00124 vertex[5].z = 0.0; 00125 00126 vertex[6].x = 0.05; 00127 vertex[6].y = -0.05; 00128 vertex[6].z = -0.2; 00129 00130 vertex[7].x = -0.05; 00131 vertex[7].y = -0.05; 00132 vertex[7].z = -0.2; 00133 00134 bullet[loop].modelpolylist[0].Scale[0] = 1.0; 00135 bullet[loop].modelpolylist[0].Scale[1] = 1.0; 00136 bullet[loop].modelpolylist[0].Shift[0] = 0.0; 00137 bullet[loop].modelpolylist[0].Shift[1] = 0.0; 00138 bullet[loop].modelpolylist[0].Rotate = 0.0; 00139 bullet[loop].modelpolylist[0].Vertex[0] = vertex[0]; 00140 bullet[loop].modelpolylist[0].Vertex[1] = vertex[2]; 00141 bullet[loop].modelpolylist[0].Vertex[2] = vertex[3]; 00142 bullet[loop].modelpolylist[0].Texture = texture[4].TexID; 00143 bullet[loop].modelpolylist[0].Vertex[0].u = 0.0; 00144 bullet[loop].modelpolylist[0].Vertex[0].v = 0.0; 00145 bullet[loop].modelpolylist[0].Vertex[1].u = 1.0; 00146 bullet[loop].modelpolylist[0].Vertex[1].v = 1.0; 00147 bullet[loop].modelpolylist[0].Vertex[2].u = 0.0; 00148 bullet[loop].modelpolylist[0].Vertex[2].v = 1.0; 00149 00150 bullet[loop].modelpolylist[1].Scale[0] = 1.0; 00151 bullet[loop].modelpolylist[1].Scale[1] = 1.0; 00152 bullet[loop].modelpolylist[1].Shift[0] = 0.0; 00153 bullet[loop].modelpolylist[1].Shift[1] = 0.0; 00154 bullet[loop].modelpolylist[1].Rotate = 0.0; 00155 bullet[loop].modelpolylist[1].Vertex[0] = vertex[0]; 00156 bullet[loop].modelpolylist[1].Vertex[1] = vertex[1]; 00157 bullet[loop].modelpolylist[1].Vertex[2] = vertex[2]; 00158 bullet[loop].modelpolylist[1].Texture = texture[4].TexID; 00159 bullet[loop].modelpolylist[1].Vertex[0].u = 0.0; 00160 bullet[loop].modelpolylist[1].Vertex[0].v = 0.0; 00161 bullet[loop].modelpolylist[1].Vertex[1].u = 1.0; 00162 bullet[loop].modelpolylist[1].Vertex[1].v = 0.0; 00163 bullet[loop].modelpolylist[1].Vertex[2].u = 1.0; 00164 bullet[loop].modelpolylist[1].Vertex[2].v = 1.0; 00165 00166 bullet[loop].modelpolylist[2].Scale[0] = 1.0; 00167 bullet[loop].modelpolylist[2].Scale[1] = 1.0; 00168 bullet[loop].modelpolylist[2].Shift[0] = 0.0; 00169 bullet[loop].modelpolylist[2].Shift[1] = 0.0; 00170 bullet[loop].modelpolylist[2].Rotate = 0.0; 00171 bullet[loop].modelpolylist[2].Vertex[0] = vertex[5]; 00172 bullet[loop].modelpolylist[2].Vertex[1] = vertex[7]; 00173 bullet[loop].modelpolylist[2].Vertex[2] = vertex[6]; 00174 bullet[loop].modelpolylist[2].Texture = texture[4].TexID; 00175 bullet[loop].modelpolylist[2].Vertex[0].u = 0.0; 00176 bullet[loop].modelpolylist[2].Vertex[0].v = 0.0; 00177 bullet[loop].modelpolylist[2].Vertex[1].u = 1.0; 00178 bullet[loop].modelpolylist[2].Vertex[1].v = 1.0; 00179 bullet[loop].modelpolylist[2].Vertex[2].u = 0.0; 00180 bullet[loop].modelpolylist[2].Vertex[2].v = 1.0; 00181 00182 bullet[loop].modelpolylist[3].Scale[0] = 1.0; 00183 bullet[loop].modelpolylist[3].Scale[1] = 1.0; 00184 bullet[loop].modelpolylist[3].Shift[0] = 0.0; 00185 bullet[loop].modelpolylist[3].Shift[1] = 0.0; 00186 bullet[loop].modelpolylist[3].Rotate = 0.0; 00187 bullet[loop].modelpolylist[3].Vertex[0] = vertex[5]; 00188 bullet[loop].modelpolylist[3].Vertex[1] = vertex[4]; 00189 bullet[loop].modelpolylist[3].Vertex[2] = vertex[7]; 00190 bullet[loop].modelpolylist[3].Texture = texture[4].TexID; 00191 bullet[loop].modelpolylist[3].Vertex[0].u = 0.0; 00192 bullet[loop].modelpolylist[3].Vertex[0].v = 0.0; 00193 bullet[loop].modelpolylist[3].Vertex[1].u = 1.0; 00194 bullet[loop].modelpolylist[3].Vertex[1].v = 0.0; 00195 bullet[loop].modelpolylist[3].Vertex[2].u = 1.0; 00196 bullet[loop].modelpolylist[3].Vertex[2].v = 1.0; 00197 00198 bullet[loop].modelpolylist[4].Scale[0] = 1.0; 00199 bullet[loop].modelpolylist[4].Scale[1] = 1.0; 00200 bullet[loop].modelpolylist[4].Shift[0] = 0.0; 00201 bullet[loop].modelpolylist[4].Shift[1] = 0.0; 00202 bullet[loop].modelpolylist[4].Rotate = 0.0; 00203 bullet[loop].modelpolylist[4].Vertex[0] = vertex[4]; 00204 bullet[loop].modelpolylist[4].Vertex[1] = vertex[1]; 00205 bullet[loop].modelpolylist[4].Vertex[2] = vertex[0]; 00206 bullet[loop].modelpolylist[4].Texture = texture[4].TexID; 00207 bullet[loop].modelpolylist[4].Vertex[0].u = 0.0; 00208 bullet[loop].modelpolylist[4].Vertex[0].v = 0.0; 00209 bullet[loop].modelpolylist[4].Vertex[1].u = 1.0; 00210 bullet[loop].modelpolylist[4].Vertex[1].v = 1.0; 00211 bullet[loop].modelpolylist[4].Vertex[2].u = 0.0; 00212 bullet[loop].modelpolylist[4].Vertex[2].v = 1.0; 00213 00214 bullet[loop].modelpolylist[5].Scale[0] = 1.0; 00215 bullet[loop].modelpolylist[5].Scale[1] = 1.0; 00216 bullet[loop].modelpolylist[5].Shift[0] = 0.0; 00217 bullet[loop].modelpolylist[5].Shift[1] = 0.0; 00218 bullet[loop].modelpolylist[5].Rotate = 0.0; 00219 bullet[loop].modelpolylist[5].Vertex[0] = vertex[4]; 00220 bullet[loop].modelpolylist[5].Vertex[1] = vertex[5]; 00221 bullet[loop].modelpolylist[5].Vertex[2] = vertex[1]; 00222 bullet[loop].modelpolylist[5].Texture = texture[4].TexID; 00223 bullet[loop].modelpolylist[5].Vertex[0].u = 0.0; 00224 bullet[loop].modelpolylist[5].Vertex[0].v = 0.0; 00225 bullet[loop].modelpolylist[5].Vertex[1].u = 1.0; 00226 bullet[loop].modelpolylist[5].Vertex[1].v = 0.0; 00227 bullet[loop].modelpolylist[5].Vertex[2].u = 1.0; 00228 bullet[loop].modelpolylist[5].Vertex[2].v = 1.0; 00229 00230 bullet[loop].modelpolylist[6].Scale[0] = 1.0; 00231 bullet[loop].modelpolylist[6].Scale[1] = 1.0; 00232 bullet[loop].modelpolylist[6].Shift[0] = 0.0; 00233 bullet[loop].modelpolylist[6].Shift[1] = 0.0; 00234 bullet[loop].modelpolylist[6].Rotate = 0.0; 00235 bullet[loop].modelpolylist[6].Vertex[0] = vertex[6]; 00236 bullet[loop].modelpolylist[6].Vertex[1] = vertex[3]; 00237 bullet[loop].modelpolylist[6].Vertex[2] = vertex[2]; 00238 bullet[loop].modelpolylist[6].Texture = texture[4].TexID; 00239 bullet[loop].modelpolylist[6].Vertex[0].u = 0.0; 00240 bullet[loop].modelpolylist[6].Vertex[0].v = 0.0; 00241 bullet[loop].modelpolylist[6].Vertex[1].u = 1.0; 00242 bullet[loop].modelpolylist[6].Vertex[1].v = 1.0; 00243 bullet[loop].modelpolylist[6].Vertex[2].u = 0.0; 00244 bullet[loop].modelpolylist[6].Vertex[2].v = 1.0; 00245 00246 bullet[loop].modelpolylist[7].Scale[0] = 1.0; 00247 bullet[loop].modelpolylist[7].Scale[1] = 1.0; 00248 bullet[loop].modelpolylist[7].Shift[0] = 0.0; 00249 bullet[loop].modelpolylist[7].Shift[1] = 0.0; 00250 bullet[loop].modelpolylist[7].Rotate = 0.0; 00251 bullet[loop].modelpolylist[7].Vertex[0] = vertex[6]; 00252 bullet[loop].modelpolylist[7].Vertex[1] = vertex[7]; 00253 bullet[loop].modelpolylist[7].Vertex[2] = vertex[3]; 00254 bullet[loop].modelpolylist[7].Texture = texture[4].TexID; 00255 bullet[loop].modelpolylist[7].Vertex[0].u = 0.0; 00256 bullet[loop].modelpolylist[7].Vertex[0].v = 0.0; 00257 bullet[loop].modelpolylist[7].Vertex[1].u = 1.0; 00258 bullet[loop].modelpolylist[7].Vertex[1].v = 0.0; 00259 bullet[loop].modelpolylist[7].Vertex[2].u = 1.0; 00260 bullet[loop].modelpolylist[7].Vertex[2].v = 1.0; 00261 00262 bullet[loop].modelpolylist[8].Scale[0] = 1.0; 00263 bullet[loop].modelpolylist[8].Scale[1] = 1.0; 00264 bullet[loop].modelpolylist[8].Shift[0] = 0.0; 00265 bullet[loop].modelpolylist[8].Shift[1] = 0.0; 00266 bullet[loop].modelpolylist[8].Rotate = 0.0; 00267 bullet[loop].modelpolylist[8].Vertex[0] = vertex[7]; 00268 bullet[loop].modelpolylist[8].Vertex[1] = vertex[0]; 00269 bullet[loop].modelpolylist[8].Vertex[2] = vertex[3]; 00270 bullet[loop].modelpolylist[8].Texture = texture[4].TexID; 00271 bullet[loop].modelpolylist[8].Vertex[0].u = 0.0; 00272 bullet[loop].modelpolylist[8].Vertex[0].v = 0.0; 00273 bullet[loop].modelpolylist[8].Vertex[1].u = 1.0; 00274 bullet[loop].modelpolylist[8].Vertex[1].v = 1.0; 00275 bullet[loop].modelpolylist[8].Vertex[2].u = 0.0; 00276 bullet[loop].modelpolylist[8].Vertex[2].v = 1.0; 00277 00278 bullet[loop].modelpolylist[9].Scale[0] = 1.0; 00279 bullet[loop].modelpolylist[9].Scale[1] = 1.0; 00280 bullet[loop].modelpolylist[9].Shift[0] = 0.0; 00281 bullet[loop].modelpolylist[9].Shift[1] = 0.0; 00282 bullet[loop].modelpolylist[9].Rotate = 0.0; 00283 bullet[loop].modelpolylist[9].Vertex[0] = vertex[7]; 00284 bullet[loop].modelpolylist[9].Vertex[1] = vertex[4]; 00285 bullet[loop].modelpolylist[9].Vertex[2] = vertex[0]; 00286 bullet[loop].modelpolylist[9].Texture = texture[4].TexID; 00287 bullet[loop].modelpolylist[9].Vertex[0].u = 0.0; 00288 bullet[loop].modelpolylist[9].Vertex[0].v = 0.0; 00289 bullet[loop].modelpolylist[9].Vertex[1].u = 1.0; 00290 bullet[loop].modelpolylist[9].Vertex[1].v = 0.0; 00291 bullet[loop].modelpolylist[9].Vertex[2].u = 1.0; 00292 bullet[loop].modelpolylist[9].Vertex[2].v = 1.0; 00293 00294 bullet[loop].modelpolylist[10].Scale[0] = 1.0; 00295 bullet[loop].modelpolylist[10].Scale[1] = 1.0; 00296 bullet[loop].modelpolylist[10].Shift[0] = 0.0; 00297 bullet[loop].modelpolylist[10].Shift[1] = 0.0; 00298 bullet[loop].modelpolylist[10].Rotate = 0.0; 00299 bullet[loop].modelpolylist[10].Vertex[0] = vertex[5]; 00300 bullet[loop].modelpolylist[10].Vertex[1] = vertex[2]; 00301 bullet[loop].modelpolylist[10].Vertex[2] = vertex[1]; 00302 bullet[loop].modelpolylist[10].Texture = texture[4].TexID; 00303 bullet[loop].modelpolylist[10].Vertex[0].u = 0.0; 00304 bullet[loop].modelpolylist[10].Vertex[0].v = 0.0; 00305 bullet[loop].modelpolylist[10].Vertex[1].u = 1.0; 00306 bullet[loop].modelpolylist[10].Vertex[1].v = 1.0; 00307 bullet[loop].modelpolylist[10].Vertex[2].u = 0.0; 00308 bullet[loop].modelpolylist[10].Vertex[2].v = 1.0; 00309 00310 bullet[loop].modelpolylist[11].Scale[0] = 1.0; 00311 bullet[loop].modelpolylist[11].Scale[1] = 1.0; 00312 bullet[loop].modelpolylist[11].Shift[0] = 0.0; 00313 bullet[loop].modelpolylist[11].Shift[1] = 0.0; 00314 bullet[loop].modelpolylist[11].Rotate = 0.0; 00315 bullet[loop].modelpolylist[11].Vertex[0] = vertex[5]; 00316 bullet[loop].modelpolylist[11].Vertex[1] = vertex[6]; 00317 bullet[loop].modelpolylist[11].Vertex[2] = vertex[2]; 00318 bullet[loop].modelpolylist[11].Texture = texture[4].TexID; 00319 bullet[loop].modelpolylist[11].Vertex[0].u = 0.0; 00320 bullet[loop].modelpolylist[11].Vertex[0].v = 0.0; 00321 bullet[loop].modelpolylist[11].Vertex[1].u = 1.0; 00322 bullet[loop].modelpolylist[11].Vertex[1].v = 0.0; 00323 bullet[loop].modelpolylist[11].Vertex[2].u = 1.0; 00324 bullet[loop].modelpolylist[11].Vertex[2].v = 1.0; 00325 } 00326 } |
|
Definition at line 328 of file bullet.cpp. References DECAL::active, BULLET::active, bulletspeed, bullettype, CheckClipPlanes(), CheckPointInTriangle(), ClassifyPoint(), BULLET::collisionnode, BULLET::collisionpoly, DECAL::CollisionVector, BULLET::CollisionVector, 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, ListNode::node, BSP_node::nodepolylist, numBullets, numBulletsActive, BSP_node::numdecals, numleaves, BSP_node::numpolys, VERTEX::nx, VERTEX::ny, VERTEX::nz, OBJECT::Position, BULLET::PreviousPosition, DECAL::Size, DECAL::type, BULLET::VelocityVector, POLYGON::Vertex, BSP_node::visible, VERTEX::x, VECTOR::x, VERTEX::y, VECTOR::y, VERTEX::z, and VECTOR::z. Referenced by DrawGLScene().
00329 { 00330 // Update Bullets 00331 int Pos, CollisionNode, CollisionPoly; 00332 VECTOR EndPos, p0, pN, a, b, c; 00333 ListNode* tempListNode; 00334 BSP_node* tempNode; 00335 DECAL* tempDecal; 00336 float magnitudedistance, shortestdistance; 00337 VECTOR distance, CollisionPoint; 00338 // Loop through maximum number of bullets 00339 for (int loop = 0; loop < numBullets; loop++) 00340 { 00341 // Set to a distance further than any in the map 00342 shortestdistance = 1000000.0; 00343 // If the bullet is active 00344 if (bullet[loop].active == true) 00345 { 00346 // If it has just been fired 00347 if (bullet[loop].flag == true) 00348 { 00349 // Loop through all leaves 00350 for (CollisionNode = 1; CollisionNode <= numleaves; CollisionNode++) 00351 { 00352 // Get the leaf node 00353 tempListNode = LeafList.Get(CollisionNode); 00354 tempNode = tempListNode->node; 00355 // If the node is marked as visible 00356 if (tempNode->visible == true) 00357 { 00358 // Loop through all polygons in the leaf 00359 for (CollisionPoly = 0; CollisionPoly < tempNode->numpolys; CollisionPoly++) 00360 { 00361 // Get a point on the polygon 00362 p0.x = tempNode->nodepolylist[CollisionPoly].Vertex[0].x; 00363 p0.y = tempNode->nodepolylist[CollisionPoly].Vertex[0].y; 00364 p0.z = tempNode->nodepolylist[CollisionPoly].Vertex[0].z; 00365 // Get the normal of the polygon 00366 pN.x = tempNode->nodepolylist[CollisionPoly].Vertex[0].nx; 00367 pN.y = tempNode->nodepolylist[CollisionPoly].Vertex[0].ny; 00368 pN.z = tempNode->nodepolylist[CollisionPoly].Vertex[0].nz; 00369 // If the bullet isn't in front of the polygon then continue 00370 if (ClassifyPoint(bullet[loop].Position, p0, pN) != 1) 00371 continue; 00372 // Find the bullets final position 00373 EndPos.x = bullet[loop].Position.x - bullet[loop].VelocityVector.x * 500.0; 00374 EndPos.y = bullet[loop].Position.y - bullet[loop].VelocityVector.y * 500.0; 00375 EndPos.z = bullet[loop].Position.z - bullet[loop].VelocityVector.z * 500.0; 00376 // Find collision point on the plane 00377 CollisionPoint = line_plane_collision(&bullet[loop].Position, &EndPos, &tempNode->nodepolylist[CollisionPoly]); 00378 // If the collision point is outside the frustum then continue (stops collisions behind the player) 00379 if (!CheckClipPlanes(camera[currentCamera], CollisionPoint)) 00380 continue; 00381 a.x = tempNode->nodepolylist[CollisionPoly].Vertex[0].x; 00382 a.y = tempNode->nodepolylist[CollisionPoly].Vertex[0].y; 00383 a.z = tempNode->nodepolylist[CollisionPoly].Vertex[0].z; 00384 b.x = tempNode->nodepolylist[CollisionPoly].Vertex[1].x; 00385 b.y = tempNode->nodepolylist[CollisionPoly].Vertex[1].y; 00386 b.z = tempNode->nodepolylist[CollisionPoly].Vertex[1].z; 00387 c.x = tempNode->nodepolylist[CollisionPoly].Vertex[2].x; 00388 c.y = tempNode->nodepolylist[CollisionPoly].Vertex[2].y; 00389 c.z = tempNode->nodepolylist[CollisionPoly].Vertex[2].z; 00390 // If collision point is within the polygon 00391 if (CheckPointInTriangle(CollisionPoint, a, b, c)) 00392 { 00393 // Get the collision distance 00394 distance = CollisionPoint - bullet[loop].Position; 00395 magnitudedistance = distance.GetMagnitude(); 00396 // If collision distance is shorter than previous distance 00397 if (magnitudedistance < shortestdistance) 00398 { 00399 // Bullet has been processed so set first time flag to false 00400 bullet[loop].flag = false; 00401 // Set new shortest distance 00402 shortestdistance = magnitudedistance; 00403 // Set collision details 00404 bullet[loop].CollisionVector = CollisionPoint; 00405 bullet[loop].collisionnode = CollisionNode; 00406 bullet[loop].collisionpoly = CollisionPoly; 00407 } 00408 } 00409 } 00410 } 00411 } 00412 } 00413 // Set bullet speed 00414 float bulletFactor; 00415 if (bulletspeed == 0) 00416 bulletFactor = 1200.0; 00417 else 00418 bulletFactor = 10.0; 00419 // Set the previous position 00420 bullet[loop].PreviousPosition = bullet[loop].Position; 00421 // Get the present position 00422 bullet[loop].Position.x -= bullet[loop].VelocityVector.x * bulletFactor * bullet[loop].Multiplier; 00423 bullet[loop].Position.y -= bullet[loop].VelocityVector.y * bulletFactor * bullet[loop].Multiplier; 00424 bullet[loop].Position.z -= bullet[loop].VelocityVector.z * bulletFactor * bullet[loop].Multiplier; 00425 // Find the leaf node of the bullets position (to determine when to render it) 00426 bullet[loop].leaf = FindCurrentLeaf(bullet[loop].Position, root); 00427 // Get the bullets collision node 00428 tempListNode = LeafList.Get(bullet[loop].collisionnode); 00429 tempNode = tempListNode->node; 00430 // Get a point on the collision polygon and it's normal 00431 p0.x = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].x; 00432 p0.y = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].y; 00433 p0.z = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].z; 00434 pN.x = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].nx; 00435 pN.y = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].ny; 00436 pN.z = tempNode->nodepolylist[bullet[loop].collisionpoly].Vertex[0].nz; 00437 // Classify the bullet position with respect to the collision polygon 00438 Pos = ClassifyPoint(bullet[loop].Position, p0, pN); 00439 // If the bullet is on or behind the collision polygon 00440 if (Pos != 1) 00441 { 00442 // Set the bullet to inactive 00443 bullet[loop].active = false; 00444 // Decrease the active bullet count 00445 numBulletsActive--; 00446 // Create the particles 00447 VECTOR CollisionPoint = line_plane_collision(&bullet[loop].PreviousPosition, &bullet[loop].Position, &tempNode->nodepolylist[bullet[loop].collisionpoly]); 00448 CreateSparks(bullet[loop].PreviousPosition, CollisionPoint, pN); 00449 // If we have not reached the maximum decals for this node 00450 if (tempNode->numdecals < maxDecals) 00451 { 00452 // Create a new decal and set it's properties 00453 tempNode->numdecals++; 00454 tempDecal = new DECAL; 00455 // Set the decal to the current global type of decal selected 00456 tempDecal->type = bullettype; 00457 // Set the decal's size accordingly 00458 if (tempDecal->type == 0) 00459 tempDecal->Size = 0.5; 00460 else 00461 tempDecal->Size = 1.0; 00462 tempDecal->linkPosition = tempNode->numdecals; 00463 tempDecal->CollisionVector = bullet[loop].CollisionVector; 00464 // Set persistence counter (decreased with each render) 00465 tempDecal->counter = 2000; 00466 00467 CreateDecal(tempDecal->CollisionVector, &tempNode->nodepolylist[bullet[loop].collisionpoly], tempDecal); 00468 tempNode->decallist.Insert(tempDecal); 00469 00470 // Set impact-flash decal properties 00471 impactflashdecal.CollisionVector = bullet[loop].CollisionVector; 00472 CreateDecal(impactflashdecal.CollisionVector, &tempNode->nodepolylist[bullet[loop].collisionpoly], &impactflashdecal); 00473 impactflashdecal.active = true; 00474 impactflashdecal.Size = 1; 00475 } 00476 } 00477 // Find distance of bullet from camera 00478 distance = bullet[loop].Position - camera[currentCamera].Position; 00479 magnitudedistance = distance.GetMagnitude(); 00480 // If the distance is greater than 500 units then make bullet inactive 00481 if (magnitudedistance > 500) 00482 { 00483 bullet[loop].active = 0; 00484 numBulletsActive--; 00485 } 00486 } 00487 } 00488 } |