32 class DT_DLL_VL DtPhysicalEntityDecoder :
public DtBaseEntityDecoder
37 DtPhysicalEntityDecoder(
39 DtObjClassDesc* classDesc);
42 virtual ~DtPhysicalEntityDecoder();
45 DtPhysicalEntityDecoder(
const DtPhysicalEntityDecoder& orig);
48 DtPhysicalEntityDecoder& operator=(
const DtPhysicalEntityDecoder& orig);
54 static DtHlaStateDecoder* create(
56 DtObjClassDesc* classDesc);
72 DtDECLARE_ENTITY_ATTR_DECODER(DamageState);
73 DtDECLARE_ENTITY_ATTR_DECODER(EngineSmokeOn);
74 DtDECLARE_ENTITY_ATTR_DECODER(FlamesPresent);
75 DtDECLARE_ENTITY_ATTR_DECODER(HasFuelSupplyCap);
76 DtDECLARE_ENTITY_ATTR_DECODER(HasRecoveryCap);
77 DtDECLARE_ENTITY_ATTR_DECODER(HasRepairCap);
78 DtDECLARE_ENTITY_ATTR_DECODER(Immobilized);
79 DtDECLARE_ENTITY_ATTR_DECODER(Marking);
80 DtDECLARE_ENTITY_ATTR_DECODER(PowerPlantOn);
81 DtDECLARE_ENTITY_ATTR_DECODER(SmokePlumePresent);
82 DtDECLARE_ENTITY_ATTR_DECODER(TentDeployed);
85 DtDECLARE_ENTITY_ATTR_DECODER(ArticulatedParametersArrayPre09);
86 DtDECLARE_ENTITY_ATTR_DECODER(TrailState);
87 DtDECLARE_ENTITY_ATTR_DECODER(HatchState);
88 DtDECLARE_ENTITY_ATTR_DECODER(LifeformState);
89 DtDECLARE_ENTITY_ATTR_DECODER(LightsState);
90 DtDECLARE_ENTITY_ATTR_DECODER(RampDeployed);
93 DtDECLARE_ENTITY_ATTR_DECODER(ArticulatedParametersArray);
94 DtDECLARE_ENTITY_ATTR_DECODER(TrailingEffectsCode);
95 DtDECLARE_ENTITY_ATTR_DECODER(AlternateEntityType);
96 DtDECLARE_ENTITY_ATTR_DECODER(CamouflageType);
97 DtDECLARE_ENTITY_ATTR_DECODER(FirePowerDisabled);
98 DtDECLARE_ENTITY_ATTR_DECODER(ForceIdentifier);
99 DtDECLARE_ENTITY_ATTR_DECODER(IsConcealed);
100 DtDECLARE_ENTITY_ATTR_DECODER(HasAmmunitionSupplyCap);
103 DtDECLARE_ENTITY_ATTR_DECODER(AcousticSignatureIndex);
104 DtDECLARE_ENTITY_ATTR_DECODER(InfraredSignatureIndex);
105 DtDECLARE_ENTITY_ATTR_DECODER(PropulsionSystemsData);
106 DtDECLARE_ENTITY_ATTR_DECODER(RadarCrossSectionSignatureIndex);
107 DtDECLARE_ENTITY_ATTR_DECODER(VectoringNozzleSystemData);
108 DtDECLARE_ENTITY_ATTR_DECODER(LiveEntityMeasuredSpeed);
111 DtDECLARE_ENTITY_ATTR_DECODER(DIGuyAction);
112 DtDECLARE_ENTITY_ATTR_DECODER(DIGuyAppearance);
113 DtDECLARE_ENTITY_ATTR_DECODER(DIGuyArc);
114 DtDECLARE_ENTITY_ATTR_DECODER(DIGuyType);
115 DtDECLARE_ENTITY_ATTR_DECODER(DIGuyParent);
119 static void decodeAttParts(
int numParams,
123 static void convertFromRPR1_0(
134 #define DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_DECODER_WITH_CAST( \
135 attrName, netType, mutator, castExpr) \
136 DtDEFINE_SIMPLE_ATTR_DECODER_WITH_CAST( \
137 DtPhysicalEntityDecoder, DtEntityStateRepository, \
138 attrName, netType, mutator, castExpr)
140 #define DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_DECODER( \
141 attrName, netType, inspector) \
142 DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_DECODER_WITH_CAST( \
143 attrName, netType, inspector, (netType))
145 #define DtDEFINE_LIGHT_ATTR_DECODER( \
146 decClass, attrName, arg1) \
147 void decClass::decode##attrName( \
148 DtEntityStateRepository* stateRep, \
149 const RTI::AttributeHandleValuePairSet& attrs, \
152 RTI::ULong length = attrs.getValueLength(pairSetIndex); \
153 if (length > sizeof(DtNetBoolean)) \
155 DtWarn("Size of value decoded from RTI update for attribute %s (%d)\n", \
156 #attrName, length); \
157 DtWarn(" is larger than size of %s (%d)\n", "DtNetBoolean", sizeof(DtNetBoolean)); \
159 DtNetBoolean netVal; \
160 attrs.getValue(pairSetIndex, (char *) &netVal, length); \
161 stateRep->setLightState(arg1, (bool) (DtU32) netVal); \