Skip to content

Commit

Permalink
#5585: More IEditableShaderLayer methods: setColourExpressionFromStri…
Browse files Browse the repository at this point in the history
…ng, setConditionExpressionFromString, setTexGenType, setTexGenExpressionFromString
  • Loading branch information
codereader committed Apr 11, 2021
1 parent 393bde7 commit 30e1f17
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
7 changes: 7 additions & 0 deletions install/scripts/materialtest.py
Expand Up @@ -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()))
Expand Down
4 changes: 4 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.cpp
Expand Up @@ -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

Expand Down
20 changes: 20 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.h
Expand Up @@ -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);
}
};

/**
Expand Down

0 comments on commit 30e1f17

Please sign in to comment.