}
for (auto node : m_shadow_node_array)
- if (node.shadowMode & E_SHADOW_MODE::ESM_RECEIVE)
- node.node->setMaterialTexture(TEXTURE_LAYER_SHADOW, nullptr);
+ node.node->setMaterialTexture(TEXTURE_LAYER_SHADOW, nullptr);
}
void ShadowRenderer::initialize()
if (!node)
return;
m_shadow_node_array.emplace_back(node, shadowMode);
- if (shadowMode == ESM_RECEIVE || shadowMode == ESM_BOTH)
- node->setMaterialTexture(TEXTURE_LAYER_SHADOW, shadowMapTextureFinal);
+ node->setMaterialTexture(TEXTURE_LAYER_SHADOW, shadowMapTextureFinal);
}
void ShadowRenderer::removeNodeFromShadowList(scene::ISceneNode *node)
assert(shadowMapTextureFinal != nullptr);
for (auto &node : m_shadow_node_array)
- if (node.shadowMode == ESM_RECEIVE || node.shadowMode == ESM_BOTH)
- node.node->setMaterialTexture(TEXTURE_LAYER_SHADOW, shadowMapTextureFinal);
+ node.node->setMaterialTexture(TEXTURE_LAYER_SHADOW, shadowMapTextureFinal);
}
if (!m_shadow_node_array.empty() && !m_light_list.empty()) {
dummymesh->drop(); // m_meshnode grabbed it
m_shadow = RenderingEngine::get_shadow_renderer();
+
+ if (m_shadow) {
+ // Add mesh to shadow caster
+ m_shadow->addNodeToShadowList(m_meshnode);
+ }
}
WieldMeshSceneNode::~WieldMeshSceneNode()
sanity_check(g_extrusion_mesh_cache);
// Remove node from shadow casters. m_shadow might be an invalid pointer!
- if (auto shadow = RenderingEngine::get_shadow_renderer())
- shadow->removeNodeFromShadowList(m_meshnode);
+ if (m_shadow)
+ m_shadow->removeNodeFromShadowList(m_meshnode);
if (g_extrusion_mesh_cache->drop())
g_extrusion_mesh_cache = nullptr;
// need to normalize normals when lighting is enabled (because of setScale())
m_meshnode->setMaterialFlag(video::EMF_NORMALIZE_NORMALS, m_lighting);
m_meshnode->setVisible(true);
-
- if (m_shadow) {
- // Add mesh to shadow caster
- m_shadow->addNodeToShadowList(m_meshnode);
- }
}
void getItemMesh(Client *client, const ItemStack &item, ItemMesh *result)