VR-Link API Documentation for HLA 1.3
hPhysEntEnc.h
Go to the documentation of this file.
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 

Document ID: Generated on Mon May 14 08:06:18 EDT 2012 from SVN revision 114750
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)