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_PHYSICSMODEL_H_ 00007 #define _FCD_PHYSICSMODEL_H_ 00008 00009 #include "FCDocument/FCDEntity.h" 00010 #include "FCDocument/FCDEntityInstance.h" 00011 #include "FUtils/FUDaeEnum.h" 00012 00013 class FCDocument; 00014 class FCDPhysicsRigidBody; 00015 class FCDPhysicsRigidConstraint; 00016 00017 typedef vector<FCDEntityInstance*> FCDEntityInstanceList; 00018 typedef vector<FCDPhysicsRigidBody*> FCDPhysicsRigidBodyList; 00019 typedef vector<FCDPhysicsRigidConstraint*> FCDPhysicsRigidConstraintList; 00020 00021 class FCOLLADA_EXPORT FCDPhysicsModel : public FCDEntity 00022 { 00023 private: 00024 DeclareObjectType; 00025 FCDEntityInstanceList instances; 00026 FCDPhysicsRigidBodyList rigidBodies; 00027 FCDPhysicsRigidConstraintList rigidConstraints; 00028 00029 public: 00030 FCDPhysicsModel(FCDocument* document); 00031 virtual ~FCDPhysicsModel(); 00032 00033 // Returns the entity type 00034 virtual Type GetType() const { return PHYSICS_MODEL; } 00035 00036 // Direct Accessors 00037 FCDEntityInstanceList& GetInstances() { return instances; } 00038 const FCDEntityInstanceList& GetInstances() const { return instances; } 00039 00040 FCDPhysicsRigidBody* FindRigidBodyFromSid(const string& sid); 00041 FCDPhysicsRigidConstraint* FindRigidConstraintFromSid(const string& sid); 00042 00043 // Create a copy of this physicsmodel, with the vertices overwritten 00044 FCDPhysicsModel* Clone(/*FloatList& newPositions, uint32 newPositionsStride, FloatList& newNormals, uint32 newNormalsStride*/); 00045 00046 // Read in the <physics_model> node of the COLLADA document 00047 virtual FUStatus LoadFromXML(xmlNode* node); 00048 00049 // Write out the <physics_model> node to the COLLADA xml tree 00050 virtual xmlNode* WriteToXML(xmlNode* parentNode) const; 00051 }; 00052 00053 #endif // _FCD_PHYSICSMODEL_H_