VR-Forces 4.10 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>
26 #include "vrfutil/rwForceType.h"
27 #include <readerWriter/rwString.h>
28 #include <vrfutil/rwUUID.h>
30 #include <tbb/spin_rw_mutex.h>
31 
32 class DtVrfObject;
38 
40 
47 {
48 public:
50  const DtObjectType& objectType,
51  const DtString& rwName = DtString::nullString(),
52  DtReaderWriterRegistry* parentRegistry = 0);
53 
54 protected:
56  const DtString& rwName = DtString::nullString(),
57  DtReaderWriterRegistry* parentRegistry = 0);
58 
59 public:
60 
62  const DtSimObjectStateRepository& orig);
63 
64  virtual ~DtSimObjectStateRepository();
65 
66  virtual DtSimObjectStateRepository* clone(
67  const DtString& rwName = DtString::nullString(),
68  DtReaderWriterRegistry* parentRegistry = 0) const;
69 
71  virtual DtString type() const;
72 
74  virtual const int objectStateRepositorySubType() const;
75 
77  virtual bool init();
78 
79  virtual void updatePositionFromModelVertices();
80 
81  virtual const DtObjectType& objectType() const;
82  virtual void setObjectType(const DtObjectType& objectType);
83 
85  virtual bool createKinematicState();
86  virtual DtVrfKinematicState* vrfKinematicState();
87  virtual const DtVrfKinematicState* vrfKinematicState() const;
88 
89  virtual bool createObjectGeometry();
90  virtual DtVrfObjectGeometry* vrfObjectGeometry();
91  virtual const DtVrfObjectGeometry* vrfObjectGeometry() const;
92 
93  virtual bool createAttachments();
94  virtual DtAttachmentManager* attachments();
95  virtual const DtAttachmentManager* attachments() const;
96 
97  virtual DtArticulatedPartManager& articulatedParts();
98  virtual const DtArticulatedPartManager& articulatedParts() const;
99 
100  virtual const DtSimObjectStateRepository* parent() const;
101 
102  virtual bool isEmbarkedOn(const DtUUID& parent) const;
103 
106  virtual void attachToParent(const DtUUID& parent);
107 
113  virtual void attachToParent(DtSimObjectStateRepository* parent);
114 
115  virtual void detachFromParent();
116 
117  virtual const DtUUID& attachedToRepository() const;
118 
119  virtual DtSimObjectStateRepository* findRootSimStateRepository();
120  virtual const DtSimObjectStateRepository* findRootSimStateRepository()
121  const;
122 
127  virtual void setOwnedByHostObject(bool);
128  virtual bool ownedByHostObject() const;
129 
130  virtual void ancestorObjectChanged();
131 
133  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
134  const DtVariableBindingsList& variableBindings);
135 
137  virtual void preGetSelf() {}
138 
140  virtual void postGetSelf() {}
141 
144  virtual void removeRepositoryAboutToBeDeletedCallback(DtSimObjectStateRepositoryAboutToBeDeletedCallbackFcn, void* usr);
145  virtual void addRepositoryAboutToBeDeletedCallback(DtSimObjectStateRepositoryAboutToBeDeletedCallbackFcn, void* usr);
146  virtual void invokeRepositoryAboutToBeDeletedCallbacks();
147 
150 
151  static void completeAttachmentCallback(const DtVrfObject * simObject, void * usr);
152  virtual bool processCompleteAttachment(const DtVrfObject*);
153  static void objectAboutToBeRemovedCallback(const DtVrfObject * simObject, void * usr);
154  virtual void processObjectAboutToBeRemovedCallback(const DtVrfObject * simObject);
155 
156  static void uuidChangedCallback(const DtVrfObjectUUIDChangedCallbackInfo&, void* usr);
157  virtual void processUUIDChanged(const DtVrfObjectUUIDChangedCallbackInfo&);
158 
159  static DtSimObjectStateRepository* isSimObjectStateRepository(
160  DtSimObjectStateRepository* repository);
161 
162  static const DtSimObjectStateRepository* isSimObjectStateRepository(
163  const DtSimObjectStateRepository* repository);
164 
166  virtual const class DtVrfObjectStateRepository* toVrfObjectStateRepository() const;
167 
170 
171  virtual const DtVrfObject* vrfObject() const;
172  virtual void setVrfObject(DtVrfObject* vrfObject);
173 
175  virtual const DtSimKinematicState* kinematicState() const;
176 
178  virtual const DtVrfObjectGeometry* objectGeometry() const;
179 
180  //***
183 
185  virtual const DtVector & bodyPosition() const;
186 
188  virtual void setBodyPosition(const DtVector & pos);
189  virtual void setBodyPosition(DtFloat64 x, DtFloat64 y, DtFloat64 z);
190 
192  const DtDcm & bodyOrientationMatrix() const;
193 
196  virtual void embarkOnParent(const DtUUID& parent);
197 
198 public:
202  virtual void removeVertex(int iIndex);
203  virtual void addLocalVertex(const DtVector& vertex);
204  virtual void addLocalVertex(const DtVector& vertex, DtVector& newGeometricCenter);
205  virtual void setLocalVertices(const DtLocalVertexList& vertices, DtVector& newGeometricCenter);
206  virtual void setLocalVertices(const DtList& vertices, DtVector& newGeometricCenter);
207  virtual const DtLocalVertexList& localVertices() const;
208  virtual const DtLocalVectorIterator& localVertexIterator() const;
209 
210  virtual void addWorldVertex(const DtVector& vertex, DtVector& newGeometricCenter);
211  virtual void setWorldVertices(const DtVertexList& vertices, DtVector& newGeometricCenter);
212  virtual void setWorldVertices(const DtList& vertices, DtVector& newGeometricCenter);
213  virtual const DtVertexList& worldVertices() const;
214  virtual const DtRwVectorIterator& worldVertexIterator() const;
216 
220  virtual void setRelativeVertices(const DtLocalVertexList& vertices);
221  virtual void setRelativeVertices(const DtList& vertices);
222  virtual const DtLocalVertexList& relativeVertices() const;
223  virtual const DtLocalVectorIterator& relativeVertexIterator() const;
225 
226  virtual bool leftOf(const DtVector& localVector) const;
227  virtual bool inside(const DtVector& point) const;
228 
232  const DtVector & localPosition() const;
233  void setLocalPosition(const DtVector & pos);
234 
235  const DtVector & localVelocity() const;
236  void setLocalVelocity(const DtVector & vel);
237 
238  const DtVector & localAcceleration() const;
239  void setLocalAcceleration(const DtVector & acc);
240 
241  const DtVector & relativeVelocity() const;
242  void setRelativeVelocity(const DtVector & vel);
243 
244  const DtVector & relativeAcceleration() const;
245  void setRelativeAcceleration(const DtVector & acc);
246 
247  const DtTaitBryan & localOrientation() const;
248  void setLocalOrientation(const DtTaitBryan & angles);
249 
250  const DtVector & worldPosition() const;
251  void setWorldPosition(const DtVector & pos);
252 
253  const DtVector & worldVelocity() const;
254  void setWorldVelocity(const DtVector & vel);
255 
256  const DtVector & worldAcceleration() const;
257  void setWorldAcceleration(const DtVector & acc);
258 
259  const DtTaitBryan & worldOrientation() const;
260  void setWorldOrientation(const DtTaitBryan & angles);
261 
262  const DtVector &rotationalVelocity() const;
264 
265  const DtDcm & localOrientationMatrix() const;
266  void setLocalOrientationMatrix(const DtDcm & orient);
267 
268  void setParentPosition(const DtVector& pos);
270 
275  const double lastPositionSetTime() const;
276  void setLastPositionSetTime(const double simTime);
278 
286  virtual double distanceToLocalVector(const DtVector& localVector) const;
287 
288  const Coordinate_System* coordinateSystem() const;
289 
290 protected:
293 
295  virtual void setOrientationRelativeToParent();
296 
297 protected:
298 
300 
302 
306 
309 
311 
314 
316 
320 
322 
326 
328 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
void setWorldOrientation(const DtTaitBryan &angles)
**virtual void setObjectType(const DtObjectType &)
virtual const DtLocalVertexList & localVertices() const
DtAttachmentManager * myAttachments
Definition: simObjectStateRepository.h:307
void setWorldAcceleration(const DtVector &acc)
virtual void postGetSelf()
Hook function called immediately following getSelf().
Definition: simObjectStateRepository.h:140
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
class DtKinematicStateCS: DtKinematicStateCS contains the current kinematic state of an object in one...
Definition: kinematicStateCS.h:42
DtVrfObject * mySimObject
Definition: simObjectStateRepository.h:299
class DtRwObjectType:
Definition: rwObjectType.h:18
const Coordinate_System * coordinateSystem() const
virtual void setWorldVertices(const DtVertexList &vertices, DtVector &newGeometricCenter)
virtual const DtLocalVectorIterator & localVertexIterator() const
File: lclVecIter.h.
Definition: localVectorIterator.h:25
virtual const DtLocalVertexList & relativeVertices() const
virtual void removeVertex(int iIndex)
These routines simply call down to the kinematic state to get/set the results.
This class is a DtSimKinematicState with the addition of another CS for local database coordinates...
Definition: vrfKinematicState.h:22
DtArticulatedPartManager myArticulatedParts
Definition: simObjectStateRepository.h:308
virtual DtSimKinematicState * kinematicState()
Definition: readerWriter.h:85
*virtual const DtObjectType & objectType() const
virtual void setBodyPosition(const DtVector &pos)
Formerly setMeInParent.
DtSimObjectStateRepository * myAttachedToRepository
Definition: simObjectStateRepository.h:310
const double lastPositionSetTime() const
Indicates the last time the position was set, so that a precise position at the current time may be c...
The DtSimObjectStateRepository is an abstract base class (ABC) for all state repositories.
Definition: simObjectStateRepository.h:46
Definition: readerWriterRegistry.h:39
const DtVector & worldVelocity() const
void setWorldPosition(const DtVector &pos)
DT_DLL_vrfutil bool leftOf(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns true if localPoint is left of the localVertexList in 2D.
void setLocalAcceleration(const DtVector &acc)
Description: This repository holds all information that is common to all the forms of all entity/aggr...
Definition: vrfObjectStateRepository.h:87
const DtVector & worldAcceleration() const
void setParentPosition(const DtVector &pos)
Arguments passed by the DtVrfObjectManager::addUUIDChangedCallback callbacks.
Definition: vrfObjectManager.h:160
DtCallbackList< DtSimObjectStateRepository * > DtAboutToBeDeletedCallbacksList
Definition: simObjectStateRepository.h:323
Description: Readable, Writable uuid string.
Definition: rwUUID.h:419
Definition: objectType.h:27
const DtVector & localVelocity() const
DT_DLL_vrfutil bool inside(const DtVector &localPoint, const DtLocalVertexList &localVertexList, const Coordinate_System &coordinateSystem)
Returns true if localPoint is inside localVertexList in 2D.
DtAboutToBeDeletedCallbacksList myRepositoryAboutToBeRemovedCallbacksList
Definition: simObjectStateRepository.h:324
DtRwObjectType myObjectType
Definition: simObjectStateRepository.h:301
const DtTaitBryan & worldOrientation() const
DtSimObjectStateRepository()
Default Constructor; not implemented.
virtual void setRelativeVertices(const DtLocalVertexList &vertices)
Access/modify vertices relative to to the parent to which this object is attached.
const Coordinate_System * myCoordinateSystemPtr
Caches pointer to coordinate system so it can set it after myKinematic state is created.
Definition: simObjectStateRepository.h:319
void setRelativeVelocity(const DtVector &vel)
void setLocalVelocity(const DtVector &vel)
Definition: coordSystem.h:54
The attachment manager maintains a tree of objects for the state repository class.
Definition: attachmentManager.h:34
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtSimObjectStateRepository * myRootSimStateRepository
Definition: simObjectStateRepository.h:315
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
DtRwUUID myAttachedToRepositoryUUID
used for reading &amp; writing the name of myAttachedToRepository
Definition: simObjectStateRepository.h:313
class DtSimKinematicState: This class encapsulates the kinematic state of an object wrt to the networ...
Definition: simKinematicState.h:30
class DtVertexList:
Definition: vertexList.h:22
void setLastPositionSetTime(const double simTime)
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
Definition: noArgumentCallbackList.h:91
virtual const DtVector & bodyPosition() const
Now superseded by kinematic state parentCS functions.
double DtFloat64
Definition: vrvControlStructTypes.h:36
DtVrfKinematicState * myKinematicState
Definition: simObjectStateRepository.h:304
const DtVector & localAcceleration() const
DtCallbackList< DtSimObjectStateRepository * >::DtCallbackFunctionType DtSimObjectStateRepositoryAboutToBeDeletedCallbackFcn
Definition: simObjectStateRepository.h:37
Class Description: DtVrfObjectGeometry adds a vertex list maintained in the local database coordinate...
Definition: vrfObjectGeometry.h:26
void setWorldVelocity(const DtVector &vel)
void setLocalOrientation(const DtTaitBryan &angles)
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream.
virtual const DtVertexList & worldVertices() const
Description: Readable, Writable DtReal (double)
Definition: rwReal.h:27
virtual DtVrfObjectStateRepository * toVrfObjectStateRepository()
virtual void preGetSelf()
Hook function called immediately prior to getSelf().
Definition: simObjectStateRepository.h:137
void setRelativeAcceleration(const DtVector &acc)
const DtDcm & bodyOrientationMatrix() const
Formerly meToParent().
void setRotationalVelocity(const DtVector &rotationalVelocity)
virtual void addWorldVertex(const DtVector &vertex, DtVector &newGeometricCenter)
The articulated part manager maintains a tree of articulated and attached parts for the state reposit...
Definition: articulatedPartManager.h:29
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
bool myOwnedByHostObject
Definition: simObjectStateRepository.h:327
virtual void embarkOnParent(const DtUUID &parent)
Embarks this entity on the specified parent.
tbb::spin_rw_mutex myRepositoryAboutToBeRemovedCallbacksListMutex
Definition: simObjectStateRepository.h:325
virtual double distanceToLocalVector(const DtVector &localVector) const
Returns the distance from a position in local.
const DtReaderWriter & operator=(const DtReaderWriter &orig)
assignment operator
const DtVector & relativeAcceleration() const
virtual DtVrfObjectGeometry * objectGeometry()
const DtVector & rotationalVelocity() const
virtual void setVrfObject(DtVrfObject *vrfObject)
virtual void setOrientationRelativeToParent()
If attached to a parent, and a terrain database is present, set orientation relative to parent...
DtKinematicStateCS * myEmbarkedKinematicState
Definition: simObjectStateRepository.h:321
class DtLocalVertexList:
Definition: localVertexList.h:20
const DtVector & worldPosition() const
const DtTaitBryan & localOrientation() const
const DtDcm & localOrientationMatrix() const
DtVrfObjectGeometry * myObjectGeometry
Definition: simObjectStateRepository.h:303
virtual void setLocalVertices(const DtLocalVertexList &vertices, DtVector &newGeometricCenter)
const DtVector & localPosition() const
Convenience methods for accessing corresponding methods in DtVrfKinematicState.
void setLocalPosition(const DtVector &pos)
const DtVector & relativeVelocity() const
virtual const DtRwVectorIterator & worldVertexIterator() const
virtual void setCoordinateSystem(const Coordinate_System *coordinateSystem)
Sets the coordinate system in myObjectGeometry and myKinematicState.
virtual void addLocalVertex(const DtVector &vertex)
virtual const DtVrfObject * vrfObject() const
DtRwReal myLastPositionSetTime
Definition: simObjectStateRepository.h:305
File: rwVecIterator.h.
Definition: rwVectorIterator.h:29
void setLocalOrientationMatrix(const DtDcm &orient)
virtual const DtLocalVectorIterator & relativeVertexIterator() const

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)