FCDocument/FCDEffectProfileFX.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 
00017 #ifndef _FCD_EFFECT_PROFILE_FX_H_
00018 #define _FCD_EFFECT_PROFILE_FX_H_
00019 
00020 #include "FUtils/FUDaeEnum.h"
00021 #include "FCDocument/FCDEffectProfile.h"
00022 
00023 class FCDocument;
00024 class FCDEffect;
00025 class FCDEffectCode;
00026 class FCDEffectParameter;
00027 class FCDEffectParameterSurface;
00028 class FCDEffectTechnique;
00029 class FCDEffectParameterList;
00030 
00031 typedef vector<FCDEffectTechnique*> FCDEffectTechniqueList; 
00032 typedef vector<FCDEffectCode*> FCDEffectCodeList; 
00052 class FCOLLADA_EXPORT FCDEffectProfileFX : public FCDEffectProfile
00053 {
00054 private:
00055     DeclareObjectType;
00056     FUDaeProfileType::Type type;
00057     string includeFilename;
00058     fstring platform;
00059 
00060     FCDEffectCodeList codes;
00061     FCDEffectTechniqueList techniques;
00062     FCDEffectParameterList* parameters;
00063 
00064 public:
00069     FCDEffectProfileFX(FCDocument* document, FCDEffect* parent, FUDaeProfileType::Type type);
00070 
00072     virtual ~FCDEffectProfileFX();
00073 
00079     virtual FUDaeProfileType::Type GetType() const { return type; }
00080 
00085     const string& GetIncludeFilename() const { return includeFilename; }
00086 
00090     const fstring& GetPlatform() const { return platform; }
00091 
00095     void SetPlatform(fstring& _platform) { platform = _platform; }
00096 
00101     FCDEffectTechniqueList& GetTechniqueList() { return techniques; }
00102     const FCDEffectTechniqueList& GetTechniqueList() const { return techniques; } 
00106     size_t GetTechniqueCount() const { return techniques.size(); }
00107 
00113     FCDEffectTechnique* GetTechnique(size_t index) { FUAssert(index < GetTechniqueCount(), return NULL); return techniques.at(index); }
00114     const FCDEffectTechnique* GetTechnique(size_t index) const { FUAssert(index < GetTechniqueCount(), return NULL); return techniques.at(index); } 
00118     FCDEffectTechnique* AddTechnique();
00119 
00122     void ReleaseTechnique(FCDEffectTechnique* technique);
00123 
00126     FCDEffectCodeList& GetCodeList() { return codes; }
00127     const FCDEffectCodeList& GetCodeList() const { return codes; } 
00131     size_t GetCodeCount() const { return codes.size(); }
00132 
00136     FCDEffectCode* GetCode(size_t index) { FUAssert(index < GetCodeCount(), return NULL); return codes.at(index); }
00137     const FCDEffectCode* GetCode(size_t index) const { FUAssert(index < GetCodeCount(), return NULL); return codes.at(index); } 
00143     FCDEffectCode* FindCode(const string& sid);
00144     const FCDEffectCode* FindCode(const string& sid) const; 
00148     FCDEffectCode* AddCode();
00149 
00152     void ReleaseCode(FCDEffectCode* code);
00153 
00157     FCDEffectParameterList* GetParameters() { return parameters; }
00158     const FCDEffectParameterList* GetParameters() const { return parameters; } 
00163     void AddParameter(FCDEffectParameter* parameter);
00164 
00172     const FCDEffectParameter* FindParameter(const char* reference) const;
00173 
00180     virtual FCDEffectParameter* FindParameterBySemantic(const string& semantic);
00181 
00187     virtual void FindParametersBySemantic(const string& semantic, FCDEffectParameterList& parameters);
00188 
00195     virtual void FindParametersByReference(const string& reference, FCDEffectParameterList& parameters);
00196 
00200     virtual FCDEffectProfile* Clone(FCDEffect* newParent);
00201 
00206     virtual void Flatten();
00207 
00212     virtual FUStatus LoadFromXML(xmlNode* profileNode);
00213 
00217     virtual xmlNode* WriteToXML(xmlNode* parentNode)  const;
00218 };
00219 
00220 #endif // _FCD_EFFECT_PROFILE_H_

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