00001
00002
00003
00004
00005
00006
00007
00008
00014 #ifndef _FCD_EFFECT_PARAMETER_SAMPLER_H_
00015 #define _FCD_EFFECT_PARAMETER_SAMPLER_H_
00016
00017 #ifndef _FCD_EFFECT_PARAMETER_H_
00018 #include "FCDocument/FCDEffectParameter.h"
00019 #endif // _FCD_EFFECT_PARAMETER_H_
00020
00021 #ifndef _FU_DAE_ENUM_H_
00022 #include "FUtils/FUDaeEnum.h"
00023 #endif // _FU_DAE_ENUM_H_
00024
00025 class FCDocument;
00026 class FCDEffectPass;
00027 class FCDEffectParameterSurface;
00028
00037 class FCOLLADA_EXPORT FCDEffectParameterSampler : public FCDEffectParameter
00038 {
00039 public:
00041 enum SamplerType
00042 {
00043 SAMPLER1D,
00044 SAMPLER2D,
00045 SAMPLER3D,
00046 SAMPLERCUBE
00047 };
00048
00049 private:
00050 DeclareObjectType(FCDEffectParameter);
00051
00052 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, samplerType, FC("Sampler Type"));
00053 DeclareParameterPtr(FCDEffectParameterSurface, surface, FC("Surface"));
00054 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, wrap_s, FC("Wrap Mode S"));
00055 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, wrap_t, FC("Wrap Mode T"));
00056 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, wrap_p, FC("Wrap Mode P"));
00057 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, minFilter, FC("Min Filter"));
00058 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, magFilter, FC("Mag Filter"));
00059 DeclareParameter(uint32, FUParameterQualifiers::SIMPLE, mipFilter, FC("Mip Filter"));
00060
00061 public:
00065 FCDEffectParameterSampler(FCDocument* document);
00066
00068 virtual ~FCDEffectParameterSampler();
00069
00072 virtual Type GetType() const { return SAMPLER; }
00073
00077 FCDEffectParameterSurface* GetSurface() { return surface; }
00078 const FCDEffectParameterSurface* GetSurface() const { return surface; }
00083 void SetSurface(FCDEffectParameterSurface* surface);
00084
00087 SamplerType GetSamplerType() const { return (SamplerType) *samplerType; }
00088
00091 void SetSamplerType(SamplerType type) { samplerType = type; SetDirtyFlag(); }
00092
00095 FUDaeTextureWrapMode::WrapMode GetWrapS() const { return (FUDaeTextureWrapMode::WrapMode) *wrap_s; }
00096 FUDaeTextureWrapMode::WrapMode GetWrapT() const { return (FUDaeTextureWrapMode::WrapMode) *wrap_t; }
00097 FUDaeTextureWrapMode::WrapMode GetWrapP() const { return (FUDaeTextureWrapMode::WrapMode) *wrap_p; }
00101 void SetWrapS(FUDaeTextureWrapMode::WrapMode mode) { wrap_s = mode; SetDirtyFlag(); }
00102 void SetWrapT(FUDaeTextureWrapMode::WrapMode mode) { wrap_t = mode; SetDirtyFlag(); }
00103 void SetWrapP(FUDaeTextureWrapMode::WrapMode mode) { wrap_p = mode; SetDirtyFlag(); }
00108 FUDaeTextureFilterFunction::FilterFunction GetMinFilter() const { return (FUDaeTextureFilterFunction::FilterFunction) *minFilter; }
00109 FUDaeTextureFilterFunction::FilterFunction GetMagFilter() const { return (FUDaeTextureFilterFunction::FilterFunction) *magFilter; }
00110 FUDaeTextureFilterFunction::FilterFunction GetMipFilter() const { return (FUDaeTextureFilterFunction::FilterFunction) *mipFilter; }
00115 void SetMinFilter(FUDaeTextureFilterFunction::FilterFunction func) { minFilter = func; SetDirtyFlag(); }
00116 void SetMagFilter(FUDaeTextureFilterFunction::FilterFunction func) { magFilter = func; SetDirtyFlag(); }
00117 void SetMipFilter(FUDaeTextureFilterFunction::FilterFunction func) { mipFilter = func; SetDirtyFlag(); }
00122 virtual bool IsValueEqual(FCDEffectParameter *parameter);
00123
00129 virtual FCDEffectParameter* Clone(FCDEffectParameter* clone = NULL) const;
00130
00134 virtual void Overwrite(FCDEffectParameter* target);
00135 };
00136
00137 #endif // _FCD_EFFECT_PARAMETER_SAMPLER_H_