VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/simObjSR.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)