NLPACS::CCollisionSurfaceTemp Class Reference

#include <collision_surface_temp.h>


Detailed Description

Temp collision data used during resolution of collision within surfaces. There should be one CCollisionSurfaceTemp per thread. This is a private class, in essence.
Author:
Lionel Berenguier

Nevrax France

Date:
2001

Definition at line 251 of file collision_surface_temp.h.

Public Types

typedef std::pair< uint16,
uint16
TExteriorEdgeIndex

Public Member Functions

 CCollisionSurfaceTemp ()
 Constructor.

void decSurface (sint32 surf)
void incSurface (sint32 surf)
Access to EdgeCollideNode
uint32 allocEdgeCollideNode (uint32 size=1)
 return first Id.

CEdgeCollideNodegetEdgeCollideNode (uint32 id)
 return first Id.

void resetEdgeCollideNodes ()
 return first Id.


Data Fields

std::vector< CCollisionChainCollisionChains
 Array of near Collision Chains.

TCollisionSurfaceDescVector CollisionDescs
 Result of collision testMove().

std::vector< sint32CollisionInstances
 CGlobalRetriever instance possibly colliding movement.

std::vector< CEdgeChainEntryEdgeChainEntries
std::vector< uint16ExteriorEdgeIndexes
std::vector< CMoveSurfaceDescMoveDescs
 result of testMovementWithCollisionChains().

uint16 OChainLUT [65536]
 For CChainQuad::selectEdges().

uint8 OutCounter
std::vector< uint16PossibleSurfaces
NLMISC::CVector PrecDeltaPos
NLMISC::CVector PrecStartPos
CSurfaceIdent PrecStartSurface
 For testMove/doMove, prec settings.

bool PrecValid
std::vector< CRotSurfaceDescRotDescs
 result of testRotWithCollisionChains().

std::vector< CDistanceSurfaceSortedSurfaces
CSurfaceLUTEntry SurfaceLUT [65536]
 Array of possible near surfaces.


Private Attributes

std::vector< CEdgeCollideNode_EdgeCollideNodes
 Allocator of EdgeCollideNode.


Member Typedef Documentation

typedef std::pair<uint16, uint16> NLPACS::CCollisionSurfaceTemp::TExteriorEdgeIndex
 

Definition at line 254 of file collision_surface_temp.h.


Constructor & Destructor Documentation

NLPACS::CCollisionSurfaceTemp::CCollisionSurfaceTemp  ) 
 

Constructor.

Definition at line 45 of file collision_surface_temp.cpp.

References _EdgeCollideNodes, CollisionChains, CollisionDescs, CollisionInstances, EdgeChainEntries, MoveDescs, OChainLUT, OutCounter, PossibleSurfaces, PrecValid, RotDescs, NLPACS::StartCollisionChainSize, NLPACS::StartCollisionDescSize, NLPACS::StartCollisionInstanceSize, NLPACS::StartEdgeChainEntrySize, NLPACS::StartEdgeCollideNodeSize, SurfaceLUT, and uint16.

00046 {
00047         memset(OChainLUT, 0xFF, 65536*sizeof(uint16));
00048         memset(SurfaceLUT, 0x00, 65536*sizeof(CSurfaceLUTEntry));
00049         _EdgeCollideNodes.reserve(StartEdgeCollideNodeSize);
00050         CollisionChains.reserve(StartCollisionChainSize);
00051         EdgeChainEntries.reserve(StartEdgeChainEntrySize);
00052         CollisionDescs.reserve(StartCollisionDescSize);
00053         MoveDescs.reserve(StartCollisionDescSize);
00054         RotDescs.reserve(StartCollisionDescSize);
00055         CollisionInstances.reserve(StartCollisionInstanceSize);
00056         PossibleSurfaces.reserve(32);
00057         PrecValid= false;
00058         OutCounter = 0;
00059 }


Member Function Documentation

uint32 NLPACS::CCollisionSurfaceTemp::allocEdgeCollideNode uint32  size = 1  ) 
 

return first Id.

Definition at line 68 of file collision_surface_temp.cpp.

References _EdgeCollideNodes, size, and uint32.

Referenced by NLPACS::CLocalRetriever::testCollision(), and NLPACS::CRetrieverInstance::testExteriorCollision().

00069 {
00070         uint32  id= _EdgeCollideNodes.size();
00071         _EdgeCollideNodes.resize(id+size);
00072         return id;
00073 }

void NLPACS::CCollisionSurfaceTemp::decSurface sint32  surf  )  [inline]
 

Definition at line 354 of file collision_surface_temp.h.

References NLPACS::CCollisionSurfaceTemp::CSurfaceLUTEntry::Counter, NLPACS::CCollisionSurfaceTemp::CSurfaceLUTEntry::IsPossible, OutCounter, PossibleSurfaces, sint32, SurfaceLUT, and uint16.

Referenced by NLPACS::CLocalRetriever::retrieveAccuratePosition(), and NLPACS::CLocalRetriever::retrievePosition().

00355         {
00356                 if (surf >= 0)
00357                 {
00358                         if (!SurfaceLUT[surf].IsPossible)
00359                                 PossibleSurfaces.push_back((uint16)surf);
00360                         SurfaceLUT[surf].IsPossible = true;
00361                         --SurfaceLUT[surf].Counter;
00362                 }
00363                 else
00364                 {
00365                         --OutCounter;
00366                 }
00367         }

CEdgeCollideNode & NLPACS::CCollisionSurfaceTemp::getEdgeCollideNode uint32  id  ) 
 

return first Id.

Definition at line 75 of file collision_surface_temp.cpp.

References _EdgeCollideNodes, and uint32.

Referenced by NLPACS::CLocalRetriever::testCollision(), NLPACS::CGlobalRetriever::testCollisionWithCollisionChains(), NLPACS::CRetrieverInstance::testExteriorCollision(), NLPACS::CGlobalRetriever::testMovementWithCollisionChains(), and NLPACS::CGlobalRetriever::testRotCollisionWithCollisionChains().

00076 {
00077         return _EdgeCollideNodes[id];
00078 }

void NLPACS::CCollisionSurfaceTemp::incSurface sint32  surf  )  [inline]
 

Definition at line 338 of file collision_surface_temp.h.

References NLPACS::CCollisionSurfaceTemp::CSurfaceLUTEntry::Counter, NLPACS::CCollisionSurfaceTemp::CSurfaceLUTEntry::IsPossible, OutCounter, PossibleSurfaces, sint32, SurfaceLUT, and uint16.

Referenced by NLPACS::CLocalRetriever::retrieveAccuratePosition(), and NLPACS::CLocalRetriever::retrievePosition().

00339         {
00340                 if (surf >= 0)
00341                 {
00342                         if (!SurfaceLUT[surf].IsPossible)
00343                                 PossibleSurfaces.push_back((uint16)surf);
00344                         SurfaceLUT[surf].IsPossible = true;
00345                         ++SurfaceLUT[surf].Counter;
00346                 }
00347                 else
00348                 {
00349                         ++OutCounter;
00350                 }
00351         }

void NLPACS::CCollisionSurfaceTemp::resetEdgeCollideNodes  ) 
 

return first Id.

Definition at line 63 of file collision_surface_temp.cpp.

References _EdgeCollideNodes.

Referenced by NLPACS::CGlobalRetriever::findCollisionChains().

00064 {
00065         _EdgeCollideNodes.clear();
00066 }


Field Documentation

std::vector<CEdgeCollideNode> NLPACS::CCollisionSurfaceTemp::_EdgeCollideNodes [private]
 

Allocator of EdgeCollideNode.

Definition at line 371 of file collision_surface_temp.h.

Referenced by allocEdgeCollideNode(), CCollisionSurfaceTemp(), getEdgeCollideNode(), and resetEdgeCollideNodes().

std::vector<CCollisionChain> NLPACS::CCollisionSurfaceTemp::CollisionChains
 

Array of near Collision Chains.

Definition at line 299 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), NLPACS::CGlobalRetriever::findCollisionChains(), NLPACS::CLocalRetriever::testCollision(), NLPACS::CGlobalRetriever::testCollisionWithCollisionChains(), NLPACS::CRetrieverInstance::testExteriorCollision(), NLPACS::CGlobalRetriever::testMovementWithCollisionChains(), and NLPACS::CGlobalRetriever::testRotCollisionWithCollisionChains().

TCollisionSurfaceDescVector NLPACS::CCollisionSurfaceTemp::CollisionDescs
 

Result of collision testMove().

Definition at line 311 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), NLPACS::CGlobalRetriever::doMove(), NLPACS::CGlobalRetriever::testBBoxMove(), NLPACS::CGlobalRetriever::testBBoxRot(), NLPACS::CGlobalRetriever::testCollisionWithCollisionChains(), NLPACS::CGlobalRetriever::testCylinderMove(), and NLPACS::CGlobalRetriever::testRotCollisionWithCollisionChains().

std::vector<sint32> NLPACS::CCollisionSurfaceTemp::CollisionInstances
 

CGlobalRetriever instance possibly colliding movement.

Definition at line 315 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), NLPACS::CGlobalRetriever::findCollisionChains(), NLPACS::CGlobalRetriever::getBorders(), NLPACS::CGlobalRetriever::makeLinks(), NLPACS::CGlobalRetriever::refreshLrAround(), NLPACS::CGlobalRetriever::refreshLrAroundNow(), NLPACS::CGlobalRetriever::retrievePosition(), and NLPACS::CGlobalRetriever::selectInstances().

std::vector<CEdgeChainEntry> NLPACS::CCollisionSurfaceTemp::EdgeChainEntries
 

Definition at line 287 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), NLPACS::CLocalRetriever::findPath(), NLPACS::CGlobalRetriever::getBorders(), NLPACS::CLocalRetriever::retrieveAccuratePosition(), NLPACS::CLocalRetriever::retrievePosition(), NLPACS::CChainQuad::selectEdges(), and NLPACS::CLocalRetriever::testCollision().

std::vector<uint16> NLPACS::CCollisionSurfaceTemp::ExteriorEdgeIndexes
 

Definition at line 288 of file collision_surface_temp.h.

Referenced by NLPACS::CEdgeQuad::selectEdges(), and NLPACS::CRetrieverInstance::testExteriorCollision().

std::vector<CMoveSurfaceDesc> NLPACS::CCollisionSurfaceTemp::MoveDescs
 

result of testMovementWithCollisionChains().

Definition at line 303 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), and NLPACS::CGlobalRetriever::testMovementWithCollisionChains().

uint16 NLPACS::CCollisionSurfaceTemp::OChainLUT[65536]
 

For CChainQuad::selectEdges().

Definition at line 286 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), NLPACS::CEdgeQuad::selectEdges(), NLPACS::CChainQuad::selectEdges(), NLPACS::CLocalRetriever::testCollision(), and NLPACS::CRetrieverInstance::testExteriorCollision().

uint8 NLPACS::CCollisionSurfaceTemp::OutCounter
 

Definition at line 293 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), decSurface(), incSurface(), and NLPACS::CRetrieverInstance::retrievePosition().

std::vector<uint16> NLPACS::CCollisionSurfaceTemp::PossibleSurfaces
 

Definition at line 294 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), decSurface(), incSurface(), NLPACS::CLocalRetriever::retrieveAccuratePosition(), NLPACS::CRetrieverInstance::retrievePosition(), NLPACS::CLocalRetriever::retrievePosition(), and NLPACS::CLocalRetriever::testPosition().

NLMISC::CVector NLPACS::CCollisionSurfaceTemp::PrecDeltaPos
 

Definition at line 321 of file collision_surface_temp.h.

Referenced by NLPACS::CGlobalRetriever::doMove(), NLPACS::CGlobalRetriever::testBBoxMove(), and NLPACS::CGlobalRetriever::testCylinderMove().

NLMISC::CVector NLPACS::CCollisionSurfaceTemp::PrecStartPos
 

Definition at line 320 of file collision_surface_temp.h.

Referenced by NLPACS::CGlobalRetriever::doMove(), NLPACS::CGlobalRetriever::testBBoxMove(), and NLPACS::CGlobalRetriever::testCylinderMove().

CSurfaceIdent NLPACS::CCollisionSurfaceTemp::PrecStartSurface
 

For testMove/doMove, prec settings.

Definition at line 319 of file collision_surface_temp.h.

Referenced by NLPACS::CGlobalRetriever::doMove(), NLPACS::CGlobalRetriever::testBBoxMove(), and NLPACS::CGlobalRetriever::testCylinderMove().

bool NLPACS::CCollisionSurfaceTemp::PrecValid
 

Definition at line 322 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), NLPACS::CGlobalRetriever::doMove(), NLPACS::CGlobalRetriever::testBBoxMove(), NLPACS::CGlobalRetriever::testBBoxRot(), and NLPACS::CGlobalRetriever::testCylinderMove().

std::vector<CRotSurfaceDesc> NLPACS::CCollisionSurfaceTemp::RotDescs
 

result of testRotWithCollisionChains().

Definition at line 307 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), and NLPACS::CGlobalRetriever::testRotCollisionWithCollisionChains().

std::vector<CDistanceSurface> NLPACS::CCollisionSurfaceTemp::SortedSurfaces
 

Definition at line 295 of file collision_surface_temp.h.

Referenced by NLPACS::CRetrieverInstance::retrievePosition(), and NLPACS::CGlobalRetriever::retrievePosition().

CSurfaceLUTEntry NLPACS::CCollisionSurfaceTemp::SurfaceLUT[65536]
 

Array of possible near surfaces.

Definition at line 292 of file collision_surface_temp.h.

Referenced by CCollisionSurfaceTemp(), decSurface(), incSurface(), NLPACS::CRetrieverInstance::retrievePosition(), NLPACS::CLocalRetriever::retrievePosition(), and NLPACS::CLocalRetriever::testPosition().


The documentation for this class was generated from the following files:
Generated on Tue Mar 16 14:11:45 2004 for NeL by doxygen 1.3.6