![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2011 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: fallingFromSkyActuator.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ** Created: 5/3/11 MEM 00008 *******************************************************************************/ 00009 00012 00014 #pragma once 00015 00016 #include <vlpi/disEnums.h> 00017 #include "vrfobjcore/actCmpnt.h" 00018 #include <matrix/LibMatrix.h> 00019 00020 class DtString; 00021 class DtSimManager; 00022 class DtVrfMovingObjectStateRepository; 00023 class DtFallingFromSkyActuatorDescriptor; 00024 00025 00036 #include "vrfmodel/vrfmodelDefines.h" 00037 class DT_DLL_vrfmodel DtFallingFromSkyActuatorComponent : public DtActuatorComponent 00038 { 00039 00040 public: 00041 00044 DtFallingFromSkyActuatorComponent(const DtString& name, 00045 DtVrfObject* owner, 00046 DtSimManager* simManager, 00047 DtComponentDescriptor* desc = 0, 00048 DtReaderWriterRegistry* parentRegistry = 0); 00049 00050 00054 virtual ~DtFallingFromSkyActuatorComponent(); 00055 00058 virtual bool init(); 00059 00062 virtual DtString type() const; 00063 00066 virtual void tick(); 00067 00071 static DtSimComponent * creator(const DtString& name, 00072 DtVrfObject* owner, 00073 DtSimManager* simManager, 00074 DtComponentDescriptor* desc = 0, 00075 DtReaderWriterRegistry* parentRegistry = 0); 00076 00077 00078 protected: 00079 00082 virtual void calculateOrientation(const DtDcm& 00083 oldLocalOrientation, const DtVector& newBodyRotationRates, 00084 DtDcm& newLocalOrientation); 00085 00088 virtual void fallFromSky(); 00089 00091 void integrate(const DtVector& oldLocalPosition, 00092 const DtVector& oldRelativeVelocity, 00093 const DtVector& newRelativeAcceleration, DtVector& newLocalPosition, 00094 DtVector& newRelativeVelocity); 00095 00096 virtual void updateRepository(const DtVector& newLocalPosition, 00097 const DtVector& newRelativeVelocity, 00098 const DtVector& newRelativeAcceleration, 00099 const DtDcm& newLocalOrientation, const DtVector& newBodyRotationRates, 00100 bool isOnGround); 00101 00102 protected: 00103 00105 DtFallingFromSkyActuatorComponent(); 00106 00108 DtFallingFromSkyActuatorComponent(const DtFallingFromSkyActuatorComponent & orig); 00109 00111 const DtFallingFromSkyActuatorComponent & operator=(const 00112 DtFallingFromSkyActuatorComponent & orig); 00113 00114 protected: 00115 00116 DtVrfMovingObjectStateRepository * myState; 00117 DtFallingFromSkyActuatorDescriptor * myFallingFromSkyActuatorDescriptor; 00118 00119 bool myFirstTick; 00120 }; 00121