![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00009 00010 #ifndef DtMinefieldStatePdu_H_ 00011 #define DtMinefieldStatePdu_H_ 00012 00013 #if DtDIS 00014 00015 #include <vlutil/vlMachineTypes.h> 00016 #include "hostStructs.h" 00017 #include "pdu.h" 00018 #include <matrix/vlMath.h> 00019 #include "exerciseConn.h" 00020 00021 #include "packets/mineStateP.h" 00022 00023 #include "minePerimeter.h" 00024 00025 00026 class DT_DLL_VL DtMinefieldStatePdu; 00027 00029 typedef void (*DtMinefieldStatePduCb)(DtMinefieldStatePdu* pdu, void* usr); 00030 00035 00036 class DT_DLL_VL DtMinefieldStatePdu : public DtPdu 00037 { 00038 00039 public: 00040 00042 DtMinefieldStatePdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00043 DtMinefieldStatePdu(const DtNetMinefieldStatePdu* initial, 00044 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00045 DtMinefieldStatePdu(const DtMinefieldStatePdu& orig); 00046 00048 virtual ~DtMinefieldStatePdu(); 00049 00051 DtMinefieldStatePdu& operator=(const DtMinefieldStatePdu& orig); 00052 00054 virtual void setMinefieldID(const DtEntityIdentifier& id); 00055 virtual const DtEntityIdentifier& minefieldID() const; 00056 00058 virtual void setSequenceNumber(DtU16 field); 00059 virtual DtU16 sequenceNumber() const; 00060 00062 virtual void setForceID(DtForceType force); 00063 virtual DtForceType forceID() const; 00064 00066 virtual bool setNumPerimeterPoints(DtU8 num); 00067 virtual DtU8 numPerimeterPoints() const; 00068 00070 virtual void setMinefieldType(const DtEntityType& type); 00071 virtual const DtEntityType& minefieldType() const; 00072 00074 virtual bool setNumMineTypes(DtU16 num); 00075 virtual DtU16 numMineTypes() const; 00076 00078 virtual void setLocation(const DtVector& coords); 00079 virtual const DtVector& location() const; 00080 00082 virtual void setOrientation(const DtTaitBryan& orientation); 00083 virtual const DtTaitBryan& orientation() const; 00084 00086 virtual void setAppearance(DtU16 app); 00087 virtual DtU16 appearance() const; 00088 00090 virtual void setAppearanceAttribute( 00091 DtAppearAttribute attr, DtAppearAttrVal val); 00092 virtual DtAppearAttrVal appearanceAttribute( 00093 DtAppearAttribute attr) const; 00094 00097 virtual void setMinefieldProtocolMode(DtMinefieldProtocol mode); 00098 virtual DtMinefieldProtocol minefieldProtocolMode() const; 00099 00102 virtual bool setPerimeterPoint(int index, 00103 const DtMinefieldPerimeterRecord& init); 00104 virtual bool getPerimeterPoint(int index, 00105 DtMinefieldPerimeterRecord& record) const; 00106 00109 virtual bool setMineType(int index, 00110 const DtEntityType& init); 00111 virtual bool getMineType(int index, 00112 DtEntityType& record) const; 00113 00115 virtual void printData() const; 00116 00118 virtual void printDataToStream(std::ostream& stream) const; 00119 00120 public: 00121 00124 static DtPdu* create(const DtNetPacket* initial, 00125 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00126 00129 static void addCallback(DtExerciseConn* conn, 00130 DtMinefieldStatePduCb cb, void* usr); 00131 static void removeCallback(DtExerciseConn* conn, 00132 DtMinefieldStatePduCb cb, void* usr); 00133 00134 protected: 00135 00137 virtual DtPduKind internalGetPduKind() const; 00138 00140 virtual DtNetMinefieldStatePdu* netPduStruct() const; 00141 00144 DtMinefieldStatePdu* self() const; 00145 00147 virtual char* var() const; 00148 00150 virtual int perimeterPointRecordOffset(int recordIndex) const; 00151 00153 virtual int mineTypeRecordOffset(int recordIndex) const; 00154 00155 protected: 00156 00158 static const int theStaticSize; 00159 00160 protected: 00161 00163 DtEntityIdentifier myEntityID; 00164 DtEntityType myEntityType; 00165 DtTaitBryan myEulerAngles; 00166 DtVector myVector; 00167 DtMinefieldPerimeterRecord myPerimeterRecord; 00168 00169 }; 00170 00171 #endif 00172 #endif 00173