FCDocument/FCDPhysicsSceneNode.h

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_

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