![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #ifndef DtBaseEntityDecoder_H_ 00008 #define DtBaseEntityDecoder_H_ 00009 00010 #if DtHLA 00011 00012 #include "hStateDecoder.h" 00013 00017 00018 class DT_DLL_VL DtEntityStateRepository; 00019 class DT_DLL_VL DtBaseEntityStateRepository; 00020 00023 #define DtDECLARE_ENTITY_ATTR_DECODER(attrName) \ 00024 DtDECLARE_ATTR_DECODER(DtEntityStateRepository, attrName) 00025 00028 #define DtDECLARE_AGGREGATE_ATTR_DECODER(attrName) \ 00029 DtDECLARE_ATTR_DECODER(DtAggregateStateRepository, attrName) 00030 00033 #define DtDECLARE_BASE_ENTITY_ATTR_DECODER(attrName) \ 00034 DtDECLARE_ATTR_DECODER(DtBaseEntityStateRepository, attrName) 00035 00036 00041 class DT_DLL_VL DtBaseEntityDecoder : public DtHlaStateDecoder 00042 { 00043 public: 00044 00046 DtBaseEntityDecoder( 00047 DtExerciseConn* exConn, 00048 DtObjClassDesc* classDesc); 00049 00051 virtual ~DtBaseEntityDecoder(); 00052 00054 DtBaseEntityDecoder(const DtBaseEntityDecoder& orig); 00055 00057 DtBaseEntityDecoder& operator=(const DtBaseEntityDecoder& orig); 00058 00060 virtual DtHlaStateDecoder* clone() const; 00061 00066 virtual DtHlaStateDecoder* clone(DtObjClassDesc* classDesc) const; 00067 00068 public: 00069 00071 static DtHlaStateDecoder* create( 00072 DtExerciseConn* exConn, 00073 DtObjClassDesc* classDesc); 00074 00075 protected: 00076 00080 void addMyDecoders(); 00081 00084 virtual void decode(const DtStateMsg& msg, 00085 DtStateRepository* stateRep) const; 00086 00088 00090 DtDECLARE_BASE_ENTITY_ATTR_DECODER(Spatial); 00091 DtDECLARE_BASE_ENTITY_ATTR_DECODER(RelativeSpatial); 00092 DtDECLARE_BASE_ENTITY_ATTR_DECODER(IsPartOf); 00093 00095 DtDECLARE_BASE_ENTITY_ATTR_DECODER(IsPartOf_RPR_20014); 00096 00098 DtDECLARE_BASE_ENTITY_ATTR_DECODER(AccelerationVector); 00099 DtDECLARE_BASE_ENTITY_ATTR_DECODER(AngularVelocityVector); 00100 DtDECLARE_BASE_ENTITY_ATTR_DECODER(EntityType); 00101 DtDECLARE_BASE_ENTITY_ATTR_DECODER(IsFrozen); 00102 DtDECLARE_BASE_ENTITY_ATTR_DECODER(Orientation); 00103 DtDECLARE_BASE_ENTITY_ATTR_DECODER(VelocityVector); 00104 00106 DtDECLARE_BASE_ENTITY_ATTR_DECODER(DRAlgorithm); 00107 DtDECLARE_BASE_ENTITY_ATTR_DECODER(Position); 00108 DtDECLARE_BASE_ENTITY_ATTR_DECODER(EntityID); 00109 00111 DtDECLARE_BASE_ENTITY_ATTR_DECODER(DeadReckoningAlgorithm); 00112 DtDECLARE_BASE_ENTITY_ATTR_DECODER(WorldLocation); 00113 DtDECLARE_BASE_ENTITY_ATTR_DECODER(EntityIdentifier); 00114 }; 00115 00121 #define DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER_WITH_CAST( \ 00122 attrName, netType, mutator, castExpr) \ 00123 DtDEFINE_SIMPLE_ATTR_DECODER_WITH_CAST( \ 00124 DtBaseEntityDecoder, DtBaseEntityStateRepository, \ 00125 attrName, netType, mutator, castExpr) 00126 00127 #define DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER( \ 00128 attrName, netType, inspector) \ 00129 DtDEFINE_SIMPLE_BASE_ENTITY_ATTR_DECODER_WITH_CAST( \ 00130 attrName, netType, inspector, (netType)) 00131 00132 #endif 00133 #endif 00134 00135 00136