00001 /* 00002 Copyright (C) 2005-2007 Feeling Software Inc. 00003 Portions of the code are: 00004 Copyright (C) 2005-2007 Sony Computer Entertainment America 00005 00006 MIT License: http://www.opensource.org/licenses/mit-license.php 00007 */ 00008 00014 #ifndef _FCD_EFFECT_PROFILE_H_ 00015 #define _FCD_EFFECT_PROFILE_H_ 00016 00017 #ifndef _FU_DAE_ENUM_H_ 00018 #include "FUtils/FUDaeEnum.h" 00019 #endif // _FU_DAE_ENUM_H_ 00020 #ifndef __FCD_OBJECT_H_ 00021 #include "FCDocument/FCDObject.h" 00022 #endif // __FCD_OBJECT_H_ 00023 00024 class FCDocument; 00025 class FCDEffect; 00026 class FCDEffectParameter; 00027 class FCDExtra; 00028 00041 class FCOLLADA_EXPORT FCDEffectProfile : public FCDObject 00042 { 00043 private: 00044 DeclareObjectType(FCDObject); 00045 FCDEffect* parent; 00046 DeclareParameterContainer(FCDEffectParameter, parameters, FC("Effect Parameters")); 00047 DeclareParameterRef(FCDExtra, extra, FC("Extra Tree")); 00048 00049 public: 00054 FCDEffectProfile(FCDocument* document, FCDEffect* parent); 00055 00057 virtual ~FCDEffectProfile(); 00058 00063 virtual FUDaeProfileType::Type GetType() const = 0; 00064 00068 FCDEffect* GetParent() { return parent; } 00069 const FCDEffect* GetParent() const { return parent; } 00074 DEPRECATED(3.05A, GetParent()->GetDaeId) const fm::string& GetDaeId() const { return emptyString; } 00075 00080 inline FCDExtra* GetExtra() { return extra; } 00081 inline const FCDExtra* GetExtra() const { return extra; } 00089 virtual FCDEffectProfile* Clone(FCDEffectProfile* clone = NULL) const; 00090 00093 inline size_t GetEffectParameterCount() const { return parameters.size(); } 00094 00098 inline FCDEffectParameter* GetEffectParameter(size_t index) { FUAssert(index < parameters.size(), return NULL); return parameters.at(index); } 00099 inline const FCDEffectParameter* GetEffectParameter(size_t index) const { FUAssert(index < parameters.size(), return NULL); return parameters.at(index); } 00100 00105 FCDEffectParameter* AddEffectParameter(uint32 type); 00106 00111 DEPRECATED(3.05A, not recommended) void Flatten() {} 00112 }; 00113 00114 #endif // _FCD_EFFECT_PROFILE_H_