diff --git a/install/scripts/materialtest.py b/install/scripts/materialtest.py index 075ad87c4d..0e6b889f0a 100644 --- a/install/scripts/materialtest.py +++ b/install/scripts/materialtest.py @@ -93,6 +93,13 @@ rotateIndex = editableDiffuseStage.addTransformation(dr.MaterialStage.TransformType.ROTATE, "time*0.5", "") editableDiffuseStage.updateTransformation(rotateIndex, dr.MaterialStage.TransformType.SCALE, "time*0.5", "0.5") editableDiffuseStage.removeTransformation(rotateIndex) +editableDiffuseStage.setColourExpressionFromString(dr.MaterialStage.ColourComponent.RGB, "0.4*time") +editableDiffuseStage.setConditionExpressionFromString("parm4 > 7") +editableDiffuseStage.setTexGenType(dr.MaterialStage.TexGenType.REFLECT) +editableDiffuseStage.setTexGenType(dr.MaterialStage.TexGenType.WOBBLESKY) +editableDiffuseStage.setTexGenExpressionFromString(0, "0.1") +editableDiffuseStage.setTexGenExpressionFromString(1, "0.2") +editableDiffuseStage.setTexGenExpressionFromString(2, "0.3") for stage in newMaterial.getAllStages(): print('Stage type: {0}'.format(stage.getType())) diff --git a/plugins/script/interfaces/ShaderSystemInterface.cpp b/plugins/script/interfaces/ShaderSystemInterface.cpp index 20a453b464..b73f546144 100644 --- a/plugins/script/interfaces/ShaderSystemInterface.cpp +++ b/plugins/script/interfaces/ShaderSystemInterface.cpp @@ -388,6 +388,10 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa editableStage.def("addTransformation", &ScriptEditableMaterialStage::addTransformation); editableStage.def("removeTransformation", &ScriptEditableMaterialStage::removeTransformation); editableStage.def("updateTransformation", &ScriptEditableMaterialStage::updateTransformation); + editableStage.def("setColourExpressionFromString", &ScriptEditableMaterialStage::setColourExpressionFromString); + editableStage.def("setConditionExpressionFromString", &ScriptEditableMaterialStage::setConditionExpressionFromString); + editableStage.def("setTexGenType", &ScriptEditableMaterialStage::setTexGenType); + editableStage.def("setTexGenExpressionFromString", &ScriptEditableMaterialStage::setTexGenExpressionFromString); // Expose the MaterialVisitor interface diff --git a/plugins/script/interfaces/ShaderSystemInterface.h b/plugins/script/interfaces/ShaderSystemInterface.h index eea2e6144f..53e5d133b6 100644 --- a/plugins/script/interfaces/ShaderSystemInterface.h +++ b/plugins/script/interfaces/ShaderSystemInterface.h @@ -249,6 +249,26 @@ class ScriptEditableMaterialStage : { if (_layer) _layer->updateTransformation(index, type, expression1, expression2); } + + void setColourExpressionFromString(IShaderLayer::ColourComponentSelector component, const std::string& expression) + { + if (_layer) _layer->setColourExpressionFromString(component, expression); + } + + void setConditionExpressionFromString(const std::string& expression) + { + if (_layer) _layer->setConditionExpressionFromString(expression); + } + + void setTexGenType(IShaderLayer::TexGenType type) + { + if (_layer) _layer->setTexGenType(type); + } + + void setTexGenExpressionFromString(std::size_t index, const std::string& expression) + { + if (_layer) _layer->setTexGenExpressionFromString(index, expression); + } }; /**