00001
00002
00003
00004
00005
00006 #ifndef _FCD_PHYSICS_RIGID_CONSTRAINT_H_
00007 #define _FCD_PHYSICS_RIGID_CONSTRAINT_H_
00008
00009 #include "FCDocument/FCDEntity.h"
00010 #include "FCDocument/FCDEntityInstance.h"
00011 #include "FUtils/FUDaeEnum.h"
00012
00013 class FCDocument;
00014 class FCDTransform;
00015 class FCDPhysicsModel;
00016 class FCDPhysicsRigidBody;
00017 typedef vector<FCDTransform*> FCDTransformList;
00018
00019 class FCOLLADA_EXPORT FCDPhysicsRigidConstraint : public FCDEntity
00020 {
00021 private:
00022 DeclareObjectType;
00023
00024 string sid;
00025 bool enabled;
00026 bool interpenetrate;
00027 FCDPhysicsRigidBody* referenceRigidBody;
00028 FCDPhysicsRigidBody* targetRigidBody;
00029 FMVector3 limitsLinearMin;
00030 FMVector3 limitsLinearMax;
00031 FMVector3 limitsSCTMin;
00032 FMVector3 limitsSCTMax;
00033
00034 FCDPhysicsModel* parent;
00035
00036 float springLinearStiffness;
00037 float springLinearDamping;
00038 float springLinearTargetValue;
00039
00040 float springAngularStiffness;
00041 float springAngularDamping;
00042 float springAngularTargetValue;
00043
00044 FCDTransformList transformsRef;
00045 FCDTransformList transformsTar;
00046
00047 public:
00048 FCDPhysicsRigidConstraint(FCDocument* document, FCDPhysicsModel* _parent);
00049 virtual ~FCDPhysicsRigidConstraint();
00050
00051 string GetSid() const { return sid; }
00052
00053 virtual Type GetType() const { return PHYSICS_RIGID_CONSTRAINT; }
00054
00055 const bool& GetEnabled() const { return enabled;}
00056 const bool& GetInterpenetrate() const { return interpenetrate;}
00057
00058 FCDPhysicsRigidBody* GetReferenceRigidBody() const { return referenceRigidBody;}
00059 FCDPhysicsRigidBody* GetTargetRigidBody() const { return targetRigidBody;}
00060
00061 const FCDTransformList& GetTransformsRef() const { return transformsRef; }
00062 const FCDTransformList& GetTransformsTar() const { return transformsTar; }
00063
00064 FMVector3 GetLimitsLinearMin() const { return limitsLinearMin;}
00065 FMVector3 GetLimitsLinearMax() const { return limitsLinearMax;}
00066 FMVector3 GetLimitsSCTMin() const { return limitsSCTMin;}
00067 FMVector3 GetLimitsSCTMax() const { return limitsSCTMax;}
00068
00069 float GetSpringLinearStiffness() const { return springLinearStiffness;}
00070 float GetSpringLinearDamping() const { return springLinearDamping;}
00071 float GetSpringLinearTargetValue() const { return springLinearTargetValue;}
00072 float GetSpringAngularStiffness() const { return springAngularStiffness;}
00073 float GetSpringAngularDamping() const { return springAngularDamping;}
00074 float GetSpringAngularTargetValue() const { return springAngularTargetValue;}
00075
00076
00077 FCDPhysicsRigidConstraint* Clone();
00078
00079
00080 virtual FUStatus LoadFromXML(xmlNode* node);
00081
00082
00083 virtual xmlNode* WriteToXML(xmlNode* parentNode) const;
00084 };
00085
00086 #endif // _FCD_PHYSICS_RIGID_CONSTRAINT_H_