Here's what I'm doing so far:
Code: Select all
if(nodeToAdd->getType() == ESNT_TERRAIN)
{
cout << "Node is Terrain.\n";
nodeToAdd->setMaterialFlag(EMF_LIGHTING, true);
//yeah, I know this won't work.
ITriangleSelector* triSel = smgr->createTerrainTriangleSelector(nodeToAdd,32);
nodeToAdd->setTriangleSelector(triSel);
metaSel->addTriangleSelector(triSel);
triSel->drop();
}
if(nodeToAdd->getType() == ESNT_OCT_TREE || nodeToAdd->getType() == ESNT_MESH)
{
cout << "Node is OctTree.\n";
nodeToAdd->setMaterialFlag(EMF_LIGHTING, true);
IAttributes* attributes = device->getFileSystem()->createEmptyAttributes();
if(attributes)
{
nodeToAdd->serializeAttributes(attributes);
stringc meshName = attributes->getAttributeAsString("Mesh");
attributes->drop();
IAnimatedMesh* octMesh = smgr->getMesh(meshName.c_str());
if(octMesh)
{
ITriangleSelector* triSel = smgr->createOctTreeTriangleSelector(octMesh->getMesh(0),nodeToAdd,256);
nodeToAdd->setTriangleSelector(triSel);
metaSel->addTriangleSelector(triSel);
triSel->drop();
}
}
}