VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
controlObjectRepository.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 
12 #include <vl/environmentProcessRepository.h>
15 #include <vlpi/appearance.h>
16 
19 
20 class Dt3dBoundingVolume;
21 
22 #include <vector>
23 #include <map>
24 
27 class DtEnvironmentalBoundingSphereRecord;
28 class DtEnvironmentalRectangularVolumeRecord;
30 class DtGlobalObjectDesignatorList;
31 
33 {
41 };
42 
44 {
58 };
59 
60 class DtEnvironmentalPointRecord;
61 
62 // class DtControlObjectRepository:
63 //
64 // Instances of DtControlObjectRepository are
66 
69 {
70 public:
71 
72  // default constructor
73  DtExtendedEnvironmentalDataRecord(const char* data, int length);
75 
79 
80  // destructor
82 
84 
85  // Returns a newly created instance of a DtIfVrfObjectData.
86  virtual DtEnvironmentalRecord * clone() const;
87 
90  virtual const char* networkData() const;
91  virtual const char* setNetworkData(const DtNetEnvironmentalRecord*);
92 
94  virtual int netRepSize() const;
95  virtual void setFromNet(const DtNetEnvironmentalRecord& buffer, int protocolVersion);
96 
97 protected:
98  virtual bool createNetworkRepresentation();
99  virtual bool resizeNetRep(int newSize);
100 
101 protected:
103  const char* myData;
104 };
105 
107 
110 {
111 public:
114 
117 
119  virtual void updateDataRecords(DtControlObjectRepository*);
120 
122  virtual void decodeDataRecords(DtControlObjectRepository*);
123 
125  virtual bool readFromRecord(const DtNetEnvironmentalRecord*);
126 };
127 
129 {
130 public:
131  typedef std::vector<DtVector> DtCOVertexList;
132  typedef std::vector<DtIttEnvironmentalProcessData*> DtGeometricDataList;
133  typedef std::map<int, DtIttSourceDataCreator> DtIttSourceDataMap;
134 
135 public:
136 
137  // default constructor
139 
140  // destructor
141  virtual ~DtControlObjectRepository();
142 
143  // copy constructor
145 
146  // assignment operator
148 
149  // Return a copy/empty object of the same type as this.
150  virtual DtStateRepository* clone(bool copy = false) const;
151 
152  virtual const DtControlObjectKind& kind() const;
153  virtual void setKind(const DtControlObjectKind& k);
154 
155  virtual const DtControlObjectCategory& category() const;
156  virtual void setCategory(const DtControlObjectCategory& c);
157 
158  const std::vector<DtVector>& vertexList() const;
159 
160  // updateExtensions()
161  // extracts the extended environmental process state information,
162  // if present, from the state repository
163  virtual void updateExtensions();
164 
165  // Compares us against the supplied state repository and returns what's
166  // changed. Since this is being called from a location where the vertex list
167  // is already being checked, we don't need to do it.
168  virtual int compare(const DtControlObjectRepository* rhs);
169 
170  // Returns what has changed since the last time we called compare
171  virtual int compareToMostRecent();
172 
173  // Returns true if our stashed location is different than our
174  // current location
175  virtual bool locationsDifferent(bool updateIfDifferent);
176  virtual void emptyVertexList();
177 
178  // Adds mappings between environmental record types and the
179  // type of information to read off of the network into local
180  // environmental data structures
181  static void initializePuffFactory();
182  static void addToPuffFactory(int iRecordType, DtIttSourceDataCreator fcn);
183  static DtIttSourceData* createPuffRecord(DtNetEnvironmentalRecord* geometric,
184  DtNetEnvironmentalRecord* source);
185  static DtIttSourceData* createPuffRecord(DtNetEnvironmentalRecord* rec);
186 
187  virtual void getBoundingVolume(DtVector& location, double& radius) const;
188 
189  const DtGeometricDataList& geometricRecords() const;
190  bool geometricRecordsChanged() const;
191  void clearGeometricRecordsChanged();
192 
193  // If myNeedVrfObjectDataUpdate is true, update the vrf object data record. Also sets
194  // all vrf specific data records into state repository. Called from publisher
195  virtual void updateDataRecords();
196 
197  // Subordinate information. Not currently used by VRF
198  virtual int numberOfSubordinates() const;
199  virtual bool getSubordinate(int i, DtGlobalObjectDesignator& d);
200  virtual const DtGlobalObjectDesignatorList& subordinates() const;
201  virtual DtGlobalObjectDesignatorList& subordinates();
202 
204  virtual void setExtendedData(const std::map<DtString, DtString>& ed);
205  virtual void setExtendedData(const DtString& key, const DtString& value);
206 
209  virtual double orientation() const;
210 
215  virtual DtString uuidString() const;
216 
217 public:
218  // Sets the vertices to use in the publication of this object. Will create the environmental records (as needed),
219  // put them into the state repository structure and also the vertex list. This routine assumes the DtList contains DtVectors
220  virtual void setVertices(const DtList& pnt);
221  virtual void appendVertex(const DtVector&);
222  virtual void setVertex(int i, const DtVector&);
223  virtual void removeVertex(int i);
224 
225 public:
226  // Environmental record settings
227 
228  // Used to set in appearance value of env state record and vrf object data message
229  virtual void setObjectType(const DtObjectType&);
230 
231 
232  // Returns the force type from the environmental header record (if it exists), else
233  // returns neutral by default
234  virtual DtForceType forceType() const;
235  virtual void setForceType(DtForceType i);
236 
237  // Returns the color (rgb) value of this object
238  virtual int color() const;
239  virtual void setColor(int);
240 
241  // Returns the parent of this object
242  virtual const DtString& parent() const;
243  virtual void setParent(const DtString&);
244 
245  virtual const DtString& userData() const;
246  virtual void setUserData(const DtString&);
247 
248  virtual void setVrfObjectName(const DtString&);
249  virtual const DtString& vrfObjectName();
250 
251  virtual DtAppearance appearance() const;
252  virtual void setAppearance(const DtAppearance& app);
253 
254  virtual void setNumberOfSubordinates(int);
255  virtual void setSubordinate(int i, const DtGlobalObjectDesignator&);
256 
257  // Returns the parent this object might be attached to
258  virtual const DtGlobalObjectDesignator& hostGlobalId() const;
259  virtual void setHostGlobalId(const DtGlobalObjectDesignator&);
260 
262  virtual void clearHostGlobalId();
263 
272  virtual bool getFontInformation(DtString& font, int& fontSize) const;
273  virtual void setFontInformation(const DtString&, int fontSize);
274 
276  virtual bool getFontColor(unsigned int& color) const;
277  virtual void setFontColor(unsigned int color);
278 
279  virtual bool getArrowInformation(int& arrowHeadPlacement, int& arrowStyle, int& arrowSize) const;
280  virtual void setArrowInformation(int arrowHeadPlacement, int arrowStyle, int arrowSize);
281 
282 public:
290 
291  // In setting the bounding sphere radius, if a bounding sphere record does not exist, it
292  // will be created
293  virtual void setBoundingSphereRadius(double);
294  virtual double boundingSphereRadius() const;
295 
296  // Sets/gets the bounding sphere location. Will also create the record on set if it does not
297  // exist
298  virtual void setBoundingSphereLocation(const DtVector&);
299  virtual const DtVector& boundingSphereLocation() const;
300 
301  bool hasBoundingSphereRecord() const;
302 
303 public:
311 
312  bool hasBoundingRectRecord() const;
313 
314  virtual void setBoundingExtent(const DtVector&);
315  const DtVector& boundingExtent() const;
316 
317  virtual void setBoundingCornerLocation(const DtVector&);
318  virtual const DtVector& boundingCornerLocation() const;
319 
320  virtual void setBoundingOrientation(const DtTaitBryan&);
321  const DtTaitBryan& boundingOrientation() const;
322 
323 public:
326  virtual void setProjected(bool);
327  virtual bool projected() const;
328 
329  virtual void setClosedFigure(bool);
330  virtual bool closedFigure() const;
331 
332  virtual void setBound2D(bool);
333  virtual bool bound2D() const;
334 
336  virtual void setFillStyle(int);
337  virtual int fillStyle() const;
338 
339  virtual void setLineStyle(int);
340  virtual int lineStyle() const;
341 
342  virtual void setLineWidth(int);
343  virtual int lineWidth() const;
344 
346  virtual void setPhysicalLineHeight(double);
347  virtual double physicalLineHeight() const;
348 
350  virtual void setPhysicalLineWidth(double);
351  virtual double physicalLineWidth() const;
352 
355  virtual void setRelativeLocation(const DtVector&);
356  virtual const DtVector& relativeLocation() const;
357 
360  virtual void setVelocity(const DtVector&);
361  virtual const DtVector& velocity() const;
362 
363  virtual void setAcceleration(const DtVector&);
364  virtual const DtVector& acceleration() const;
365 
366  virtual void setDRAlogrithm(DtDeadReckonTypes);
367  virtual const DtDeadReckonTypes& drAlgorithm() const;
369 
370  virtual void setOffsetPoints(const std::vector<DtVector>&);
371  virtual const std::vector<DtVector>& offsetPoints() const;
372 
373 public:
377  virtual void setCachePoints(bool);
378  bool cachePoints() const;
379 
382  virtual DtString extendedData(const DtString& key) const;
383 
384  const DtVrfExtendedRecordData& extendedRecordData() const
385  {
386  return myExtendedRecordData;
387  }
388 
389  DtVrfExtendedRecordData& extendedRecordData()
390  {
391  return myExtendedRecordData;
392  }
393 
394  int numberOfDatumRecords() const;
395  void setNumberOfDatumRecords(int);
396 
400  virtual void setSendVrfObjectDataRecord(bool shouldSend);
401  virtual bool shouldSendVrfObjectDataRecord() const;
403 
404 protected:
405  // createExtendedEnvironmentalStateRecord()
406  // allocates myExtEnvStateRecord, a DtSimEnvironmentalObjectStateRecord
407  // used by VR-Forces as extended environmental process state information:
408  virtual bool createExtendedEnvironmentalStateRecord();
409 
410  // extendedEnvironmentalStateRecord()
411  // returns the myExtEnvStateRecord for inspection by
412  // the caller. If myExtEnvStateRecord is NULL, it is created.
413  virtual DtSimEnvironmentalObjectStateRecord* extendedEnvironmentalStateRecord();
414 
415  // createVrfObjectStateRecord()
416  // allocates myVrfObjectStateRecord, a DtVrfObjectDataEnvironmentalRecord
417  // used by VR-Forces as extended vrf object state information:
418  virtual bool createVrfObjectStateRecord();
419 
420  // extendedVrfObjectStateRecord()
421  // returns the myVrfObjectStateRecord for inspection by
422  // the caller. If myVrfObjectStateRecord is NULL, it is created.
423  virtual DtVrfObjectDataEnvironmentalRecord* vrfObjectStateRecord();
424 
425  // createBoundingSphereRecord()
426  // allocates myBoundingSphereRecord
427  virtual bool createBoundingSphereRecord();
428 
429  // boundingSphereRecord()
430  // returns the myBoundingSphereRecord for inspection by
431  // the caller. If myBoundingSphereRecord is NULL, it is created.
432  virtual DtEnvironmentalBoundingSphereRecord* boundingSphereRecord();
433 
434  // createBoundingRectRecord()
435  // allocates myBoundingRectRecord
436  virtual bool createBoundingRectRecord();
437 
438  // boundingRectRecord()
439  // returns the myBoundingRectRecord for inspection by
440  // the caller. If myBoundingRectRecord is NULL, it is created.
441  virtual DtEnvironmentalRectangularVolumeRecord* boundingRectRecord();
442 
443 protected:
444  // Sets up internal object kind and category from object type
445  virtual void setupKindFromType(const DtEntityType& type);
446  virtual void getBoundingVolume(EnvGeomSpheriod* rec);
447  virtual void clearGeometricRecords();
448 
449 protected:
450  // Override to set myNeedVrfObjectDataUpdate to true
451  virtual void extensionModified();
452 
453 public:
454  static DtEnvironmentProcessRepository* create();
455 
458 
459  // Keeps a list of all geometry point records to use to update internal
460  // model datas from
462 
463  // DtSimEnvironmentalObjectStateRecord is a special form
464  // of DtEnvironmentalRecord, used to decode custom data
465  // that might be published from a VR-Forces back end, such
466  // as label, force type, appearance, etc.
467  // see "envObjState.h"
469  DtEnvironmentalBoundingSphereRecord* myBoundingSphereRecord;
472  DtEnvironmentalRectangularVolumeRecord* myBoundingRectRecord;
473 
474  // This information is needed for ITT puff clouds
479 
482 
484 
486 };
487 
489 {
490  return myGeometricRecords;
491 }
492 
494 {
496 }
497 
499 {
501 }
502 
504 {
505  return (myBoundingSphereRecord != NULL);
506 }
507 
509 {
510  return (myBoundingRectRecord != NULL);
511 }
512 
514 {
515  return myCachePoints;
516 }

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)