![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2001 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: simObjSR.h,v $ $Revision: 1.46 $ $State: Exp $ 00007 *******************************************************************************/ 00008 #ifndef simObjSR_H_ 00009 #define simObjSR_H_ 00010 00014 00017 00018 #include "vrfutil/rdrWritr.h" 00019 #include <vlutil/vlString.h> 00020 #include <vlpi/disEnums.h> 00021 #include <vrfExtProtocol/objType.h> 00022 #include <vlutil/vlString.h> 00023 #include <vl/hostStructs.h> 00024 #include "vrfobjcore/kinState.h" 00025 #include "vrfobjcore/vrfObjGeom.h" 00026 #include "vrfobjcore/objSRFact.h" 00027 #include "vrfutil/rwObjType.h" 00028 #include "vrfutil/rwForce.h" 00029 #include "vrfutil/rwString.h" 00030 00031 class DtVrfObject; 00032 class DtAttachmentManager; 00033 class DtVrfObjectGeometry; 00034 class DtVrfKinematicState; 00035 00040 #include "vrfobjcore/vrfobjcoreDefines.h" 00041 class DT_DLL_vrfobjcore DtSimObjectStateRepository : public DtReaderWriter 00042 { 00043 public: 00044 DtSimObjectStateRepository(DtVrfObject* simObject, 00045 const DtObjectType& objectType, 00046 const DtString& rwName = DtString::nullString(), 00047 DtReaderWriterRegistry* parentRegistry = 0); 00048 00049 protected: 00050 DtSimObjectStateRepository(const DtSimObjectStateRepository& orig, 00051 const DtString& rwName = DtString::nullString(), 00052 DtReaderWriterRegistry* parentRegistry = 0); 00053 00054 public: 00055 00056 const DtSimObjectStateRepository& operator=( 00057 const DtSimObjectStateRepository& orig); 00058 00059 virtual ~DtSimObjectStateRepository(); 00060 00061 virtual DtSimObjectStateRepository* clone( 00062 const DtString& rwName = DtString::nullString(), 00063 DtReaderWriterRegistry* parentRegistry = 0) const; 00064 00066 virtual DtString type() const; 00067 00069 virtual const int objectStateRepositorySubType() const; 00070 00072 virtual bool init(); 00073 00074 virtual void updatePositionFromModelVertices(); 00075 virtual void updateBVolFromModelVertices(); 00076 00077 virtual const DtObjectType& objectType() const; 00078 virtual void setObjectType(const DtObjectType& objectType); 00079 00081 virtual bool createKinematicState(); 00082 virtual DtVrfKinematicState* vrfKinematicState(); 00083 virtual const DtVrfKinematicState* vrfKinematicState() const; 00084 00085 virtual bool createObjectGeometry(); 00086 virtual DtVrfObjectGeometry* vrfObjectGeometry(); 00087 virtual const DtVrfObjectGeometry* vrfObjectGeometry() const; 00088 00089 virtual bool createAttachments(); 00090 virtual DtAttachmentManager* attachments(); 00091 virtual const DtAttachmentManager* attachments() const; 00092 00093 virtual DtSimObjectStateRepository* parent(); 00094 virtual const DtSimObjectStateRepository* parent() const; 00095 00096 virtual bool isEmbarkedOn(const DtString& parent) const; 00097 00100 virtual void attachToParent(DtString parent); 00101 00107 virtual void attachToParent(DtSimObjectStateRepository* parent); 00108 00109 virtual void detachFromParent(); 00110 00111 virtual const DtString& attachedToRepositoryName(); 00112 00113 virtual DtSimObjectStateRepository* findRootSimStateRepository(); 00114 virtual const DtSimObjectStateRepository* findRootSimStateRepository() 00115 const; 00116 00117 virtual void ancestorObjectChanged(); 00118 00120 virtual void putData (FILE *fp, int indentLevel=0); 00121 00123 virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath, 00124 const DtVariableBindingsList& variableBindings); 00125 00127 virtual void preGetSelf() {} 00128 00130 virtual void postGetSelf() {} 00131 00134 00135 static void objectAddedCallback(DtVrfObject * simObject, void * usr); 00136 virtual void processObjectAddedCallback(DtVrfObject * simObject); 00137 static void objectAboutToBeRemovedCallback(DtVrfObject * simObject, void * usr); 00138 virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * simObject); 00139 00140 static DtSimObjectStateRepository* isSimObjectStateRepository( 00141 DtSimObjectStateRepository* repository); 00142 00143 static const DtSimObjectStateRepository* isSimObjectStateRepository( 00144 const DtSimObjectStateRepository* repository); 00145 00146 virtual class DtVrfObjectStateRepository* toVrfObjectStateRepository(); 00147 virtual const class DtVrfObjectStateRepository* toVrfObjectStateRepository() const; 00148 00150 virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem); 00151 00152 virtual DtVrfObject* vrfObject(); 00153 virtual const DtVrfObject* vrfObject() const; 00154 virtual void setVrfObject(DtVrfObject* vrfObject); 00155 00156 virtual DtSimKinematicState* kinematicState(); 00157 virtual const DtSimKinematicState* kinematicState() const; 00158 00159 virtual DtVrfObjectGeometry* objectGeometry(); 00160 virtual const DtVrfObjectGeometry* objectGeometry() const; 00161 00162 //*** 00165 00167 virtual const DtVector & bodyPosition() const; 00168 00170 virtual void setBodyPosition(const DtVector & pos); 00171 virtual void setBodyPosition(DtFloat64 x, DtFloat64 y, DtFloat64 z); 00172 00174 const DtDcm & bodyOrientationMatrix() const; 00175 00178 virtual void embarkOnParent(const DtString& parent); 00179 00180 public: 00184 virtual void removeVertex(int iIndex); 00185 virtual void addLocalVertex(const DtVector& vertex); 00186 virtual void addLocalVertex(const DtVector& vertex, DtVector& newGeometricCenter); 00187 virtual void setLocalVertices(const DtLocalVertexList& vertices, DtVector& newGeometricCenter); 00188 virtual void setLocalVertices(const DtList& vertices, DtVector& newGeometricCenter); 00189 virtual const DtLocalVertexList& localVertices() const; 00190 virtual const DtLocalVectorIterator& localVertexIterator() const; 00191 00192 virtual void addWorldVertex(const DtVector& vertex, DtVector& newGeometricCenter); 00193 virtual void setWorldVertices(const DtVertexList& vertices, DtVector& newGeometricCenter); 00194 virtual void setWorldVertices(const DtList& vertices, DtVector& newGeometricCenter); 00195 virtual const DtVertexList& worldVertices() const; 00196 virtual const DtRwVectorIterator& worldVertexIterator() const; 00198 00202 virtual void setRelativeVertices(const DtLocalVertexList& vertices); 00203 virtual void setRelativeVertices(const DtList& vertices); 00204 virtual const DtLocalVertexList& relativeVertices() const; 00205 virtual const DtLocalVectorIterator& relativeVertexIterator() const; 00207 00208 virtual bool leftOf(const DtVector& localVector) const; 00209 virtual bool inside(const DtVector& point) const; 00210 00214 const DtVector & localPosition() const; 00215 void setLocalPosition(const DtVector & pos); 00216 00217 const DtVector & localVelocity() const; 00218 void setLocalVelocity(const DtVector & vel); 00219 00220 const DtVector & localAcceleration() const; 00221 void setLocalAcceleration(const DtVector & acc); 00222 00223 const DtVector & relativeVelocity() const; 00224 void setRelativeVelocity(const DtVector & vel); 00225 00226 const DtVector & relativeAcceleration() const; 00227 void setRelativeAcceleration(const DtVector & acc); 00228 00229 const DtTaitBryan & localOrientation() const; 00230 void setLocalOrientation(const DtTaitBryan & angles); 00231 00232 const DtVector & worldPosition() const; 00233 void setWorldPosition(const DtVector & pos); 00234 00235 const DtVector & worldVelocity() const; 00236 void setWorldVelocity(const DtVector & vel); 00237 00238 const DtVector & worldAcceleration() const; 00239 void setWorldAcceleration(const DtVector & acc); 00240 00241 const DtTaitBryan & worldOrientation() const; 00242 void setWorldOrientation(const DtTaitBryan & angles); 00243 00244 const DtVector &rotationalVelocity() const; 00245 void setRotationalVelocity(const DtVector& rotationalVelocity); 00246 00247 const DtDcm & localOrientationMatrix() const; 00248 void setLocalOrientationMatrix(const DtDcm & orient); 00250 00251 protected: 00253 DtSimObjectStateRepository(); 00254 00255 const Coordinate_System* coordinateSystem() const; 00256 00258 virtual void setOrientationRelativeToParent(); 00259 00260 protected: 00261 00262 DtVrfObject* mySimObject; 00263 00264 DtRwObjectType myObjectType; 00265 00266 DtVrfObjectGeometry* myObjectGeometry; 00267 DtVrfKinematicState* myKinematicState; 00268 00269 DtAttachmentManager* myAttachments; 00270 00271 DtSimObjectStateRepository* myAttachedToRepository; 00272 00274 DtRwString myAttachedToRepositoryName; 00275 00276 DtSimObjectStateRepository* myRootSimStateRepository; 00277 00280 const Coordinate_System* myCoordinateSystemPtr; 00281 }; 00282 00283 #endif 00284 00285