Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

bullet.h File Reference

#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 ()


Function Documentation

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 }

void InitializeBullets  
 

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 }

void UpdateBullets  
 

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 }


Generated on Fri Dec 23 05:15:49 2005 for Constructive Solid Geometry by doxygen1.2.15