![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 #ifndef _COLLPDU_H_ 00007 #define _COLLPDU_H_ 1 00008 00012 00013 #if DtDIS 00014 00015 00016 #include "hostStructs.h" 00017 #include "interaction.h" 00018 #include "packets/collisionP.h" 00019 #include <matrix/vlMath.h> 00020 #include "exerciseConn.h" 00021 #include <vlpi/disEnums.h> 00022 00023 const int DtCollisionStaticSize = 60; 00024 class DT_DLL_VL DtCollisionPdu; 00025 typedef DtCollisionPdu DtCollisionInteraction; 00026 typedef void (*DtCollisionInteractionCb) 00027 (DtCollisionInteraction *inter, void *usr); 00028 00029 class DT_DLL_VL DtCollisionPdu : public DtInteraction 00030 { 00031 public: 00032 00033 //******************* STANDARD CONSTRUCTORS **************** 00034 00035 DtCollisionPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00036 DtCollisionPdu(const DtNetCollisionPdu *initial, 00037 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00038 00039 static DtPdu *create(const DtNetPacket *initial, 00040 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00041 00042 static void addCallback(DtExerciseConn *conn, 00043 DtCollisionInteractionCb cb, void *usr); 00044 static void removeCallback(DtExerciseConn *conn, 00045 DtCollisionInteractionCb cb, void *usr); 00046 00047 //****************** INSPECTOR FUNCTIONS ******************* 00048 00049 const DtEntityIdentifier &issueId() const; 00050 const DtEntityIdentifier &collideId() const; 00051 const DtEventID &eventId() const; 00052 00053 DtCollisionType collisionType() const; 00054 00055 const DtVector& velocity() const; 00056 DtFloat32 mass() const; 00057 const DtVector& entityCoords() const; 00058 00059 //****************** MUTATOR FUNCTIONS ******************* 00060 00061 void setIssueId(const DtEntityIdentifier &id); 00062 void setCollideId(const DtEntityIdentifier &id); 00063 void setEventId(const DtEventID &id); 00064 00065 void setCollisionType(DtCollisionType t); 00066 00067 void setVelocity(const DtVector& veloc); 00068 void setMass(DtFloat32 mass); 00069 void setEntityCoords(const DtVector& coords); 00070 00071 virtual void printData() const; 00072 virtual void printDataToStream(std::ostream& stream) const; 00073 00074 protected: 00075 DtPduKind internalGetPduKind() const {return DtCollisionPduKind;} 00076 DtEntityIdentifier iss; 00077 DtEntityIdentifier col; 00078 DtEventID event; 00079 DtVector vel, ent; 00080 }; 00081 00082 #endif 00083 #endif 00084