FCDocument/FCDEffectPass.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 
00011 #ifndef _FCD_EFFECT_PASS_H_
00012 #define _FCD_EFFECT_PASS_H_
00013 
00014 #include "FCDocument/FCDObject.h"
00015 
00016 class FCDEffectTechnique;
00017 class FCDEffectParameter;
00018 class FCDEffectParameterList;
00019 class FCDEffectPassShader;
00020 
00021 typedef vector<FCDEffectPassShader*> FCDEffectPassShaderList; 
00022 typedef vector<string> MeshDataList; 
00037 class FCOLLADA_EXPORT FCDEffectPass : public FCDObject
00038 {
00039 private:
00040     DeclareObjectType;
00041     fstring name;
00042     FCDEffectTechnique* parent;
00043     FCDEffectPassShaderList shaders;
00044     MeshDataList meshdata;
00045 
00046 public:
00051     FCDEffectPass(FCDocument* document, FCDEffectTechnique *_parent);
00052 
00055     virtual ~FCDEffectPass();
00056 
00059     FCDEffectTechnique* GetParent() { return parent; }
00060     const FCDEffectTechnique* GetParent() const { return parent; } 
00065     const string& GetDaeId() const;
00066 
00070     const fstring& GetPassName() const { return name; }
00071 
00075     void SetPassName(const fstring& _name) { name = _name; }
00076 
00080     const MeshDataList& GetMeshData() const { return meshdata; }
00081 
00084     size_t GetShaderCount() const { return shaders.size(); }
00085 
00089     FCDEffectPassShader* GetShader(size_t index) { FUAssert(index < GetShaderCount(), return NULL); return shaders.at(index); }
00090     const FCDEffectPassShader* GetShader(size_t index) const { FUAssert(index < GetShaderCount(), return NULL); return shaders.at(index); } 
00094     FCDEffectPassShader* AddShader();
00095 
00098     void ReleaseShader(FCDEffectPassShader* shader);
00099 
00103     FCDEffectPassShader* GetVertexShader();
00104     const FCDEffectPassShader* GetVertexShader() const; 
00109     FCDEffectPassShader* GetFragmentShader();
00110     const FCDEffectPassShader* GetFragmentShader() const; 
00115     FCDEffectPassShader* AddVertexShader();
00116 
00120     FCDEffectPassShader* AddFragmentShader();
00121 
00125     FCDEffectPass* Clone(FCDEffectTechnique* newParent) const;
00126 
00133     FUStatus LoadFromXML(xmlNode* passNode, xmlNode* techniqueNode, xmlNode* profileNode);
00134 
00138     xmlNode* WriteToXML(xmlNode* parentNode) const;
00139 };
00140 
00141 #endif

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