Home | nevrax.com |
|
collision_desc.hGo 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 #ifndef NL_COLLISION_DESC_H 00027 #define NL_COLLISION_DESC_H 00028 00029 #include "nel/misc/types_nl.h" 00030 #include "nel/misc/file.h" 00031 #include "nel/misc/vector.h" 00032 #include "nel/pacs/u_collision_desc.h" 00033 #include <vector> 00034 00035 namespace NLPACS 00036 { 00037 00045 class CCollisionDesc: public UCollisionDesc 00046 { 00047 public: 00048 // XChg contact normal 0 and 1 00049 void XChgContactNormals () 00050 { 00051 NLMISC::CVectorD tmp=ContactNormal0; 00052 ContactNormal0=ContactNormal1; 00053 ContactNormal1=tmp; 00054 } 00055 }; 00056 00057 00065 class CSurfaceIdent 00066 { 00067 public: 00069 sint32 RetrieverInstanceId; 00071 sint32 SurfaceId; 00072 00073 bool operator==(const CSurfaceIdent &o) const 00074 { 00075 return RetrieverInstanceId==o.RetrieverInstanceId && SurfaceId==o.SurfaceId; 00076 } 00077 00078 bool operator!=(const CSurfaceIdent &o) const 00079 { 00080 return !(*this==o); 00081 } 00082 00083 00084 public: 00085 CSurfaceIdent() {} 00086 CSurfaceIdent(sint32 retInstance, sint32 surfId) : RetrieverInstanceId(retInstance), SurfaceId(surfId) {} 00087 00088 void serial(NLMISC::IStream &f) { f.serial(RetrieverInstanceId, SurfaceId); } 00089 }; 00090 00091 00099 class CCollisionSurfaceDesc 00100 { 00101 public: 00102 NLMISC::CVectorD ContactNormal; 00103 double ContactTime; 00104 00106 CSurfaceIdent ContactSurface; 00107 }; 00108 00109 00110 typedef std::vector<CCollisionSurfaceDesc> TCollisionSurfaceDescVector; 00111 00112 00113 00114 } // NLPACS 00115 00116 00117 #endif // NL_COLLISION_DESC_H 00118 00119 /* End of collision_desc.h */ |