VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
physicalEntityEncoder.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 1992-2010 VT MAK
3 ** All rights reserved.
4 *********************************************************************/
5 
6 
7 #ifndef physicalEntityEncoder_H_
8 #define physicalEntityEncoder_H_
9 
10 #if DtHLA
11 
12 #include "baseEntityEncoder.h"
13 #include "entityStateRepository.h"
14 
18 
24 
25 class DT_DLL_VL DtPhysicalEntityEncoder : public DtBaseEntityEncoder
26 {
27 public:
28 
30  DtPhysicalEntityEncoder(
31  DtExerciseConn* exConn,
32  DtObjClassDesc* classDesc);
33 
35  virtual ~DtPhysicalEntityEncoder();
36 
38  DtPhysicalEntityEncoder(const DtPhysicalEntityEncoder& orig);
39 
41  DtPhysicalEntityEncoder& operator=(const DtPhysicalEntityEncoder& orig);
42 
43 public:
44 
47  static DtHlaStateEncoder* create(
48  DtExerciseConn* exConn,
49  DtObjClassDesc* classDesc);
50 
51 protected:
52 
54  DtDECLARE_ENTITY_ATTR_CHECKER(ArticulatedParametersArray);
55  DtDECLARE_ENTITY_ATTR_CHECKER(DamageState);
56  DtDECLARE_ENTITY_ATTR_CHECKER(EngineSmokeOn);
57  DtDECLARE_ENTITY_ATTR_CHECKER(FlamesPresent);
58  DtDECLARE_ENTITY_ATTR_CHECKER(HasFuelSupplyCap);
59  DtDECLARE_ENTITY_ATTR_CHECKER(HasRecoveryCap);
60  DtDECLARE_ENTITY_ATTR_CHECKER(HasRepairCap);
61  DtDECLARE_ENTITY_ATTR_CHECKER(Immobilized);
62  DtDECLARE_ENTITY_ATTR_CHECKER(Marking);
63  DtDECLARE_ENTITY_ATTR_CHECKER(PowerPlantOn);
64  DtDECLARE_ENTITY_ATTR_CHECKER(SmokePlumePresent);
65  DtDECLARE_ENTITY_ATTR_CHECKER(TentDeployed);
66 
68  DtDECLARE_ENTITY_ATTR_CHECKER(HatchState);
69  DtDECLARE_ENTITY_ATTR_CHECKER(LifeformState);
70  DtDECLARE_ENTITY_ATTR_CHECKER(LightsState);
71  DtDECLARE_ENTITY_ATTR_CHECKER(RampDeployed);
72  DtDECLARE_ENTITY_ATTR_CHECKER(TrailState);
73 
75  DtDECLARE_ENTITY_ATTR_CHECKER(AlternateEntityType);
76  DtDECLARE_ENTITY_ATTR_CHECKER(CamouflageType);
77  DtDECLARE_ENTITY_ATTR_CHECKER(FirePowerDisabled);
78  DtDECLARE_ENTITY_ATTR_CHECKER(ForceIdentifier);
79  DtDECLARE_ENTITY_ATTR_CHECKER(HasAmmunitionSupplyCap);
80  DtDECLARE_ENTITY_ATTR_CHECKER(IsConcealed);
81  DtDECLARE_ENTITY_ATTR_CHECKER(TrailingEffectsCode);
82 
84  DtDECLARE_ENTITY_ATTR_CHECKER(AcousticSignatureIndex);
85  DtDECLARE_ENTITY_ATTR_CHECKER(InfraredSignatureIndex);
86  DtDECLARE_ENTITY_ATTR_CHECKER(PropulsionSystemsData);
87  DtDECLARE_ENTITY_ATTR_CHECKER(RadarCrossSectionSignatureIndex);
88  DtDECLARE_ENTITY_ATTR_CHECKER(VectoringNozzleSystemData);
89 
91  DtDECLARE_ENTITY_ATTR_CHECKER(LiveEntityMeasuredSpeed);
92 
94  DtDECLARE_ENTITY_ATTR_ENCODER(DamageState);
95  DtDECLARE_ENTITY_ATTR_ENCODER(EngineSmokeOn);
96  DtDECLARE_ENTITY_ATTR_ENCODER(FlamesPresent);
97  DtDECLARE_ENTITY_ATTR_ENCODER(HasFuelSupplyCap);
98  DtDECLARE_ENTITY_ATTR_ENCODER(HasRecoveryCap);
99  DtDECLARE_ENTITY_ATTR_ENCODER(HasRepairCap);
100  DtDECLARE_ENTITY_ATTR_ENCODER(Immobilized);
101  DtDECLARE_ENTITY_ATTR_ENCODER(Marking);
102  DtDECLARE_ENTITY_ATTR_ENCODER(PowerPlantOn);
103  DtDECLARE_ENTITY_ATTR_ENCODER(SmokePlumePresent);
104  DtDECLARE_ENTITY_ATTR_ENCODER(TentDeployed);
105 
107  static void encodeArticulatedParametersArrayPre09(
108  const DtEntityStateRepository& stateRep,
109  RTI::AttributeHandleValuePairSet* avList,
110  RTI::AttributeHandle attrHandle);
111 
112  DtDECLARE_ENTITY_ATTR_ENCODER(HatchState);
113  DtDECLARE_ENTITY_ATTR_ENCODER(LifeformState);
114  DtDECLARE_ENTITY_ATTR_ENCODER(LightsState);
115  DtDECLARE_ENTITY_ATTR_ENCODER(RampDeployed);
116  DtDECLARE_ENTITY_ATTR_ENCODER(TrailState);
117 
119  DtDECLARE_ENTITY_ATTR_ENCODER(ArticulatedParametersArray);
120  DtDECLARE_ENTITY_ATTR_ENCODER(AlternateEntityType);
121  DtDECLARE_ENTITY_ATTR_ENCODER(CamouflageType);
122  DtDECLARE_ENTITY_ATTR_ENCODER(FirePowerDisabled);
123  DtDECLARE_ENTITY_ATTR_ENCODER(ForceIdentifier);
124  DtDECLARE_ENTITY_ATTR_ENCODER(HasAmmunitionSupplyCap);
125  DtDECLARE_ENTITY_ATTR_ENCODER(IsConcealed);
126  DtDECLARE_ENTITY_ATTR_ENCODER(TrailingEffectsCode);
127 
129  DtDECLARE_ENTITY_ATTR_ENCODER(AcousticSignatureIndex);
130  DtDECLARE_ENTITY_ATTR_ENCODER(InfraredSignatureIndex);
131  DtDECLARE_ENTITY_ATTR_ENCODER(PropulsionSystemsData);
132  DtDECLARE_ENTITY_ATTR_ENCODER(RadarCrossSectionSignatureIndex);
133  DtDECLARE_ENTITY_ATTR_ENCODER(VectoringNozzleSystemData);
134  DtDECLARE_ENTITY_ATTR_ENCODER(LiveEntityMeasuredSpeed);
135 
137  DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyAction);
138  DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyAction);
139  DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyAppearance);
140  DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyAppearance);
141  DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyArc);
142  DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyArc);
143  DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyType);
144  DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyType);
145  DtDECLARE_ENTITY_ATTR_CHECKER(DIGuyParent);
146  DtDECLARE_ENTITY_ATTR_ENCODER(DIGuyParent);
147 
148 
149 
150 protected:
151 
153  static void convertToRPR1_0(
154  DtNetArtParamRecord* netParams,
155  DtNetArtParamRecordRPR1* netParamsRPR1,
156  int numRecords);
157 
158  static void encodeAttachedParts(
159  const DtAttachedPartCollection& parts, DtNetAttachedPart* netParams );
160 
163  static void setArticulatedPartDeadReckoningEnabled(bool enable);
164  static bool articulatedPartDeadReckoningEnabled();
165 
166 protected:
167  static bool theAreArticulatedPartsDeadReckoned;
168 };
169 
175 #define DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_ENCODER( \
176  attrName, netType, inspector) \
177  DtDEFINE_SIMPLE_ATTR_ENCODER(DtPhysicalEntityEncoder, \
178  DtEntityStateRepository, \
179  attrName, netType, inspector)
180 
186 #define DtDEFINE_SIMPLE_PHYS_ENTITY_ATTR_CHECKER( \
187  attrName, inspector) \
188  DtDEFINE_SIMPLE_ATTR_CHECKER(DtPhysicalEntityEncoder, \
189  DtEntityStateRepository, \
190  attrName, inspector)
191 
195 #define DtDEFINE_LIGHT_ATTR_CHECKER( \
196  encClass, attrName, arg1) \
197 bool encClass::need##attrName( \
198  const DtEntityStateRepository& stateRep, \
199  const DtEntityStateRepository& asSeenByRemote) \
200 { \
201  return (bool) (stateRep.lightState(arg1) != asSeenByRemote.lightState(arg1)); \
202 }
203 
204 #define DtDEFINE_LIGHT_ATTR_ENCODER( \
205  encClass, attrName, arg1) \
206 void encClass::encode##attrName( \
207  const DtEntityStateRepository& rep, \
208  RTI::AttributeHandleValuePairSet* attrs, \
209  RTI::AttributeHandle attrHandle) \
210 { \
211  DtNetBoolean netVal; \
212  netVal = rep.lightState(arg1); \
213  attrs->add(attrHandle, (char*) &netVal, sizeof(DtNetBoolean)); \
214 }
215 #endif
216 #endif
217 
A DtAttachedPartCollection is a collection of attached parts of an entity.
Definition: attachedPartCollection.h:24
Instances of DtExerciseConn are used to provide an application's interface or connection to the netwo...
Definition: exerciseConnDIS.h:61
Definition: netStructs.h:280
#define DT_DLL_VL
Definition: vlMachineTypes.h:108
Instances of DtEntityStateRepository are used to maintain attributes and state of entity objects in a...
Definition: entityStateRepository.h:36
Definition: netStructs.h:213
Contains the DtEntityStateRepository class declaration.
Definition: netStructs.h:224

Document ID: Generated on Tue Feb 2 21:02:17 EST 2021 from SVN revision 223668
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)