FCDocument/FCDPhysicsRigidConstraint.h

00001 /*
00002     Copyright (C) 2005-2006 Feeling Software Inc.
00003     MIT License: http://www.opensource.org/licenses/mit-license.php
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     // Returns the entity type
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     // Create a copy of this physicsmodel, with the vertices overwritten
00077     FCDPhysicsRigidConstraint* Clone();
00078 
00079     // Read in the <physics_model> node of the COLLADA document
00080     virtual FUStatus LoadFromXML(xmlNode* node);
00081 
00082     // Write out the <physics_model> node to the COLLADA xml tree
00083     virtual xmlNode* WriteToXML(xmlNode* parentNode) const;
00084 };
00085 
00086 #endif // _FCD_PHYSICS_RIGID_CONSTRAINT_H_

Generated on Fri May 12 16:44:39 2006 for FCollada by  doxygen 1.4.6-NO