![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 #ifndef DtCollisionElasticPdu_H_ 00007 #define DtCollisionElasticPdu_H_ 00008 00012 00013 #if DtDIS 00014 00015 #include <vlutil/vlMachineTypes.h> 00016 #include "hostStructs.h" 00017 #include "dInteraction.h" 00018 #include <matrix/vlMath.h> 00019 #include "exerciseConn.h" 00020 00021 #include "packets/collisElasP.h" 00022 00023 class DT_DLL_VL DtCollisionElasticPdu; 00024 00026 typedef void (*DtCollisionElasticPduCb)(DtCollisionElasticPdu* pdu, void* usr); 00027 00028 00032 class DT_DLL_VL DtCollisionElasticPdu : public DtInteraction 00033 { 00034 00035 public: 00036 00038 DtCollisionElasticPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00039 DtCollisionElasticPdu(const DtNetCollisionElasticPdu* initial, 00040 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00041 DtCollisionElasticPdu(const DtCollisionElasticPdu& orig); 00042 00044 virtual ~DtCollisionElasticPdu(); 00045 00048 static DtPdu* create(const DtNetPacket* initial, 00049 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00050 00053 static void addCallback(DtExerciseConn* conn, 00054 DtCollisionElasticPduCb cb, void* usr); 00055 static void removeCallback(DtExerciseConn* conn, 00056 DtCollisionElasticPduCb cb, void* usr); 00057 00059 DtCollisionElasticPdu& operator=(const DtCollisionElasticPdu& orig); 00060 00062 virtual void setIssuingEntityID(const DtEntityIdentifier& entity); 00063 virtual const DtEntityIdentifier& issuingEntityID() const; 00064 00066 virtual void setCollidingEntityID(const DtEntityIdentifier& entity); 00067 virtual const DtEntityIdentifier& collidingEntityID() const; 00068 00070 virtual void setEventID(const DtEventID& event); 00071 virtual const DtEventID& eventID() const; 00072 00074 virtual void setContactVelocity(const DtVector& velocity); 00075 virtual const DtVector& contactVelocity() const; 00076 00078 virtual void setMass(DtFloat32 value); 00079 virtual DtFloat32 mass() const; 00080 00082 virtual void setLocationOfImpact(const DtVector& coords); 00083 virtual const DtVector& locationOfImpact() const; 00084 00086 virtual void setCollisionInterResultXX(DtFloat32 result); 00087 virtual DtFloat32 collisionInterResultXX() const; 00088 00090 virtual void setCollisionInterResultXY(DtFloat32 result); 00091 virtual DtFloat32 collisionInterResultXY() const; 00092 00094 virtual void setCollisionInterResultXZ(DtFloat32 result); 00095 virtual DtFloat32 collisionInterResultXZ() const; 00096 00098 virtual void setCollisionInterResultYY(DtFloat32 result); 00099 virtual DtFloat32 collisionInterResultYY() const; 00100 00102 virtual void setCollisionInterResultYZ(DtFloat32 result); 00103 virtual DtFloat32 collisionInterResultYZ() const; 00104 00106 virtual void setCollisionInterResultZZ(DtFloat32 result); 00107 virtual DtFloat32 collisionInterResultZZ() const; 00108 00110 virtual void setUnitSurfaceNormal(const DtVector& coords); 00111 virtual const DtVector& unitSurfaceNormal() const; 00112 00114 virtual void setCoefficientOfRestitution(DtFloat32 coeff); 00115 virtual DtFloat32 coefficientOfRestitution() const; 00116 00118 virtual void printData() const; 00119 00121 virtual void printDataToStream(std::ostream& stream) const; 00122 00123 protected: 00124 00126 virtual DtPduKind internalGetPduKind() const; 00127 00130 virtual DtNetCollisionElasticPdu* netPduStruct() const; 00131 00134 DtCollisionElasticPdu* self() const; 00135 00136 protected: 00137 00139 static const int theStaticSize; 00140 00141 protected: 00142 00144 DtEntityIdentifier myEntityID; 00145 DtEventID myEventID; 00146 DtVector myVector; 00147 00148 }; 00149 00150 00151 #endif 00152 #endif 00153