VR-Forces 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 
122 {
123  DtNetU32 myObjectAttachMode; // See vrfObjectAttachEnums.h -- default EntityOrientation
124 };
125 
133 
135 
137 
138 // Class Description: DtEnvironmentalStateRecord implements a form of an
139 // environmental state record not explicitly defined in the standard, but
140 // used in MaK applications. It contains a DtForceType to identify the force
141 // with which the environmental object is associated (may be DtForceOther) and
142 // an entity state-like appearance vector (using DtAppearance).
144 {
145 public:
146  // Default Constructor. To function properly, the state record should be
147  // initialized with an entity type. If you don't know it yet at creation
148  // time, you can use this constructor; but call setEntityType() before
149  // using the appearance accessors.
151 
152  // Constructor
154 
158 
159  // Assignment Operator
160  const DtSimEnvironmentalObjectStateRecord& operator=(
162 
163  // Destructor
165 
166  // Clone. Return a copy of this instance.
167  virtual DtEnvironmentalRecord* clone() const;
168 
169  virtual void setObjectType(const DtObjectType& objectType);
170 
171  // Appearance of the object.
172  virtual void setAppearance(const DtAppearance& appearance);
173  virtual const DtAppearance& appearance() const;
174 
175  // Force the object is associated with.
176  virtual void setForceType(DtForceType forceType);
177  virtual DtForceType forceType() const;
178 
179  virtual void setColor(int color);
180  virtual int color() const;
181 
182  virtual void setVrfObjectName(const DtString& label);
183  virtual const DtString& vrfObjectName() const;
184 
185  virtual void setParent(const DtString& parent);
186  virtual const DtString& parent() const;
187 
188  virtual void setUserData(const DtString& userData);
189  virtual const DtString& userData() const;
190 
191  virtual bool setNumberOfSubordinates(int newNumberOfSubordinates);
192  virtual int numberOfSubordinates() const;
193 
194  virtual bool setSubordinate(int index,
195  const DtGlobalObjectDesignator& subID);
196 
197  virtual bool getSubordinate(int index, DtGlobalObjectDesignator& subID)
198  const;
199 
200  virtual const DtGlobalObjectDesignatorList& subordinates() const;
201  virtual DtGlobalObjectDesignatorList& subordinates();
202 
203  // This doesn't need to be called explicitly. If any routine that needs
204  // the repository finds that it hasn't been created yet, it calls this
205  // method.
206  virtual bool createNetworkRepresentation();
207 
208  // returns the network representation of the environmental record
209  const DtNetEnvironmentalObjectStateRecord* objStateNetRep() const;
210  DtNetEnvironmentalObjectStateRecord* objStateNetRep();
211 
212  // used by the PDU class to fill in the network representation
213  virtual void setFromNet(const DtNetEnvironmentalRecord& buffer, int protocolVersion);
214 
215  virtual int netRepSize() const;
216 
217  // If object is attached, this is the id of the parent
218  virtual void setHostGlobalId(const DtGlobalObjectDesignator&);
219  virtual const DtGlobalObjectDesignator& hostGlobalId() const;
220 
221  virtual void setObjectAttachMode(int);
222  virtual int objectAttachMode() const;
223 
226  virtual void setRelativeLocation(const DtVector&);
227  virtual const DtVector& relativeLocation() const;
228 
229  // Clears out the host global id (sets it to "")
230  virtual void clearHostGlobalId();
231 
232  // Get/set projected, close and bound2d as in bit pattern above
233  virtual void setProjected(bool);
234  virtual bool projected() const;
235 
236  virtual void setClosedFigure(bool);
237  virtual bool closedFigure() const;
238 
239  virtual void setBound2D(bool);
240  virtual bool bound2D() const;
241 
243  virtual void setFillStyle(int);
244  virtual int fillStyle() const;
245 
246  virtual void setLineStyle(int);
247  virtual int lineStyle() const;
248 
249  virtual void setLineWidth(int);
250  virtual int lineWidth() const;
251 
253  virtual void setPhysicalLineHeight(double);
254  virtual double physicalLineHeight() const;
255 
257  virtual void setPhysicalLineWidth(double);
258  virtual double physicalLineWidth() const;
259 
262  virtual void setVelocity(const DtVector&);
263  virtual const DtVector& velocity() const;
264 
265  virtual void setAcceleration(const DtVector&);
266  virtual const DtVector& acceleration() const;
267 
268  virtual void setDRAlogrithm(DtDeadReckonTypes);
269  virtual const DtDeadReckonTypes& drAlgorithm() const;
271 
272  virtual void setOffsetPoints(const std::vector<DtVector>&);
273  virtual const std::vector<DtVector>& offsetPoints() const;
274 
275 protected:
276 
277  virtual bool resizeNetRep(int newSize);
278 
279  // These two functions do the pointer math to get a pointer to
280  // the right place in the internal buffer for the start of these
281  // data areas.
282 
283  virtual void* pointerToLabel() const;
284  virtual void* pointerToParent() const;
285  virtual void* pointerToSubordinates() const;
286  virtual void* pointerToUserData() const;
287  virtual void* pointerToOffsetPoints() const;
288 
289  // Casts the 'this' pointer for changing elements in a const function.
291 
292  // Reworks the network buffer based on record version (type)
293  virtual void reworkStateRepForVersion(int bytesToCopy, int iVersion);
294 
295  // Reworks the network buffer based on version in record. This started with _V6, xo, the size must be at least that
296  virtual void reworkStateRepForVersionedRecord(int bytesToCopy);
297 
298 protected:
299 
300  DtGlobalObjectDesignatorList mySubordinates;
301  DtAppearance myAppearance;
304  int myColor;
305  DtForceType myForceType;
313  std::vector<DtVector> myOffsetPoints;
316  DtDeadReckonTypes myDRAlgorithm;
318 };
DtVector myVelocity
Definition: simEnvironmentalObjectStateRecord.h:314
DtVector myRelativeLocation
Definition: simEnvironmentalObjectStateRecord.h:312
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:34
int myNetRepSize
Definition: simEnvironmentalObjectStateRecord.h:311
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:83
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:85
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:58
Definition: simEnvironmentalObjectStateRecord.h:90
int myObjectAttachMode
Definition: simEnvironmentalObjectStateRecord.h:317
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:46
Definition: simEnvironmentalObjectStateRecord.h:121
DtDeadReckonTypes myDRAlgorithm
Definition: simEnvironmentalObjectStateRecord.h:316
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:49
DtNetU32 myVersion
Definition: simEnvironmentalObjectStateRecord.h:103
DtString myUserData
Definition: simEnvironmentalObjectStateRecord.h:307
DtNetU16 myUserDataSize
Definition: simEnvironmentalObjectStateRecord.h:87
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:43
DtForceType myForceType
Definition: simEnvironmentalObjectStateRecord.h:305
Definition: simEnvironmentalObjectStateRecord.h:77
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:69
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:99
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
DtNetFloat32 myPhysicalLineWidth
Definition: simEnvironmentalObjectStateRecord.h:102
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:68
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:72
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:61
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:56
DtString myLabel
Definition: simEnvironmentalObjectStateRecord.h:302
DtGlobalObjectDesignatorList mySubordinates
Definition: simEnvironmentalObjectStateRecord.h:300
Definition: simEnvironmentalObjectStateRecord.h:41
Definition: simEnvironmentalObjectStateRecord.h:64
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:96
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:94
DtVector myAcceleration
Definition: simEnvironmentalObjectStateRecord.h:315
DtAppearance myAppearance
Definition: simEnvironmentalObjectStateRecord.h:301
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:60
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:80
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:79
DtNetU32 myOffsetPoints
If this object is an attached object with multiple points, these points are the offset points based o...
Definition: simEnvironmentalObjectStateRecord.h:116
DtNetVector64 myRelativeLocation
If attached to an entity, the relative position (in body coordinates) of this object from the origin ...
Definition: simEnvironmentalObjectStateRecord.h:107
double myPhysicalLineWidth
Definition: simEnvironmentalObjectStateRecord.h:310
DtNetVector64 myAcceleration
Definition: simEnvironmentalObjectStateRecord.h:111
Definition: simEnvironmentalObjectStateRecord.h:32
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:81
Definition: simEnvironmentalObjectStateRecord.h:52
DtNetU32 myObjectAttachMode
Definition: simEnvironmentalObjectStateRecord.h:123
DtString myParent
Definition: simEnvironmentalObjectStateRecord.h:303
const int DtEnvironmentalRecordVersion
Definition: simEnvironmentalObjectStateRecord.h:136
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:92
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:35
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:70
DtNetVector64 myVelocity
Unused at this point – left for future possible expansion for movable/rotatable environmentals.
Definition: simEnvironmentalObjectStateRecord.h:110
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:44
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:86
Definition: simEnvironmentalObjectStateRecord.h:143
DtNetGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:73
DtNetU16 myUserDataSize
Definition: simEnvironmentalObjectStateRecord.h:100
DtNetU8 myUserDataSize
Definition: simEnvironmentalObjectStateRecord.h:74
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:54
int myVersion
Definition: simEnvironmentalObjectStateRecord.h:308
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:55
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:38
DtNetU32 myColor
Definition: simEnvironmentalObjectStateRecord.h:97
int myColor
Definition: simEnvironmentalObjectStateRecord.h:304
DtNetU16 myNumberOfSubordinates
Definition: simEnvironmentalObjectStateRecord.h:47
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:82
DtNetU8 myDRAlgorithm
Definition: simEnvironmentalObjectStateRecord.h:112
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:57
const int DtMaxEnvProcessLabelLength
Note, the myAppearance has the following layout Bit 0 - projected Bit 1 - bound2D Bit 2 - closed Bits...
Definition: simEnvironmentalObjectStateRecord.h:134
DtNetU8 myForceType
Definition: simEnvironmentalObjectStateRecord.h:36
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:93
DtNetU32 myAppearance
Definition: simEnvironmentalObjectStateRecord.h:67
DtGlobalObjectDesignator myHostGlobalId
Definition: simEnvironmentalObjectStateRecord.h:306
#define DT_DLL_vrfExtObjects
Definition: dllExport.h:23
std::vector< DtVector > myOffsetPoints
Definition: simEnvironmentalObjectStateRecord.h:313
DtNetEnvironmentalRecord myHeader
Definition: simEnvironmentalObjectStateRecord.h:66
DtNetU8 myLabelSize
Definition: simEnvironmentalObjectStateRecord.h:95
DtNetFloat32 myPhysicalLineHeight
Definition: simEnvironmentalObjectStateRecord.h:101
double myPhysicalLineHeight
Definition: simEnvironmentalObjectStateRecord.h:309
DtNetU8 myParentSize
Definition: simEnvironmentalObjectStateRecord.h:98

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)