00001 /* 00002 Copyright (C) 2005-2006 Feeling Software Inc. 00003 MIT License: http://www.opensource.org/licenses/mit-license.php 00004 */ 00005 /* 00006 Based on the FS Import classes: 00007 Copyright (C) 2005-2006 Feeling Software Inc 00008 Copyright (C) 2005-2006 Autodesk Media Entertainment 00009 MIT License: http://www.opensource.org/licenses/mit-license.php 00010 */ 00011 00012 #ifndef _FCD_PHYSICS_SCENE_NODE_ 00013 #define _FCD_PHYSICS_SCENE_NODE_ 00014 00015 #include "FCDocument/FCDEntity.h" 00016 00017 class FCDocument; 00018 class FCDEntityInstance; 00019 class FCDExtra; 00020 00021 class FCDPhysicsModelInstance; 00022 00023 typedef vector<FCDPhysicsModelInstance*> FCDPhysicsModelInstanceList; 00024 00025 class FCOLLADA_EXPORT FCDPhysicsSceneNode : public FCDEntity 00026 { 00027 private: 00028 DeclareObjectType; 00029 FCDExtra* extra; 00030 FMVector3 gravity; 00031 float timestep; 00032 FCDPhysicsModelInstanceList instances; 00033 00034 public: 00035 FCDPhysicsSceneNode(FCDocument* document); 00036 virtual ~FCDPhysicsSceneNode(); 00037 00038 // Returns the entity type 00039 virtual Type GetType() const { return PHYSICS_SCENE_NODE; } 00040 00041 FCDPhysicsModelInstanceList& GetInstances() { return instances; } 00042 const FCDPhysicsModelInstanceList& GetInstances() const { return instances; } 00043 size_t GetNumInstances() const { return instances.size(); }; 00044 00045 // Visibility parameter 00046 const FMVector3& GetGravity() const { return gravity; } 00047 const float& GetTimestep() const { return timestep; } 00048 00049 // Parse a <physics_scene> node from a COLLADA document 00050 virtual FUStatus LoadFromXML(xmlNode* sceneNode); 00051 00052 // Write out a <physics_scene> element to a COLLADA xml document 00053 void WriteToNodeXML(xmlNode* node) const; 00054 virtual xmlNode* WriteToXML(xmlNode* parentNode) const; 00055 00056 // Instantiating a scene node means ensuring that there is no cycles in the scene graph 00057 void Instantiate(FCDPhysicsSceneNode* sceneNode); 00058 }; 00059 00060 #endif // _FCD_SCENE_NODE_