FCDocument/FCDEffectTechnique.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_TECHNIQUE_H_
00012 #define _FCD_EFFECT_TECHNIQUE_H_
00013 
00014 #include "FCDocument/FCDObject.h"
00015 
00016 class FCDEffectCode;
00017 class FCDEffectPass;
00018 class FCDEffectParameter;
00019 class FCDEffectParameterList;
00020 class FCDEffectProfileFX;
00021 
00022 typedef vector<FCDEffectPass*> FCDEffectPassList; 
00023 typedef vector<FCDEffectCode*> FCDEffectCodeList; 
00039 class FCOLLADA_EXPORT FCDEffectTechnique : public FCDObject
00040 {
00041 private:
00042     DeclareObjectType;
00043     FCDEffectProfileFX* parent;
00044 
00045     fstring name;
00046     FCDEffectCodeList codes;
00047     FCDEffectPassList passes;
00048     FCDEffectParameterList* parameters;
00049 
00050 public:
00055     FCDEffectTechnique(FCDocument* document, FCDEffectProfileFX *_parent);
00056 
00059     virtual ~FCDEffectTechnique();
00060 
00063     FCDEffectProfileFX* GetParent() { return parent; }
00064     const FCDEffectProfileFX* GetParent() const { return parent; } 
00069     const string& GetDaeId() const;
00070 
00073     const fstring& GetName() const { return name; }
00074 
00079     void SetName(const fstring& _name) { name = _name; }
00080 
00083     FCDEffectPassList& GetPassList() { return passes; }
00084     const FCDEffectPassList& GetPassList() const { return passes; } 
00088     size_t GetPassCount() const { return passes.size(); }
00089 
00093     FCDEffectPass* GetPass(size_t index) { FUAssert(index < GetPassCount(), return NULL); return passes.at(index); }
00094     const FCDEffectPass* GetPass(size_t index) const { FUAssert(index < GetPassCount(), return NULL); return passes.at(index); } 
00098     FCDEffectPass* AddPass();
00099 
00102     void ReleasePass(FCDEffectPass* pass);
00103 
00106     FCDEffectCodeList& GetCodeList() { return codes; }
00107     const FCDEffectCodeList& GetCodeList() const { return codes; } 
00111     size_t GetCodeCount() const { return codes.size(); }
00112 
00116     FCDEffectCode* GetCode(size_t index) { FUAssert(index < GetCodeCount(), return NULL); return codes.at(index); }
00117     const FCDEffectCode* GetCode(size_t index) const { FUAssert(index < GetCodeCount(), return NULL); return codes.at(index); } 
00123     FCDEffectCode* FindCode(const string& sid);
00124     const FCDEffectCode* FindCode(const string& sid) const; 
00128     FCDEffectCode* AddCode();
00129 
00132     void ReleaseCode(FCDEffectCode* code);
00133 
00138     FCDEffectParameterList* GetParameterList() { return parameters; }
00139     const FCDEffectParameterList* GetParameterList() const { return parameters; } 
00144     void AddParameter(FCDEffectParameter* parameter);
00145 
00152     const FCDEffectParameter* FindParameter(const char* reference) const;
00153 
00159     virtual FCDEffectParameter* FindParameterBySemantic(const string& semantic);
00160 
00165     virtual void FindParametersBySemantic(const string& semantic, FCDEffectParameterList& parameters);
00166 
00172     virtual void FindParametersByReference(const string& reference, FCDEffectParameterList& parameters);
00173 
00177     FCDEffectTechnique* Clone(FCDEffectProfileFX* newParent);
00178 
00181     void Flatten();
00182 
00188     FUStatus LoadFromXML(xmlNode* techniqueNode, xmlNode* profileNode);
00189 
00193     xmlNode* WriteToXML(xmlNode* parentNode) const;
00194 };
00195 
00196 #endif

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