VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simEnvironmentalObjectStateRecord.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2017 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
14 #include <vl/globalObjectDesignatorList.h>
15 #include <vl/environmentalRecord.h>
16 #include <vlpi/appearance.h>
17 #include <vlpi/disEnums.h>
18 
19 #define DtLineWidthFromAppearance(theAppr) ((theAppr >> 28) & 0x0000000F)
20 #define DtLineWidthToAppearance(theLineWidth) (theLineWidth << 28)
21 #define DtLineStyleFromAppearance(theAppr) ((theAppr >> 8) & 0x0000000F)
22 #define DtLineStyleToAppearance(theLineStyle) (theLineStyle << 8)
23 #define DtFillStyleFromAppearance(theAppr) ((theAppr >> 12) & 0x0000000F)
24 #define DtFillStyleToAppearance(theFillStyle) (theFillStyle << 12)
25 
26 // Definition of the FIXED PORTION of the environmental state object.
27 // This will be followed by a variable length string of bytes to represent
28 // the object label, and 0 or more global object designators to represent
29 // any subordinate objects within the object represented.
30 
31 // If this structure is of a previous type, use that structure instead
33 {
34  DtNetEnvironmentalRecord myHeader;
35  DtNetU32 myAppearance;
36  DtNetU8 myForceType;
37  DtNetU8 myLabelSize;
39 };
40 
42 {
43  DtNetEnvironmentalRecord myHeader;
44  DtNetU32 myAppearance;
45  DtNetU8 myForceType;
46  DtNetU8 myLabelSize;
48  DtNetU32 myColor;
49  DtNetU8 myParentSize;
50 };
51 
53 {
54  DtNetEnvironmentalRecord myHeader;
55  DtNetU32 myAppearance;
56  DtNetU8 myForceType;
57  DtNetU8 myLabelSize;
59  DtNetU32 myColor;
60  DtNetU8 myParentSize;
61  DtNetGlobalObjectDesignator myHostGlobalId;
62 };
63 
65 {
66  DtNetEnvironmentalRecord myHeader;
67  DtNetU32 myAppearance;
68  DtNetU8 myForceType;
69  DtNetU8 myLabelSize;
71  DtNetU32 myColor;
72  DtNetU8 myParentSize;
73  DtNetGlobalObjectDesignator myHostGlobalId;
74  DtNetU8 myUserDataSize;
75 };
76 
78 {
79  DtNetEnvironmentalRecord myHeader;
80  DtNetU32 myAppearance;
81  DtNetU8 myForceType;
82  DtNetU8 myLabelSize;
84  DtNetU32 myColor;
85  DtNetU8 myParentSize;
86  DtNetGlobalObjectDesignator myHostGlobalId;
87  DtNetU16 myUserDataSize;
88 };
89 
91 {
92  DtNetEnvironmentalRecord myHeader;
93  DtNetU32 myAppearance;
94  DtNetU8 myForceType;
95  DtNetU8 myLabelSize;
97  DtNetU32 myColor;
98  DtNetU8 myParentSize;
99  DtNetGlobalObjectDesignator myHostGlobalId;
100  DtNetU16 myUserDataSize;
101  DtNetFloat32 myPhysicalLineHeight;
102  DtNetFloat32 myPhysicalLineWidth;
103  DtNetU32 myVersion;
104 
107  DtNetVector64 myRelativeLocation;
108 
110  DtNetVector64 myVelocity;
111  DtNetVector64 myAcceleration;
112  DtNetU8 myDRAlgorithm;
113 
116  DtNetU32 myOffsetPoints;
117 
119 };
120 
128 
130 
132 
133 // Class Description: DtEnvironmentalStateRecord implements a form of an
134 // environmental state record not explicitly defined in the standard, but
135 // used in MaK applications. It contains a DtForceType to identify the force
136 // with which the environmental object is associated (may be DtForceOther) and
137 // an entity state-like appearance vector (using DtAppearance).
139 {
140 public:
141  // Default Constructor. To function properly, the state record should be
142  // initialized with an entity type. If you don't know it yet at creation
143  // time, you can use this constructor; but call setEntityType() before
144  // using the appearance accessors.
146 
147  // Constructor
149 
153 
154  // Assignment Operator
155  const DtSimEnvironmentalObjectStateRecord& operator=(
157 
158  // Destructor
160 
161  // Clone. Return a copy of this instance.
162  virtual DtEnvironmentalRecord* clone() const;
163 
164  virtual void setObjectType(const DtObjectType& objectType);
165 
166  // Appearance of the object.
167  virtual void setAppearance(const DtAppearance& appearance);
168  virtual const DtAppearance& appearance() const;
169 
170  // Force the object is associated with.
171  virtual void setForceType(DtForceType forceType);
172  virtual DtForceType forceType() const;
173 
174  virtual void setColor(int color);
175  virtual int color() const;
176 
177  virtual void setVrfObjectName(const DtString& label);
178  virtual const DtString& vrfObjectName() const;
179 
180  virtual void setParent(const DtString& parent);
181  virtual const DtString& parent() const;
182 
183  virtual void setUserData(const DtString& userData);
184  virtual const DtString& userData() const;
185 
186  virtual bool setNumberOfSubordinates(int newNumberOfSubordinates);
187  virtual int numberOfSubordinates() const;
188 
189  virtual bool setSubordinate(int index,
190  const DtGlobalObjectDesignator& subID);
191 
192  virtual bool getSubordinate(int index, DtGlobalObjectDesignator& subID)
193  const;
194 
195  virtual const DtGlobalObjectDesignatorList& subordinates() const;
196  virtual DtGlobalObjectDesignatorList& subordinates();
197 
198  // This doesn't need to be called explicitly. If any routine that needs
199  // the repository finds that it hasn't been created yet, it calls this
200  // method.
201  virtual bool createNetworkRepresentation();
202 
203  // returns the network representation of the environmental record
204  const DtNetEnvironmentalObjectStateRecord* objStateNetRep() const;
205  DtNetEnvironmentalObjectStateRecord* objStateNetRep();
206 
207  // used by the PDU class to fill in the network representation
208  virtual void setFromNet(const DtNetEnvironmentalRecord& buffer, int protocolVersion);
209 
210  virtual int netRepSize() const;
211 
212  // If object is attached, this is the id of the parent
213  virtual void setHostGlobalId(const DtGlobalObjectDesignator&);
214  virtual const DtGlobalObjectDesignator& hostGlobalId() const;
215 
218  virtual void setRelativeLocation(const DtVector&);
219  virtual const DtVector& relativeLocation() const;
220 
221  // Clears out the host global id (sets it to "")
222  virtual void clearHostGlobalId();
223 
224  // Get/set projected, close and bound2d as in bit pattern above
225  virtual void setProjected(bool);
226  virtual bool projected() const;
227 
228  virtual void setClosedFigure(bool);
229  virtual bool closedFigure() const;
230 
231  virtual void setBound2D(bool);
232  virtual bool bound2D() const;
233 
235  virtual void setFillStyle(int);
236  virtual int fillStyle() const;
237 
238  virtual void setLineStyle(int);
239  virtual int lineStyle() const;
240 
241  virtual void setLineWidth(int);
242  virtual int lineWidth() const;
243 
245  virtual void setPhysicalLineHeight(double);
246  virtual double physicalLineHeight() const;
247 
249  virtual void setPhysicalLineWidth(double);
250  virtual double physicalLineWidth() const;
251 
254  virtual void setVelocity(const DtVector&);
255  virtual const DtVector& velocity() const;
256 
257  virtual void setAcceleration(const DtVector&);
258  virtual const DtVector& acceleration() const;
259 
260  virtual void setDRAlogrithm(DtDeadReckonTypes);
261  virtual const DtDeadReckonTypes& drAlgorithm() const;
263 
264  virtual void setOffsetPoints(const std::vector<DtVector>&);
265  virtual const std::vector<DtVector>& offsetPoints() const;
266 
267 protected:
268 
269  virtual bool resizeNetRep(int newSize);
270 
271  // These two functions do the pointer math to get a pointer to
272  // the right place in the internal buffer for the start of these
273  // data areas.
274 
275  virtual void* pointerToLabel() const;
276  virtual void* pointerToParent() const;
277  virtual void* pointerToSubordinates() const;
278  virtual void* pointerToUserData() const;
279  virtual void* pointerToOffsetPoints() const;
280 
281  // Casts the 'this' pointer for changing elements in a const function.
283 
284  // Reworks the network buffer based on version
285  virtual void reworkStateRepForVersion(int bytesToCopy, int iVersion);
286 
287 protected:
288 
289  DtGlobalObjectDesignatorList mySubordinates;
290  DtAppearance myAppearance;
293  int myColor;
294  DtForceType myForceType;
295  DtGlobalObjectDesignator myHostGlobalId;
302  std::vector<DtVector> myOffsetPoints;
305  DtDeadReckonTypes myDRAlgorithm;
306 };
DtVector myVelocity
Definition: simEnvironmentalObjectStateRecord.h:303
DtVector myRelativeLocation
Definition: simEnvironmentalObjectStateRecord.h:301
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:34
int myNetRepSize
Definition: simEnvironmentalObjectStateRecord.h:300
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:94
DtNetU8 myDRAlgorithm
Definition: simEnvironmentalObjectStateRecord.h:112
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:83
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:85
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:58
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:46
Definition: simEnvironmentalObjectStateRecord.h:90
DtDeadReckonTypes myDRAlgorithm
Definition: simEnvironmentalObjectStateRecord.h:305
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:49
DtString myUserData
Definition: simEnvironmentalObjectStateRecord.h:296
DtNetU16 myUserDataSize
Definition: simEnvironmentalObjectStateRecord.h:87
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:43
DtForceType myForceType
Definition: simEnvironmentalObjectStateRecord.h:294
DtNetVector64 myAcceleration
Definition: simEnvironmentalObjectStateRecord.h:111
Definition: simEnvironmentalObjectStateRecord.h:77
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:69
DtNetU32 myColor
Definition: simEnvironmentalObjectStateRecord.h:71
DtNetU32 myColor
Definition: simEnvironmentalObjectStateRecord.h:59
DtNetU32 myColor
Definition: simEnvironmentalObjectStateRecord.h:84
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:37
DtNetU32 myColor
Definition: simEnvironmentalObjectStateRecord.h:48
Definition: objectType.h:27
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:45
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:68
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:72
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:61
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:56
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:98
DtString myLabel
Definition: simEnvironmentalObjectStateRecord.h:291
DtGlobalObjectDesignatorList mySubordinates
Definition: simEnvironmentalObjectStateRecord.h:289
Definition: simEnvironmentalObjectStateRecord.h:41
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:93
Definition: simEnvironmentalObjectStateRecord.h:64
DtNetU32 myVersion
Definition: simEnvironmentalObjectStateRecord.h:103
DtVector myAcceleration
Definition: simEnvironmentalObjectStateRecord.h:304
DtAppearance myAppearance
Definition: simEnvironmentalObjectStateRecord.h:290
DtNetVector64 myRelativeLocation
If attached to an entity, the relative position (in body coordinates) of this object from the origin ...
Definition: simEnvironmentalObjectStateRecord.h:107
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:60
DtNetFloat32 myPhysicalLineHeight
Definition: simEnvironmentalObjectStateRecord.h:101
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:80
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:79
DtNetVector64 myVelocity
Unused at this point – left for future possible expansion for movable/rotatable environmentals.
Definition: simEnvironmentalObjectStateRecord.h:110
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:99
double myPhysicalLineWidth
Definition: simEnvironmentalObjectStateRecord.h:299
Definition: simEnvironmentalObjectStateRecord.h:32
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:81
Definition: simEnvironmentalObjectStateRecord.h:52
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:92
DtNetU32 myColor
Definition: simEnvironmentalObjectStateRecord.h:97
DtString myParent
Definition: simEnvironmentalObjectStateRecord.h:292
const int DtEnvironmentalRecordVersion
Definition: simEnvironmentalObjectStateRecord.h:131
DtNetU32 myOffsetPoints
If this object is an attached object with multiple points, these points are the offset points based o...
Definition: simEnvironmentalObjectStateRecord.h:116
DtNetU16 myUserDataSize
Definition: simEnvironmentalObjectStateRecord.h:100
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:35
DtNetFloat32 myPhysicalLineWidth
Definition: simEnvironmentalObjectStateRecord.h:102
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:70
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:44
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:86
Definition: simEnvironmentalObjectStateRecord.h:138
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:73
DtNetU8 myUserDataSize
Definition: simEnvironmentalObjectStateRecord.h:74
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:54
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:96
int myVersion
Definition: simEnvironmentalObjectStateRecord.h:297
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:55
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:38
int myColor
Definition: simEnvironmentalObjectStateRecord.h:293
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:47
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:82
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:57
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:95
const int DtMaxEnvProcessLabelLength
Note, the myAppearance has the following layout Bit 0 - projected Bit 1 - bound2D Bit 2 - closed Bits...
Definition: simEnvironmentalObjectStateRecord.h:129
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:36
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:67
DtGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:295
#define DT_DLL_vrfExtObjects
Definition: dllExport.h:23
std::vector< DtVector > myOffsetPoints
Definition: simEnvironmentalObjectStateRecord.h:302
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:66
double myPhysicalLineHeight
Definition: simEnvironmentalObjectStateRecord.h:298

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)