Skip to content

Commit f51cf7c

Browse files
authoredMay 24, 2020
Fix two bugs in content_cao
fixes #9889 (backface_culling with visual = "cube") fixes #9916 (crash with visual = "upright_sprite")
1 parent 5430770 commit f51cf7c

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed
 

‎src/client/content_cao.cpp

+10-7
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,8 @@ void GenericCAO::addToScene(ITextureSource *tsrc)
713713
mesh->drop();
714714

715715
m_meshnode->setScale(m_prop.visual_size);
716+
m_meshnode->setMaterialFlag(video::EMF_BACK_FACE_CULLING,
717+
m_prop.backface_culling);
716718

717719
setSceneNodeMaterial(m_meshnode);
718720
} else if (m_prop.visual == "mesh") {
@@ -832,19 +834,20 @@ void GenericCAO::setNodeLight(u8 light)
832834
}
833835

834836
if (m_enable_shaders) {
835-
scene::ISceneNode *node = getSceneNode();
836-
837-
if (node == nullptr)
838-
return;
839-
840837
if (m_prop.visual == "upright_sprite") {
838+
if (!m_meshnode)
839+
return;
840+
841841
scene::IMesh *mesh = m_meshnode->getMesh();
842842
for (u32 i = 0; i < mesh->getMeshBufferCount(); ++i) {
843843
scene::IMeshBuffer *buf = mesh->getMeshBuffer(i);
844-
video::SMaterial &material = buf->getMaterial();
845-
material.EmissiveColor = color;
844+
buf->getMaterial().EmissiveColor = color;
846845
}
847846
} else {
847+
scene::ISceneNode *node = getSceneNode();
848+
if (!node)
849+
return;
850+
848851
for (u32 i = 0; i < node->getMaterialCount(); ++i) {
849852
video::SMaterial &material = node->getMaterial(i);
850853
material.EmissiveColor = color;

0 commit comments

Comments
 (0)
Please sign in to comment.