diff --git a/plugins/script/interfaces/ShaderSystemInterface.cpp b/plugins/script/interfaces/ShaderSystemInterface.cpp index 3a1f1a6851..11807636c7 100644 --- a/plugins/script/interfaces/ShaderSystemInterface.cpp +++ b/plugins/script/interfaces/ShaderSystemInterface.cpp @@ -211,6 +211,13 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa .value("TRANSLUCENT", Material::MC_TRANSLUCENT) .export_values(); + py::enum_(material, "FrobStageType") + .value("DEFAULT", Material::FrobStageType::Default) + .value("DIFFUSE", Material::FrobStageType::Diffuse) + .value("TEXTURE", Material::FrobStageType::Texture) + .value("NONE", Material::FrobStageType::None) + .export_values(); + py::enum_(stage, "Type") .value("DIFFUSE", IShaderLayer::Type::DIFFUSE) .value("BUMP", IShaderLayer::Type::BUMP) @@ -291,6 +298,13 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa material.def("removeStage", &ScriptMaterial::removeStage); material.def("duplicateStage", &ScriptMaterial::duplicateStage); material.def("swapStagePosition", &ScriptMaterial::swapStagePosition); + material.def("getFrobStageType", &ScriptMaterial::getFrobStageType); + material.def("setFrobStageType", &ScriptMaterial::setFrobStageType); + material.def("getFrobStageMapExpressionString", &ScriptMaterial::getFrobStageMapExpressionString); + material.def("setFrobStageMapExpressionFromString", &ScriptMaterial::setFrobStageMapExpressionFromString); + material.def("getFrobStageRgbParameter", &ScriptMaterial::getFrobStageRgbParameter); + material.def("setFrobStageParameter", &ScriptMaterial::setFrobStageParameter); + material.def("setFrobStageRgbParameter", &ScriptMaterial::setFrobStageRgbParameter); // Stage Flags py::enum_(stage, "Flag") diff --git a/plugins/script/interfaces/ShaderSystemInterface.h b/plugins/script/interfaces/ShaderSystemInterface.h index 5119ea8b34..8c13e35b55 100644 --- a/plugins/script/interfaces/ShaderSystemInterface.h +++ b/plugins/script/interfaces/ShaderSystemInterface.h @@ -635,6 +635,44 @@ class ScriptMaterial if (_material) _material->setLightFalloffCubeMapType(type); } + Material::FrobStageType getFrobStageType() + { + return _material ? _material->getFrobStageType() : Material::FrobStageType::Default; + } + + void setFrobStageType(Material::FrobStageType type) + { + throwIfMaterialCannotBeModified(); + if (_material) _material->setFrobStageType(type); + } + + std::string getFrobStageMapExpressionString() + { + return _material && _material->getFrobStageMapExpression() ? _material->getFrobStageMapExpression()->getExpressionString() : ""; + } + + void setFrobStageMapExpressionFromString(const std::string& expr) + { + throwIfMaterialCannotBeModified(); + if (_material) _material->setFrobStageMapExpressionFromString(expr); + } + + Vector3 getFrobStageRgbParameter(std::size_t index) + { + return _material ? _material->getFrobStageRgbParameter(index) : Vector3(0, 0, 0); + } + + void setFrobStageRgbParameter(std::size_t index, const Vector3& value) + { + throwIfMaterialCannotBeModified(); + if (_material) _material->setFrobStageRgbParameter(index, value); + } + + void setFrobStageParameter(std::size_t index, double value) + { + setFrobStageRgbParameter(index, Vector3(value, value, value)); + } + std::string getRenderBumpArguments() { return _material ? _material->getRenderBumpArguments() : std::string();