Irrlicht:如何将 ISceneNode 转换为 IMeshSceneNode?

Irrlicht: how to convert a ISceneNode into a IMeshSceneNode?

我有一个复杂的代码,它完全加载了对 ISceneNode 对象的引用。我想为这些启用阴影。但是,让我们启用阴影的函数是 addShadowVolumeSceneNode(),它仅适用于 class 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 指针。