STKMesh: Force readonly materials.
We never changed materials on the fly but better safe than sorry.
This commit is contained in:
@@ -150,7 +150,7 @@ STKMesh::STKMesh(irr::scene::IMesh* mesh, ISceneNode* parent, irr::scene::IScene
|
||||
const irr::core::vector3df& scale) :
|
||||
CMeshSceneNode(mesh, parent, mgr, id, position, rotation, scale)
|
||||
{
|
||||
createGLMeshes();
|
||||
setMesh(mesh);
|
||||
}
|
||||
|
||||
void STKMesh::createGLMeshes()
|
||||
@@ -185,11 +185,18 @@ void STKMesh::cleanGLMeshes()
|
||||
|
||||
void STKMesh::setMesh(irr::scene::IMesh* mesh)
|
||||
{
|
||||
CMeshSceneNode::setReadOnlyMaterials(true);
|
||||
CMeshSceneNode::setMesh(mesh);
|
||||
cleanGLMeshes();
|
||||
createGLMeshes();
|
||||
}
|
||||
|
||||
void STKMesh::setReadOnlyMaterials(bool readonly)
|
||||
{
|
||||
if (!readonly)
|
||||
Log::error("STKMesh", "Cannot set non read only material, use setMesh instead");
|
||||
}
|
||||
|
||||
STKMesh::~STKMesh()
|
||||
{
|
||||
cleanGLMeshes();
|
||||
@@ -982,7 +989,8 @@ void STKMesh::render()
|
||||
scene::IMeshBuffer* mb = Mesh->getMeshBuffer(i);
|
||||
if (mb)
|
||||
{
|
||||
const video::SMaterial& material = ReadOnlyMaterials ? mb->getMaterial() : Materials[i];
|
||||
assert(isReadOnlyMaterials());
|
||||
const video::SMaterial& material = Materials[i];
|
||||
|
||||
video::IMaterialRenderer* rnd = driver->getMaterialRenderer(material.MaterialType);
|
||||
bool transparent = (rnd && rnd->isTransparent());
|
||||
|
||||
@@ -73,6 +73,7 @@ public:
|
||||
const irr::core::vector3df& scale = irr::core::vector3df(1.0f, 1.0f, 1.0f));
|
||||
virtual void render();
|
||||
virtual void setMesh(irr::scene::IMesh* mesh);
|
||||
void setReadOnlyMaterials(bool readonly);
|
||||
~STKMesh();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user