VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simObjectStateRepository.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 #pragma once
6 
10 
13 
15 #include <vlutil/vlString.h>
16 #include <vlpi/disEnums.h>
18 #include <vlutil/vlString.h>
19 #include <vl/hostStructs.h>
25 #include "vrfutil/rwForceType.h"
26 #include <readerWriter/rwString.h>
27 #include <vrfutil/rwUUID.h>
29 #include <tbb/spin_rw_mutex.h>
30 
31 class DtVrfObject;
37 
39 
46 {
47 public:
49  const DtObjectType& objectType,
50  const DtString& rwName = DtString::nullString(),
51  DtReaderWriterRegistry* parentRegistry = 0);
52 
53 protected:
55  const DtString& rwName = DtString::nullString(),
56  DtReaderWriterRegistry* parentRegistry = 0);
57 
58 public:
59 
61  const DtSimObjectStateRepository& orig);
62 
63  virtual ~DtSimObjectStateRepository();
64 
65  virtual DtSimObjectStateRepository* clone(
66  const DtString& rwName = DtString::nullString(),
67  DtReaderWriterRegistry* parentRegistry = 0) const;
68 
70  virtual DtString type() const;
71 
73  virtual const int objectStateRepositorySubType() const;
74 
76  virtual bool init();
77 
78  virtual void updatePositionFromModelVertices();
79 
80  virtual const DtObjectType& objectType() const;
81  virtual void setObjectType(const DtObjectType& objectType);
82 
84  virtual bool createKinematicState();
85  virtual DtVrfKinematicState* vrfKinematicState();
86  virtual const DtVrfKinematicState* vrfKinematicState() const;
87 
88  virtual bool createObjectGeometry();
89  virtual DtVrfObjectGeometry* vrfObjectGeometry();
90  virtual const DtVrfObjectGeometry* vrfObjectGeometry() const;
91 
92  virtual bool createAttachments();
93  virtual DtAttachmentManager* attachments();
94  virtual const DtAttachmentManager* attachments() const;
95 
96  virtual DtSimObjectStateRepository* parent();
97  virtual const DtSimObjectStateRepository* parent() const;
98 
99  virtual bool isEmbarkedOn(const DtUUID& parent) const;
100 
103  virtual void attachToParent(const DtUUID& parent);
104 
110  virtual void attachToParent(DtSimObjectStateRepository* parent);
111 
112  virtual void detachFromParent();
113 
114  virtual const DtUUID& attachedToRepository();
115 
116  virtual DtSimObjectStateRepository* findRootSimStateRepository();
117  virtual const DtSimObjectStateRepository* findRootSimStateRepository()
118  const;
119 
124  virtual void setOwnedByHostObject(bool);
125  virtual bool ownedByHostObject() const;
126 
127  virtual void ancestorObjectChanged();
128 
130  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
131  const DtVariableBindingsList& variableBindings);
132 
134  virtual void preGetSelf() {}
135 
137  virtual void postGetSelf() {}
138 
141  virtual void removeRepositoryAboutToBeDeletedCallback(DtSimObjectStateRepositoryAboutToBeDeletedCallbackFcn, void* usr);
142  virtual void addRepositoryAboutToBeDeletedCallback(DtSimObjectStateRepositoryAboutToBeDeletedCallbackFcn, void* usr);
143  virtual void invokeRepositoryAboutToBeDeletedCallbacks();
144 
147 
148  static void completeAttachmentCallback(DtVrfObject * simObject, void * usr);
149  virtual bool processCompleteAttachment(DtVrfObject*);
150  static void objectAboutToBeRemovedCallback(DtVrfObject * simObject, void * usr);
151  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * simObject);
152 
153  static void uuidChangedCallback(const DtVrfObjectUUIDChangedCallbackInfo&, void* usr);
154  virtual void processUUIDChanged(const DtVrfObjectUUIDChangedCallbackInfo&);
155 
156  static DtSimObjectStateRepository* isSimObjectStateRepository(
157  DtSimObjectStateRepository* repository);
158 
159  static const DtSimObjectStateRepository* isSimObjectStateRepository(
160  const DtSimObjectStateRepository* repository);
161 
163  virtual const class DtVrfObjectStateRepository* toVrfObjectStateRepository() const;
164 
167 
168  virtual DtVrfObject* vrfObject();
169  virtual const DtVrfObject* vrfObject() const;
170  virtual void setVrfObject(DtVrfObject* vrfObject);
171 
173  virtual const DtSimKinematicState* kinematicState() const;
174 
176  virtual const DtVrfObjectGeometry* objectGeometry() const;
177 
178  //***
181 
183  virtual const DtVector & bodyPosition() const;
184 
186  virtual void setBodyPosition(const DtVector & pos);
187  virtual void setBodyPosition(DtFloat64 x, DtFloat64 y, DtFloat64 z);
188 
190  const DtDcm & bodyOrientationMatrix() const;
191 
194  virtual void embarkOnParent(const DtUUID& parent);
195 
196 public:
200  virtual void removeVertex(int iIndex);
201  virtual void addLocalVertex(const DtVector& vertex);
202  virtual void addLocalVertex(const DtVector& vertex, DtVector& newGeometricCenter);
203  virtual void setLocalVertices(const DtLocalVertexList& vertices, DtVector& newGeometricCenter);
204  virtual void setLocalVertices(const DtList& vertices, DtVector& newGeometricCenter);
205  virtual const DtLocalVertexList& localVertices() const;
206  virtual const DtLocalVectorIterator& localVertexIterator() const;
207 
208  virtual void addWorldVertex(const DtVector& vertex, DtVector& newGeometricCenter);
209  virtual void setWorldVertices(const DtVertexList& vertices, DtVector& newGeometricCenter);
210  virtual void setWorldVertices(const DtList& vertices, DtVector& newGeometricCenter);
211  virtual const DtVertexList& worldVertices() const;
212  virtual const DtRwVectorIterator& worldVertexIterator() const;
214 
218  virtual void setRelativeVertices(const DtLocalVertexList& vertices);
219  virtual void setRelativeVertices(const DtList& vertices);
220  virtual const DtLocalVertexList& relativeVertices() const;
221  virtual const DtLocalVectorIterator& relativeVertexIterator() const;
223 
224  virtual bool leftOf(const DtVector& localVector) const;
225  virtual bool inside(const DtVector& point) const;
226 
230  const DtVector & localPosition() const;
231  void setLocalPosition(const DtVector & pos);
232 
233  const DtVector & localVelocity() const;
234  void setLocalVelocity(const DtVector & vel);
235 
236  const DtVector & localAcceleration() const;
237  void setLocalAcceleration(const DtVector & acc);
238 
239  const DtVector & relativeVelocity() const;
240  void setRelativeVelocity(const DtVector & vel);
241 
242  const DtVector & relativeAcceleration() const;
243  void setRelativeAcceleration(const DtVector & acc);
244 
245  const DtTaitBryan & localOrientation() const;
246  void setLocalOrientation(const DtTaitBryan & angles);
247 
248  const DtVector & worldPosition() const;
249  void setWorldPosition(const DtVector & pos);
250 
251  const DtVector & worldVelocity() const;
252  void setWorldVelocity(const DtVector & vel);
253 
254  const DtVector & worldAcceleration() const;
255  void setWorldAcceleration(const DtVector & acc);
256 
257  const DtTaitBryan & worldOrientation() const;
258  void setWorldOrientation(const DtTaitBryan & angles);
259 
260  const DtVector &rotationalVelocity() const;
262 
263  const DtDcm & localOrientationMatrix() const;
264  void setLocalOrientationMatrix(const DtDcm & orient);
265 
266  void setParentPosition(const DtVector& pos);
268 
273  const double lastPositionSetTime() const;
274  void setLastPositionSetTime(const double simTime);
276 
284  virtual double distanceToLocalVector(const DtVector& localVector) const;
285 
286  const Coordinate_System* coordinateSystem() const;
287 
288 protected:
291 
293  virtual void setOrientationRelativeToParent();
294 
295 protected:
296 
298 
300 
304 
306 
308 
311 
313 
317 
319 
323 
325 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)