![]() |
VR-Link API Documentation for DIS
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #ifndef hPhysEntEnc_H_ 00008 #define hPhysEntEnc_H_ 00009 00010 #if DtHLA 00011 00012 #include "hBaseEntEnc.h" 00013 #include "entitySR.h" 00014 00018 00024 00025 class DT_DLL_VL DtPhysicalEntityEncoder : public DtBaseEntityEncoder 00026 { 00027 public: 00028 00030 DtPhysicalEntityEncoder( 00031 DtExerciseConn* exConn, 00032 DtObjClassDesc* classDesc); 00033 00035 virtual ~DtPhysicalEntityEncoder(); 00036 00038 DtPhysicalEntityEncoder(const DtPhysicalEntityEncoder& orig); 00039 00041 DtPhysicalEntityEncoder& operator=(const DtPhysicalEntityEncoder& orig); 00042 00043 public: 00044 00047 static DtHlaStateEncoder* create( 00048 DtExerciseConn* exConn, 00049 DtObjClassDesc* classDesc); 00050 00051 protected: 00052 00054 DtDECLARE_ENTITY_ATTR_CHECKER(ArticulatedParametersArray); 00055 DtDECLARE_ENTITY_ATTR_CHECKER(DamageState); 00056 DtDECLARE_ENTITY_ATTR_CHECKER(EngineSmokeOn); 00057 DtDECLARE_ENTITY_ATTR_CHECKER(FlamesPresent); 00058 DtDECLARE_ENTITY_ATTR_CHECKER(HasFuelSupplyCap); 00059 DtDECLARE_ENTITY_ATTR_CHECKER(HasRecoveryCap); 00060 DtDECLARE_ENTITY_ATTR_CHECKER(HasRepairCap); 00061 DtDECLARE_ENTITY_ATTR_CHECKER(Immobilized); 00062 DtDECLARE_ENTITY_ATTR_CHECKER(Marking); 00063 DtDECLARE_ENTITY_ATTR_CHECKER(PowerPlantOn); 00064 DtDECLARE_ENTITY_ATTR_CHECKER(SmokePlumePresent); 00065 DtDECLARE_ENTITY_ATTR_CHECKER(TentDeployed); 00066 00068 DtDECLARE_ENTITY_ATTR_CHECKER(HatchState); 00069 DtDECLARE_ENTITY_ATTR_CHECKER(LifeformState); 00070 DtDECLARE_ENTITY_ATTR_CHECKER(LightsState); 00071 DtDECLARE_ENTITY_ATTR_CHECKER(RampDeployed); 00072 DtDECLARE_ENTITY_ATTR_CHECKER(TrailState); 00073 00075 DtDECLARE_ENTITY_ATTR_CHECKER(AlternateEntityType); 00076 DtDECLARE_ENTITY_ATTR_CHECKER(CamouflageType); 00077 DtDECLARE_ENTITY_ATTR_CHECKER(FirePowerDisabled); 00078 DtDECLARE_ENTITY_ATTR_CHECKER(ForceIdentifier); 00079 DtDECLARE_ENTITY_ATTR_CHECKER(HasAmmunitionSupplyCap); 00080 DtDECLARE_ENTITY_ATTR_CHECKER(IsConcealed); 00081 DtDECLARE_ENTITY_ATTR_CHECKER(TrailingEffectsCode); 00082 00084 DtDECLARE_ENTITY_ATTR_CHECKER(AcousticSignatureIndex); 00085 DtDECLARE_ENTITY_ATTR_CHECKER(InfraredSignatureIndex); 00086 DtDECLARE_ENTITY_ATTR_CHECKER(PropulsionSystemsData); 00087 DtDECLARE_ENTITY_ATTR_CHECKER(RadarCrossSectionSignatureIndex); 00088 DtDECLARE_ENTITY_ATTR_CHECKER(VectoringNozzleSystemData); 00089 00091 DtDECLARE_ENTITY_ATTR_CHECKER(LiveEntityMeasuredSpeed); 00092 00094 DtDECLARE_ENTITY_ATTR_ENCODER(DamageState); 00095 DtDECLARE_ENTITY_ATTR_ENCODER(EngineSmokeOn); 00096 DtDECLARE_ENTITY_ATTR_ENCODER(FlamesPresent); 00097 DtDECLARE_ENTITY_ATTR_ENCODER(HasFuelSupplyCap); 00098 DtDECLARE_ENTITY_ATTR_ENCODER(HasRecoveryCap); 00099 DtDECLARE_ENTITY_ATTR_ENCODER(HasRepairCap); 00100 DtDECLARE_ENTITY_ATTR_ENCODER(Immobilized); 00101 DtDECLARE_ENTITY_ATTR_ENCODER(Marking); 00102 DtDECLARE_ENTITY_ATTR_ENCODER(PowerPlantOn); 00103 DtDECLARE_ENTITY_ATTR_ENCODER(SmokePlumePresent); 00104 DtDECLARE_ENTITY_ATTR_ENCODER(TentDeployed); 00105 00107 static void encodeArticulatedParametersArrayPre09( 00108 const DtEntityStateRepository& stateRep, 00109 RTI::AttributeHandleValuePairSet* avList, 00110 RTI::AttributeHandle attrHandle); 00111 00112 DtDECLARE_ENTITY_ATTR_ENCODER(HatchState); 00113 DtDECLARE_ENTITY_ATTR_ENCODER(LifeformState); 00114 DtDECLARE_ENTITY_ATTR_ENCODER(LightsState); 00115 DtDECLARE_ENTITY_ATTR_ENCODER(RampDeployed); 00116 DtDECLARE_ENTITY_ATTR_ENCODER(TrailState); 00117 00119 DtDECLARE_ENTITY_ATTR_ENCODER(ArticulatedParametersArray); 00120 DtDECLARE_ENTITY_ATTR_ENCODER(AlternateEntityType); 00121 DtDECLARE_ENTITY_ATTR_ENCODER(CamouflageType); 00122 DtDECLARE_ENTITY_ATTR_ENCODER(FirePowerDisabled); 00123 DtDECLARE_ENTITY_ATTR_ENCODER(ForceIdentifier); 00124 DtDECLARE_ENTITY_ATTR_ENCODER(HasAmmunitionSupplyCap); 00125 DtDECLARE_ENTITY_ATTR_ENCODER(IsConcealed); 00126 DtDECLARE_ENTITY_ATTR_ENCODER(TrailingEffectsCode); 00127 00129 DtDECLARE_ENTITY_ATTR_ENCODER(AcousticSignatureIndex); 00130 DtDECLARE_ENTITY_ATTR_ENCODER(InfraredSignatureIndex); 00131 DtDECLARE_ENTITY_ATTR_ENCODER(PropulsionSystemsData); 00132 DtDECLARE_ENTITY_ATTR_ENCODER(RadarCrossSectionSignatureIndex); 00133 DtDECLARE_ENTITY_ATTR_ENCODER(VectoringNozzleSystemData); 00134 DtDECLARE_ENTITY_ATTR_ENCODER(LiveEntityMeasuredSpeed); 00135 00137 DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyAction); 00138 DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyAction); 00139 DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyAppearance); 00140 DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyAppearance); 00141 DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyArc); 00142 DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyArc); 00143 DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyType); 00144 DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyType); 00145 DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyParent); 00146 DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyParent); 00147 00148 00149 00150 protected: 00151 00153 static void convertToRPR1_0( 00154 DtNetArtParamRecord* netParams, 00155 DtNetArtParamRecordRPR1* netParamsRPR1, 00156 int numRecords); 00157 00158 static void encodeAttachedParts( 00159 const DtAttachedPartCollection& parts, DtNetAttachedPart* netParams ); 00160 00163 static void setArticulatedPartDeadReckoningEnabled(bool enable); 00164 static bool articulatedPartDeadReckoningEnabled(); 00165 00166 protected: 00167 static bool theAreArticulatedPartsDeadReckoned; 00168 }; 00169 00175 #define DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_ENCODER( \ 00176 attrName, netType, inspector) \ 00177 DtDEFINE_SIMPLE_ATTR_ENCODER(DtPhysicalEntityEncoder, \ 00178 DtEntityStateRepository, \ 00179 attrName, netType, inspector) 00180 00186 #define DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_CHECKER( \ 00187 attrName, inspector) \ 00188 DtDEFINE_SIMPLE_ATTR_CHECKER(DtPhysicalEntityEncoder, \ 00189 DtEntityStateRepository, \ 00190 attrName, inspector) 00191 00195 #define DtDEFINE_LIGHT_ATTR_CHECKER( \ 00196 encClass, attrName, arg1) \ 00197 bool encClass::need##attrName( \ 00198 const DtEntityStateRepository& stateRep, \ 00199 const DtEntityStateRepository& asSeenByRemote) \ 00200 { \ 00201 return (bool) (stateRep.lightState(arg1) != asSeenByRemote.lightState(arg1)); \ 00202 } 00203 00204 #define DtDEFINE_LIGHT_ATTR_ENCODER( \ 00205 encClass, attrName, arg1) \ 00206 void encClass::encode##attrName( \ 00207 const DtEntityStateRepository& rep, \ 00208 RTI::AttributeHandleValuePairSet* attrs, \ 00209 RTI::AttributeHandle attrHandle) \ 00210 { \ 00211 DtNetBoolean netVal; \ 00212 netVal = rep.lightState(arg1); \ 00213 attrs->add(attrHandle, (char*) &netVal, sizeof(DtNetBoolean)); \ 00214 } 00215 #endif 00216 #endif 00217