#include "BsMaterialParam.h" #include "BsVector2I.h" #include "BsVectorNI.h" namespace BansheeEngine { template TMaterialDataParam::TMaterialDataParam(const Vector>& params) :mParams(params) { } template void TMaterialDataParam::set(const T& value, UINT32 arrayIdx) { for (auto& param : mParams) param.set(value, arrayIdx); } template T TMaterialDataParam::get(UINT32 arrayIdx) { if (mParams.size() == 0) return T(); return mParams[0].get(arrayIdx); // They should all have the same value } template TMaterialParamStruct::TMaterialParamStruct(const Vector>& params) :mParams(params) { } template void TMaterialParamStruct::set(const void* value, UINT32 sizeBytes, UINT32 arrayIdx) { for (auto& param : mParams) param.set(value, sizeBytes, arrayIdx); } template void TMaterialParamStruct::get(void* value, UINT32 sizeBytes, UINT32 arrayIdx) { if (mParams.size() == 0) { value = nullptr; return; } return mParams[0].get(value, sizeBytes, arrayIdx); // They should all have the same value } template UINT32 TMaterialParamStruct::getElementSize() const { if (mParams.size() == 0) return 0; return mParams[0].getElementSize(); } template TMaterialParamTexture::TMaterialParamTexture(const Vector>& params) :mParams(params) { } template void TMaterialParamTexture::set(const TextureType& texture) { for (auto& param : mParams) param.set(texture); } template typename TMaterialParamTexture::TextureType TMaterialParamTexture::get() { if (mParams.size() == 0) return TextureType(); return mParams[0].get(); // They should all have the same value } template TMaterialParamLoadStoreTexture::TMaterialParamLoadStoreTexture(const Vector>& params) :mParams(params) { } template void TMaterialParamLoadStoreTexture::set(const TextureType& texture, const TextureSurface& surface) { for (auto& param : mParams) param.set(texture, surface); } template typename TMaterialParamLoadStoreTexture::TextureType TMaterialParamLoadStoreTexture::get() { if (mParams.size() == 0) return TextureType(); return mParams[0].get(); // They should all have the same value } template TMaterialParamSampState::TMaterialParamSampState(const Vector>& params) :mParams(params) { } template void TMaterialParamSampState::set(const SamplerType& sampState) { for (auto& param : mParams) param.set(sampState); } template typename TMaterialParamSampState::SamplerType TMaterialParamSampState::get() { if (mParams.size() == 0) return SamplerType(); return mParams[0].get(); // They should all have the same value } template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialDataParam; template class TMaterialParamStruct; template class TMaterialParamStruct; template class TMaterialParamTexture; template class TMaterialParamTexture; template class TMaterialParamLoadStoreTexture; template class TMaterialParamLoadStoreTexture; template class TMaterialParamSampState; template class TMaterialParamSampState; }