#include "BsMaterialParam.h" #include "BsVector2I.h" #include "BsVectorNI.h" namespace BansheeEngine { template TMaterialDataParam::TMaterialDataParam(const SPtr>>& 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 SPtr>>& 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 SPtr>>& 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 SPtr>>& 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 SPtr>>& 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; }