Skip to content

Commit

Permalink
#5585: Expose surface type enum and methods
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Apr 11, 2021
1 parent 8b0f7ae commit 6a58ea2
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
3 changes: 3 additions & 0 deletions install/scripts/materialtest.py
Expand Up @@ -36,6 +36,7 @@

newMaterial.setSortRequest(45.3)

print('Surface Type: {0}'.format(newMaterial.getSurfaceType()))
print('Cull type: {0}'.format(newMaterial.getCullType()))
print('Clamp type: {0}'.format(newMaterial.getClampType()))
print('Flags: {0}'.format(newMaterial.getMaterialFlags()))
Expand All @@ -49,13 +50,15 @@
newMaterial.setMaterialFlag(dr.Material.Flag.NOSHADOWS)
newMaterial.setSurfaceFlag(dr.Material.SurfaceFlag.LADDER)
newMaterial.setSurfaceFlag(dr.Material.SurfaceFlag.NONSOLID)
newMaterial.setSurfaceType(dr.Material.SurfaceType.WOOD)

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

GlobalMaterialManager.saveMaterial(newMaterial.getName())

newMaterial.clearMaterialFlag(dr.Material.Flag.NOSHADOWS)
newMaterial.clearSurfaceFlag(dr.Material.SurfaceFlag.NONSOLID)
newMaterial.setSurfaceType(dr.Material.SurfaceType.DEFAULT)

fullPath = GlobalFileSystem.findFile(filename) + filename
print(fullPath)
Expand Down
22 changes: 22 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.cpp
Expand Up @@ -161,6 +161,26 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa
.value("ENTITYGUI3", Material::SURF_ENTITYGUI3)
.export_values();

py::enum_<Material::SurfaceType>(material, "SurfaceType")
.value("DEFAULT", Material::SURFTYPE_DEFAULT)
.value("METAL", Material::SURFTYPE_METAL)
.value("STONE", Material::SURFTYPE_STONE)
.value("FLESH", Material::SURFTYPE_FLESH)
.value("WOOD", Material::SURFTYPE_WOOD)
.value("CARDBOARD", Material::SURFTYPE_CARDBOARD)
.value("LIQUID", Material::SURFTYPE_LIQUID)
.value("GLASS", Material::SURFTYPE_GLASS)
.value("PLASTIC", Material::SURFTYPE_PLASTIC)
.value("RICOCHET", Material::SURFTYPE_RICOCHET)
.value("AASOBSTACLE", Material::SURFTYPE_AASOBSTACLE)
.value("SURFTYPE10", Material::SURFTYPE_10)
.value("SURFTYPE11", Material::SURFTYPE_11)
.value("SURFTYPE12", Material::SURFTYPE_12)
.value("SURFTYPE13", Material::SURFTYPE_13)
.value("SURFTYPE14", Material::SURFTYPE_14)
.value("SURFTYPE15", Material::SURFTYPE_15)
.export_values();

material.def(py::init<const MaterialPtr&>());
material.def("getName", &ScriptMaterial::getName);
material.def("getShaderFileName", &ScriptMaterial::getShaderFileName);
Expand Down Expand Up @@ -191,6 +211,8 @@ void ShaderSystemInterface::registerInterface(py::module& scope, py::dict& globa
material.def("getSurfaceFlags", &ScriptMaterial::getSurfaceFlags);
material.def("setSurfaceFlag", &ScriptMaterial::setSurfaceFlag);
material.def("clearSurfaceFlag", &ScriptMaterial::clearSurfaceFlag);
material.def("getSurfaceType", &ScriptMaterial::getSurfaceType);
material.def("setSurfaceType", &ScriptMaterial::setSurfaceType);

// Expose the MaterialVisitor interface

Expand Down
11 changes: 11 additions & 0 deletions plugins/script/interfaces/ShaderSystemInterface.h
Expand Up @@ -175,6 +175,17 @@ class ScriptMaterial
if (_material) _material->clearSurfaceFlag(flag);
}

Material::SurfaceType getSurfaceType()
{
return _material ? _material->getSurfaceType() : Material::SURFTYPE_DEFAULT;
}

void setSurfaceType(Material::SurfaceType type)
{
throwIfMaterialCannotBeModified();
if (_material) _material->setSurfaceType(type);
}

private:
void throwIfMaterialCannotBeModified()
{
Expand Down

0 comments on commit 6a58ea2

Please sign in to comment.