Irrlicht: как преобразовать ISceneNode в IMeshSceneNode? - PullRequest
0 голосов
/ 31 августа 2018

У меня есть сложный код, который полностью загружен ссылками на объекты ISceneNode. Я хотел бы включить тени для них. Тем не менее, функция, которая позволяет нам включать тени - это addShadowVolumeSceneNode (), которая доступна только для класса IMeshSceneNode.

Мой вопрос: как мне преобразовать ISceneNode в IMeshSceneNode, чтобы применить к нему тени?

ps: я знаю, что невозможно применить тени к узлу IScene: http://irrlicht.sourceforge.net/forum/viewtopic.php?t=42174

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете привести указатель ISceneNode к указателю IMeshSceneNode, , если он фактически указывает на объект IMeshSceneNode :

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

Но лучшим решением было бы хранить IMeshSceneNode указатели как IMeshSceneNode указатели с самого начала.

...