Hello,
im wondering how does Irrlicht deal with resources in SceneManager.
Lets say i have a game level loaded from .irr and after loading all nodes and Collision selectors and stuff i want to change level - what then?
Do i have to make new SceneManager or just load new .irr with stuff on top of the last level, or is there somewhere a interface to delete all loaded nodes and elements in SceneManager from last level?
thx for answer.
Changing resources in SceneManager
Hi,
You can use SceneManager->clear().
You can use SceneManager->clear().
ShadowMapping for Irrlicht!: Get it here
Need help? Come on the IRC!: #irrlicht on irc://irc.freenode.net
Need help? Come on the IRC!: #irrlicht on irc://irc.freenode.net
Thanks for quick reply, but im missing something.
after calling SceneManager->clear();
and loading another scene i cant register CollisionSelectors for Camera with the code trake from the tutorial:
after calling SceneManager->clear();
and loading another scene i cant register CollisionSelectors for Camera with the code trake from the tutorial:
Code: Select all
scene::IMetaTriangleSelector * meta = smgr->createMetaTriangleSelector();
core::array<scene::ISceneNode *> nodes;
smgr->getSceneNodesFromType(scene::ESNT_ANY, nodes);
//debug:
int nodess = nodes.size();
for (u32 i=0; i < nodes.size(); ++i)
{
scene::ISceneNode * node = nodes[i];
scene::ITriangleSelector * selector = 0;
switch(node->getType())
{
case scene::ESNT_CUBE:
case scene::ESNT_ANIMATED_MESH:
// Because the selector won't animate with the mesh,
// and is only being used for camera collision, we'll just use an approximate
// bounding box instead of ((scene::IAnimatedMeshSceneNode*)node)->getMesh(0)
selector = smgr->createTriangleSelectorFromBoundingBox(node);
break;
case scene::ESNT_MESH:
case scene::ESNT_SPHERE: // Derived from IMeshSceneNode
selector = smgr->createTriangleSelector(((scene::IMeshSceneNode*)node)->getMesh(), node);
break;
case scene::ESNT_TERRAIN:
selector = smgr->createTerrainTriangleSelector((scene::ITerrainSceneNode*)node);
break;
case scene::ESNT_OCTREE:
selector = smgr->createOctreeTriangleSelector(((scene::IMeshSceneNode*)node)->getMesh(), node);
break;
default:
break;
}
if(selector)
{
meta->addTriangleSelector(selector);
selector->drop();
}
}
scene::ISceneNodeAnimator* anim = ID->getSceneManager()->createCollisionResponseAnimator(
meta, ID->getCamera(), core::vector3df(20,20,20),
core::vector3df(0,-10.f,0)); //null calls inside of Irr.lib
meta->drop();
ID->getCamera()->addAnimator(anim);
anim->drop();