00001 //## begin module%377944220020.cm preserve=no 00002 // %X% %Q% %Z% %W% 00003 //## end module%377944220020.cm 00004 00005 //## begin module%377944220020.cp preserve=no 00006 //## end module%377944220020.cp 00007 00008 //## Module: CD_Solid%377944220020; Pseudo Package specification 00009 //## Source file: C:\project\mpk\code\CollisionDetectors\CD_Solid.h 00010 00011 #ifndef CD_Solid_h 00012 #define CD_Solid_h 1 00013 00014 //## begin module%377944220020.additionalIncludes preserve=no 00015 //## end module%377944220020.additionalIncludes 00016 00017 //## begin module%377944220020.includes preserve=yes 00018 #include <set> 00019 //## end module%377944220020.includes 00020 00021 // CD_BasicStyle 00022 #include "CollisionDetectors\CD_BasicStyle.h" 00023 #include "CollisionDetectors\CD_LinearContinuous.h" 00024 00025 class Entity; 00026 class MPK_Box; 00027 class MPK_Cylinder; 00028 class Facet; 00029 class Mesh; 00030 class ObjectGroup; 00031 00032 //## begin module%377944220020.additionalDeclarations preserve=yes 00033 //## end module%377944220020.additionalDeclarations 00034 00035 00036 //## begin CD_Solid%377944220020.preface preserve=yes 00037 //## end CD_Solid%377944220020.preface 00038 00039 //## Class: CD_Solid%377944220020 00040 //## Category: CollisionDetectors%36FB14140230 00041 //## Persistence: Transient 00042 //## Cardinality/Multiplicity: n 00043 00044 //## Uses: <unnamed>%377D2CED00BC;Entity { -> F} 00045 //## Uses: <unnamed>%377D2CEF020A;Mesh { -> F} 00046 //## Uses: <unnamed>%377D2D4402C0;ObjectGroup { -> F} 00047 //## Uses: <unnamed>%377D56E2029D;Facet { -> F} 00048 //## Uses: <unnamed>%3949AFF70348;MPK_Cylinder { -> F} 00049 //## Uses: <unnamed>%3949B054033E;MPK_Box { -> F} 00050 00051 #pragma warning( push ) 00052 #pragma warning( disable : 4250 ) 00053 00054 class CD_Solid 00055 : 00056 public CD_BasicStyle, //## Inherits: <unnamed>%3779442A02AD 00057 public CD_LinearContinuous 00058 { 00059 //## begin CD_Solid%377944220020.initialDeclarations preserve=yes 00060 //## end CD_Solid%377944220020.initialDeclarations 00061 00062 public: 00063 //## Constructors (specified) 00064 //## Operation: CD_Solid%930942586 00065 // IMPROVE: why is the parameter not CONST? 00066 CD_Solid (Universe& universe); 00067 00068 //## Operation: CD_Solid%930942587 00069 CD_Solid (const CD_Solid& right); 00070 00071 //## Destructor (generated) 00072 virtual ~CD_Solid(); 00073 00074 00075 //## Other Operations (specified) 00076 //## Operation: Clone%930942581 00077 // this virtual function provides a copy of the object 00078 virtual CollisionDetectorBase* Clone () const; 00079 00080 //## Operation: IsInterfering%930942585 00081 virtual bool IsInterfering (const Configuration& config); 00082 00083 //## Operation: AddEntityToSolid%930942588 00084 bool AddEntityToSolid (const Entity* entity); 00085 00086 //## Operation: AddMeshToSolid%930942589 00087 int AddMeshToSolid (const Mesh& mesh); 00088 00089 //## Operation: SetCollidingPairs%931206292 00090 void SetCollidingPairs () const; 00091 00092 //## Operation: GetNewIndex%930961054 00093 static unsigned int GetNewIndex (); 00094 00095 //## Operation: ActivateFrames%931291666 00096 virtual void ActivateFrames (const unsigned int frame1, const unsigned int frame2); 00097 00098 //## Operation: DeactivateFrames%931291667 00099 virtual void DeactivateFrames (const unsigned int frame1, const unsigned int frame2); 00100 00101 // Additional Public Declarations 00102 //## begin CD_Solid%377944220020.public preserve=yes 00103 //## end CD_Solid%377944220020.public 00104 00105 protected: 00106 // Data Members for Associations 00107 00108 //## Association: CollisionDetectors::<unnamed>%37811482037A 00109 //## Role: CD_Solid::meshes%3781148300C9 00110 //## begin CD_Solid::meshes%3781148300C9.role preserve=no protected: Mesh { -> UFHAN} 00111 std::vector< const Mesh* > meshes; 00112 //## end CD_Solid::meshes%3781148300C9.role 00113 00114 // Additional Protected Declarations 00115 //## begin CD_Solid%377944220020.protected preserve=yes 00116 int AddCylinderToSolid( const MPK_Cylinder* cylinder ) ; 00117 00118 void MarkIndexEntityRelationship( int index, const Entity* entity ) ; 00119 //## end CD_Solid%377944220020.protected 00120 private: 00121 // Data Members for Class Attributes 00122 00123 //## Attribute: allIndexesGlobal%377D55C1011B 00124 //## begin CD_Solid::allIndexesGlobal%377D55C1011B.attr preserve=no private: static std::set< unsigned int> {UA} 00125 static std::set< unsigned int> allIndexesGlobal; 00126 //## end CD_Solid::allIndexesGlobal%377D55C1011B.attr 00127 00128 //## Attribute: indexes%377D55F70227 00129 //## begin CD_Solid::indexes%377D55F70227.attr preserve=no private: std::vector< unsigned int> {UA} 00130 std::vector< unsigned int> indexes; 00131 //## end CD_Solid::indexes%377D55F70227.attr 00132 00133 //## Attribute: firstUnusedIndex%377D574A0057 00134 //## begin CD_Solid::firstUnusedIndex%377D574A0057.attr preserve=no private: static unsigned int {UA} 0 00135 static unsigned int firstUnusedIndex; 00136 //## end CD_Solid::firstUnusedIndex%377D574A0057.attr 00137 00138 //## Attribute: frameSolid%377D65230240 00139 //## begin CD_Solid::frameSolid%377D65230240.attr preserve=no private: std::vector< std::set< unsigned int > > {UA} 00140 std::vector< std::set< unsigned int > > frameSolid; 00141 //## end CD_Solid::frameSolid%377D65230240.attr 00142 00143 //## Attribute: activeCollisionDetector%378115800299 00144 //## begin CD_Solid::activeCollisionDetector%378115800299.attr preserve=no private: static int {UA} -1 00145 static int activeCollisionDetector; 00146 //## end CD_Solid::activeCollisionDetector%378115800299.attr 00147 00148 //## Attribute: maxCollisionDetector%378115A60276 00149 //## begin CD_Solid::maxCollisionDetector%378115A60276.attr preserve=no private: static int {UA} -1 00150 static int maxCollisionDetector; 00151 //## end CD_Solid::maxCollisionDetector%378115A60276.attr 00152 00153 //## Attribute: collisionDetectorID%378115B5017D 00154 //## begin CD_Solid::collisionDetectorID%378115B5017D.attr preserve=no private: int {UA} 00155 int collisionDetectorID; 00156 //## end CD_Solid::collisionDetectorID%378115B5017D.attr 00157 00158 //## Attribute: currentCollisionDetectorID%3781428500B1 00159 //## begin CD_Solid::currentCollisionDetectorID%3781428500B1.attr preserve=no private: static int {UA} -1 00160 static int currentCollisionDetectorID; 00161 //## end CD_Solid::currentCollisionDetectorID%3781428500B1.attr 00162 00163 //## Attribute: shapeIDs%378143800025 00164 //## begin CD_Solid::shapeIDs%378143800025.attr preserve=no private: std::vector< void*> {UA} 00165 std::vector< void*> shapeIDs; 00166 //## end CD_Solid::shapeIDs%378143800025.attr 00167 00168 // Additional Private Declarations 00169 //## begin CD_Solid%377944220020.private preserve=yes 00170 //## end CD_Solid%377944220020.private 00171 00172 private: //## implementation 00173 // Additional Implementation Declarations 00174 //## begin CD_Solid%377944220020.implementation preserve=yes 00175 //## end CD_Solid%377944220020.implementation 00176 00177 }; 00178 00179 #pragma warning( pop ) 00180 //## begin CD_Solid%377944220020.postscript preserve=yes 00181 struct MyObject { 00182 int id; 00183 } ; 00184 //## end CD_Solid%377944220020.postscript 00185 00186 // Class CD_Solid 00187 00188 //## begin module%377944220020.epilog preserve=yes 00189 //## end module%377944220020.epilog 00190 00191 00192 #endif