![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00007 00008 #pragma once 00009 00010 #include "exerciseConn.h" 00011 #include <vlutil/vlMachineTypes.h> 00012 #include "hostStructs.h" 00013 #include "pdu.h" 00014 #include <vlpi/enviroTypeRec.h> 00015 #include "stateMsg.h" 00016 #include "envGeometry.h" 00017 00018 #include "packets/envProcP.h" 00019 00020 00021 #include <vector> 00022 00023 class DT_DLL_VL DtEnvironmentalProcessPdu; 00024 00026 typedef void (*DtEnvironmentalProcessPduCb)( 00027 DtEnvironmentalProcessPdu* pdu, void* usr); 00028 00029 00032 #if (DtHLA || DtTENA) 00033 class DT_DLL_VL DtEnvironmentalProcessPdu : public DtPdu 00034 #else 00035 class DT_DLL_VL DtEnvironmentalProcessPdu : public DtStateMsg 00036 #endif 00037 { 00038 00039 public: 00040 00042 DtEnvironmentalProcessPdu(DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00043 DtEnvironmentalProcessPdu(const DtNetEnvironmentalProcessPdu* initial, 00044 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00045 DtEnvironmentalProcessPdu(const DtEnvironmentalProcessPdu& orig); 00046 00048 virtual ~DtEnvironmentalProcessPdu(); 00049 00051 DtEnvironmentalProcessPdu& operator=(const DtEnvironmentalProcessPdu& orig); 00052 00054 virtual void setEnvironmentalProcessID(const DtEntityIdentifier& entity); 00055 virtual const DtEntityIdentifier& environmentalProcessID() const; 00056 00058 virtual void setEnvironmentType(const DtEnvironmentTypeRecord& type); 00059 virtual const DtEnvironmentTypeRecord& environmentType() const; 00060 00062 virtual void setModelType(DtEnvironmentalModelType value); 00063 virtual DtEnvironmentalModelType modelType() const; 00064 00066 virtual void setEnvironmentalStatus(DtU8 value); 00067 virtual DtU8 environmentalStatus() const; 00068 00070 virtual void setEnvironmentalStatusBit( 00071 DtEnvironmentalStatusBit bit, bool value); 00072 virtual bool environmentalStatusBit( 00073 DtEnvironmentalStatusBit bit) const; 00074 00076 virtual bool setNumberOfEnvironmentalRecords(DtU16 newNumberOfRecords); 00077 virtual DtU16 numberOfEnvironmentalRecords() const; 00078 00080 virtual void setSequenceNumber(DtU16 value); 00081 virtual DtU16 sequenceNumber() const; 00082 00085 virtual bool setRecordBitSize(int recordIndex, int newRecordBitSize); 00086 00089 virtual DtNetEnvironmentalRecord* recordPointer(int recordIndex) const; 00090 00092 virtual void printData() const; 00093 virtual void printDataToStream(std::ostream& stream) const; 00094 00095 //**** 00098 00099 00104 virtual int numberOfGeometryRecords() const; 00105 00107 virtual DtEnvironmentalRecordType geometryRecordType(int index) const; 00108 00112 virtual DtEnvironmentalRecordType stateRecordType(int index) const; 00113 00119 virtual bool getGeometryRecord(int index, 00120 DtEnvironmentalGeometryRecord& geometryRecord) const; 00121 00127 virtual bool getStateRecord(int index, 00128 DtEnvironmentalRecord& stateRecord) const; 00129 00131 virtual void setEnvironmentalRecord(int index, 00132 const DtEnvironmentalRecord& envRecord); 00133 00134 public: 00135 00138 static DtPdu* create(const DtNetPacket* initial, 00139 DtBufferPtr buffer = DtUSE_INTERNAL_BUFFER); 00140 00143 static void addCallback(DtExerciseConn* conn, 00144 DtEnvironmentalProcessPduCb cb, void* usr); 00145 static void removeCallback(DtExerciseConn* conn, 00146 DtEnvironmentalProcessPduCb cb, void* usr); 00147 00158 static void setLengthIsWholeEnvRec(bool lengthMode); 00159 static bool lengthIsWholeEnvRec(); 00160 00161 protected: 00162 00164 virtual DtPduKind internalGetPduKind() const; 00165 00168 DtNetEnvironmentalProcessPdu* netPduStruct() const; 00169 00172 DtEnvironmentalProcessPdu* self() const; 00173 00175 virtual char* var() const; 00176 00179 virtual int recordOffset(int recordIndex) const; 00180 00181 virtual void invalidateCache(); 00182 00183 protected: 00189 void verifyRecDataSize(); 00190 00191 00193 static const int theStaticSize; 00194 static bool theLengthIsWholeRec; 00195 00196 protected: 00197 00199 DtEntityIdentifier myEntityID; 00200 DtEnvironmentTypeRecord myEnvironmentType; 00201 mutable std::vector<int> myOffsetCache; 00202 }; 00203 00204