![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00009 00010 #ifndef DtReflectedEntityList_H_ 00011 #define DtReflectedEntityList_H_ 00012 00013 #if DtDIS 00014 00015 #include "dRefObjList.h" 00016 #include "dReflectedEnt.h" 00017 #include "relLocPdu.h" 00018 #include "esUpdatePdu.h" 00019 #include "diGuyCustomPdu.h" 00020 #include "supEmisEsPdu.h" 00021 00022 class DtEntityIdentifierHashKey; 00023 00031 class DT_DLL_VL DtReflectedEntityList : public DtReflectedObjectList 00032 { 00033 00034 public: 00035 00037 DtReflectedEntityList(DtExerciseConn* exConn, 00038 bool smoothCapable = false, bool processDiGuyPdus = false); 00039 00041 virtual ~DtReflectedEntityList(); 00042 00044 virtual DtReflectedEntity* lookup(const DtObjectId& id) const; 00045 00047 virtual DtReflectedEntity* first() const; 00048 virtual DtReflectedEntity* last() const; 00049 00051 virtual void addEntityAdditionCallback( 00052 DtEntityCallbackFunction cb, void* userData); 00053 virtual void removeEntityAdditionCallback( 00054 DtEntityCallbackFunction cb, void* userData); 00055 00057 virtual void addEntityRemovalCallback( 00058 DtEntityCallbackFunction cb, void* userData); 00059 virtual void removeEntityRemovalCallback( 00060 DtEntityCallbackFunction cb, void* userData); 00061 00063 virtual void print(); 00064 00067 virtual DtReflectedEntity* processEntityState(const DtEntityStatePdu& pdu); 00068 00070 virtual void processRelativeLocationPdu(const DtRelativeLocationPdu& pdu); 00071 00073 virtual void processEntityStateUpdatePdu( 00074 const DtEntityStateUpdatePdu& pdu); 00075 00078 virtual void processDiGuyPdu( 00079 const DtDIGuyCustomPdu& pdu); 00080 00082 virtual void processSeesPdu( 00083 const DtSuppEmisEntStatePdu& pdu); 00084 00089 virtual void setProcessDiGuyPdus(bool trueFalse); 00090 00096 virtual void discoverOnlyWhenEntityTypeKnown(bool yesNo); 00097 00098 protected: 00099 00101 DtReflectedEntityList& operator=( 00102 const DtReflectedEntityList& orig); 00103 00105 DtReflectedEntityList(const DtReflectedEntityList& orig); 00106 00107 protected: 00108 00112 virtual DtReflectedObject* newReflectedObj(const DtStateMsg& msg); 00113 00115 virtual DtReflectedObject* processStateMessage(const DtStateMsg& msg); 00116 00119 virtual void objectAdded(DtReflectedObject* obj); 00120 00123 virtual void finalPduIsSetAction(DtReflectedEntity* entity); 00124 00126 virtual const DtBaseHashKey& 00127 hashKeyFromStateMessage(const DtStateMsg* msg); 00128 00130 virtual DtReflectedEntity* newReflectedEntity(const DtEntityIdentifier& id, 00131 const DtEntityType& type) const; 00132 00135 virtual void entityAdded(DtReflectedEntity* ent); 00136 00137 protected: 00138 00140 static void entityStateCb(DtEntityStatePdu* pdu, void* usr); 00141 00143 static void relativeLocationCb( DtRelativeLocationPdu* pdu, void* usr ); 00144 00146 static void entityStateUpdateCb( DtEntityStateUpdatePdu* pdu, void* usr ); 00147 00149 static void diGuyPduCb(DtDIGuyCustomPdu* pdu, void* usr); 00150 00152 static void seesPduCb(DtSuppEmisEntStatePdu* pdu, void* usr); 00153 00156 static bool checkEntityType(DtReflectedObject* obj, void* usr); 00157 00158 protected: 00159 00160 bool mySmoothCapable; 00161 DtEntityIdentifierHashKey* myHashKey; 00162 bool myProcessingDiGuyPdus; 00163 }; 00164 00165 #endif 00166 #endif 00167 00168