Home | nevrax.com |
|
collision_surface_temp.cppGo to the documentation of this file.00001 00007 /* Copyright, 2001 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #include "stdpacs.h" 00027 00028 #include "pacs/collision_surface_temp.h" 00029 00030 00031 namespace NLPACS 00032 { 00033 00034 00035 // *************************************************************************** 00036 const uint32 StartEdgeCollideNodeSize= 128; // mem: 48*128= 6144 00037 const uint32 StartCollisionChainSize= 128; // mem: 24*128= 3072 00038 const uint32 StartEdgeChainEntrySize= 1024; // mem: 6*1024= 6144 00039 const uint32 StartCollisionDescSize= 64; // mem: 36*64= 2304 00040 const uint32 StartCollisionInstanceSize= 64; // mem: 4*64= 256 00041 // Total default memory cost by CCollisionSurfaceTemp: 18Ko + 128Ko (OChainLUT). 00042 00043 00044 // *************************************************************************** 00045 CCollisionSurfaceTemp::CCollisionSurfaceTemp() 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 } 00060 00061 00062 // *************************************************************************** 00063 void CCollisionSurfaceTemp::resetEdgeCollideNodes() 00064 { 00065 _EdgeCollideNodes.clear(); 00066 } 00067 // *************************************************************************** 00068 uint32 CCollisionSurfaceTemp::allocEdgeCollideNode(uint32 size) 00069 { 00070 uint32 id= _EdgeCollideNodes.size(); 00071 _EdgeCollideNodes.resize(id+size); 00072 return id; 00073 } 00074 // *************************************************************************** 00075 CEdgeCollideNode &CCollisionSurfaceTemp::getEdgeCollideNode(uint32 id) 00076 { 00077 return _EdgeCollideNodes[id]; 00078 } 00079 00080 00081 } // NLPACS |