![]() |
VR-Link API Documentation for HLA 1.3
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00008 00009 #ifndef dReflectedEnt_H_ 00010 #define dReflectedEnt_H_ 00011 00012 #if DtDIS 00013 00014 #include "dReflectedObj.h" 00015 #include "dEntityDec.h" 00016 #include "esPdu.h" 00017 #include "globalObjDes.h" 00018 #include "objIdHashKey.h" 00019 #include "relLocPdu.h" 00020 #include "esUpdatePdu.h" 00021 #include "supEmisEsPdu.h" 00022 #include "diGuyCustomPdu.h" 00023 00024 class DtEntityStateRepository; 00025 class DtExerciseConn; 00026 class DtReflectedEntity; 00027 00030 typedef void (*DtEntityCallbackFunction)( 00031 DtReflectedEntity* obj, void* userData); 00032 00036 class DT_DLL_VL DtReflectedEntity : public DtReflectedObject 00037 { 00038 public: 00039 00041 typedef DtEntityStateRepository* (*DtStateRepCreator)(); 00042 00043 public: 00044 00046 DtReflectedEntity(DtExerciseConn* conn, 00047 const DtEntityIdentifier& id, 00048 const DtEntityType& type); 00049 00051 virtual ~DtReflectedEntity(); 00052 00055 virtual DtEntityStateRepository* entityStateRep() const; 00056 00058 virtual DtEntityStateRepository* esr() const; 00059 00063 virtual DtStateRepository* stateRep() const; 00064 00067 virtual DtEntityStateDecoder* decoder(); 00068 00070 virtual const DtEntityIdentifier& entityId() const; 00071 00073 virtual const DtObjectId& id() const; 00074 00076 virtual const DtObjectId& localId() const; 00077 00080 virtual const DtGlobalObjectDesignator& globalId() const; 00081 00083 virtual void processStateMessage(const DtStateMsg& msg); 00084 00086 virtual void processRelativeLocation(const DtRelativeLocationPdu& pdu); 00087 00089 virtual void processEntityStateUpdate(const DtEntityStateUpdatePdu& pdu); 00090 00092 virtual void processSees(const DtSuppEmisEntStatePdu& pdu); 00093 00095 virtual void processDiGuyPdu(const DtDIGuyCustomPdu& pdu); 00096 00098 virtual DtReflectedEntity* next() const; 00099 virtual DtReflectedEntity* prev() const; 00100 00102 virtual DtReflectedEntity* wrapNext() const; 00103 virtual DtReflectedEntity* wrapPrev() const; 00104 00106 virtual void addPostUpdateCallback( 00107 DtEntityCallbackFunction cb, void* userData); 00108 virtual void removePostUpdateCallback( 00109 DtEntityCallbackFunction cb, void* userData); 00110 00112 virtual const DtBaseHashKey& hashKey() const; 00113 00115 virtual DtString idString() const; 00116 00119 virtual void processEntityState(const DtEntityStatePdu& pdu); 00120 00121 public: 00122 00124 static void setStateRepCreator(DtStateRepCreator creator); 00125 static DtStateRepCreator stateRepCreator(void); 00126 00127 protected: 00128 00130 DtReflectedEntity(const DtReflectedEntity& orig); 00131 00133 DtReflectedEntity& operator=(const DtReflectedEntity& orig); 00134 00135 protected: 00136 00137 DtEntityIdentifier myId; 00138 DtEntityStateRepository* myEntityStateRep; 00139 DtEntityStateDecoder* myEntityDecoder; 00140 DtEntityIdentifierHashKey myHashKey; 00141 00142 protected: 00143 00144 static DtStateRepCreator theStateRepCreator; 00145 00146 }; 00147 00148 inline const DtObjectId& DtReflectedEntity::localId() const 00149 { 00150 return id(); 00151 } 00152 00153 #endif 00154 #endif 00155