FCDocument/FCDGeometryInstance.h

Go to the documentation of this file.
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 
00016 #ifndef _FCD_GEOMETRY_ENTITY_H_
00017 #define _FCD_GEOMETRY_ENTITY_H_
00018 
00019 #include "FCDocument/FCDEntityInstance.h"
00020 
00021 class FCDocument;
00022 class FCDMaterialInstance;
00023 class FCDGeometryPolygons;
00024 
00025 typedef vector<FCDMaterialInstance*> FCDMaterialInstanceList; 
00032 class FCOLLADA_EXPORT FCDGeometryInstance : public FCDEntityInstance
00033 {
00034 private:
00035     DeclareObjectType;
00036     FCDMaterialInstanceList materials;
00037 
00038 public:
00039     FCDGeometryInstance(FCDocument* document, FCDEntity* entity);
00040     virtual ~FCDGeometryInstance();
00041 
00042     // FCDEntity override for RTTI-like
00043     virtual Type GetType() const { return GEOMETRY; }
00044 
00045     // Access Bound Materials
00046     FCDMaterialInstance* FindMaterialInstance(const fchar* semantic);
00047     inline FCDMaterialInstance* FindMaterialInstance(const fstring& semantic) { return FindMaterialInstance(semantic.c_str()); }
00048     const FCDMaterialInstance* FindMaterialInstance(const fchar* semantic) const;
00049     inline const FCDMaterialInstance* FindMaterialInstance(const fstring& semantic) const { return FindMaterialInstance(semantic.c_str()); }
00050     inline FCDMaterialInstanceList& GetMaterialInstanceList() { return materials; }
00051     inline const FCDMaterialInstanceList& GetMaterialInstanceList() const { return materials; }
00052     FCDMaterialInstance* AddMaterialInstance();
00053     FCDMaterialInstance* AddMaterialInstance(FCDMaterial* material, FCDGeometryPolygons* polygons);
00054     FCDMaterialInstance* AddMaterialInstance(FCDMaterial* material, const fchar* semantic);
00055     inline FCDMaterialInstance* AddMaterialInstance(FCDMaterial* material, const fstring& semantic) { return AddMaterialInstance(material, semantic.c_str()); }
00056     void ReleaseMaterialInstance(FCDMaterialInstance* instance);
00057 
00058     // Load the geometry instance from the COLLADA document
00059     virtual FUStatus LoadFromXML(xmlNode* instanceNode);
00060 
00061     // Write out the instantiation information to the xml node tree
00062     virtual xmlNode* WriteToXML(xmlNode* parentNode) const;
00063 };
00064 
00065 #endif // _FCD_GEOMETRY_ENTITY_H_

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