Skip to content

Commit

Permalink
#5585: Expose spectrum methods
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Apr 11, 2021
1 parent 689b577 commit 81364c0
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 3 deletions.
2 changes: 2 additions & 0 deletions install/scripts/materialtest.py
Expand Up @@ -44,6 +44,7 @@
print('Deform Type: {0}'.format(newMaterial.getDeformType()))
print('Deform Expression #1: {0}'.format(newMaterial.getDeformExpressionString(0)))
print('Deform Decl Name: {0}'.format(newMaterial.getDeformDeclName()))
print('Spectrum: {0}'.format(newMaterial.getSpectrum()))

# There are a couple of pre-defined sort requests, corresponding to the engine code
newMaterial.setSortRequest(dr.Material.SortRequest.NEAREST)
Expand All @@ -54,6 +55,7 @@
newMaterial.setSurfaceFlag(dr.Material.SurfaceFlag.LADDER)
newMaterial.setSurfaceFlag(dr.Material.SurfaceFlag.NONSOLID)
newMaterial.setSurfaceType(dr.Material.SurfaceType.WOOD)
newMaterial.setSpectrum(5)

print('Full Material definition:\n{0}\n{{{1}}}'.format(newMaterial.getName(), newMaterial.getDefinition()))

Expand Down
2 changes: 2 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.cpp
Expand Up @@ -229,6 +229,8 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa
material.def("getDeformType", &ScriptMaterial::getDeformType);
material.def("getDeformExpressionString", &ScriptMaterial::getDeformExpressionString);
material.def("getDeformDeclName", &ScriptMaterial::getDeformDeclName);
material.def("getSpectrum", &ScriptMaterial::getSpectrum);
material.def("setSpectrum", &ScriptMaterial::setSpectrum);

// Expose the MaterialVisitor interface

Expand Down
14 changes: 11 additions & 3 deletions plugins/script/interfaces/ShaderSystemInterface.h
Expand Up @@ -186,25 +186,33 @@ class ScriptMaterial
if (_material) _material->setSurfaceType(type);
}

/// Get the deform type of this material
Material::DeformType getDeformType()
{
return _material ? _material->getDeformType() : Material::DEFORM_NONE;
}

// Returns the shader expression used to define the deform parameters (valid indices in [0..2])
std::string getDeformExpressionString(std::size_t index)
{
return _material && _material->getDeformExpression(index) ?
_material->getDeformExpression(index)->getExpressionString() : std::string();
}

// Used for Deform_Particle/Particle2 defines the name of the particle def
std::string getDeformDeclName()
{
return _material ? _material->getDeformDeclName() : std::string();
}

int getSpectrum()
{
return _material ? _material->getSpectrum() : 0;
}

void setSpectrum(int spectrum)
{
throwIfMaterialCannotBeModified();
if (_material) _material->setSpectrum(spectrum);
}

private:
void throwIfMaterialCannotBeModified()
{
Expand Down

0 comments on commit 81364c0

Please sign in to comment.