Irrlicht:如何将ISceneNode转换为IMeshSceneNode?

Irrlicht: how to convert a ISceneNode into a IMeshSceneNode?

本文关键字:转换 IMeshSceneNode ISceneNode Irrlicht      更新时间:2023-10-16

我有一个复杂的代码,它完全加载了对ISceneNode对象的引用。我想为这些启用阴影。但是,让我们启用阴影的函数是addShadowVolumeSceneNode((,它仅适用于IMeshSceneNode类。

我的问题是,如何将ISceneNode转换为IMeshSceneNode以便对其应用阴影?

ps:我知道不可能将阴影应用于 ISceneNode:http://irrlicht.sourceforge.net/forum/viewtopic.php?t=42174

如果ISceneNode指针实际上指向 IMeshSceneNode 对象,则可以将指针强制转换为IMeshSceneNode指针:

void AddShadowToSceneNodeIfPossible(ISceneNode* node)
{
IMeshSceneNode* meshNode = dynamic_cast<IMeshSceneNode*>(node);
if (meshNode)
{
meshNode->addShadowVolumeSceneNode(...);
}
}

但更好的解决方案是从一开始就将IMeshSceneNode指针存储为IMeshSceneNode指针。