Code: Select all
<level>
<name>Desert Canyon</name>
<desc>../models/level01.bmp</desc>
<skymap>
<image>../skys/reddesert_top.bmp</image>
<image>../skys/reddesert_bottom.bmp</image>
<image>../skys/reddesert_left.bmp</image>
<image>../skys/reddesert_right.bmp</image>
<image>../skys/reddesert_front.bmp</image>
<image>../skys/reddesert_back.bmp</image>
</skymap>
<mesh file="../models/level01.3.lmts" type="lmts"></mesh>
</level>
Code: Select all
//setup game data
stringc levelpath;
levelpath = "data\\levels\\";
levelpath.append(lstLevel->getListItem(lstLevel->getSelected()));
IXMLReader* xml = device->getFileSystem()->createXMLReader(levelpath.c_str());
while(xml && xml->read())
{
switch(xml->getNodeType())
{
case EXN_TEXT:
break;
case EXN_ELEMENT:
if(stringw("mesh") == xml->getNodeName())
{
//load mesh
stringc meshpath;
meshpath = xml->getAttributeValue(L"file");
IAnimatedMesh* mesh = smgr->getMesh(meshpath.c_str());
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
}
//setup Newton Mesh data
NewtonCollision* LvlCollision;
LvlCollision = NewtonCreateTreeCollision(nWorld, NULL);
NewtonTreeCollisionBeginBuild(LvlCollision);
//read in data from the irrlicht mesh data
//finallise mesh
NewtonTreeCollisionEndBuild(LvlCollision, 1);
//build newton body
NewtonBody* LevelBody = NewtonCreateBody(nWorld, LvlCollision);
//release mesh
NewtonReleaseCollision(nWorld, LvlCollision);
}
if(stringw("skymap") == xml->getNodeName())
{
//load sky
stringc imgTop;
stringc imgBottom;
stringc imgLeft;
stringc imgRight;
stringc imgFront;
stringc imgBack;
for(int i = 0;i < 6;i++)
{
xml->read();
if(stringw("image") == xml->getNodeName())
{
xml->getNodeData();
}
}
SkyBox = smgr->addSkyBoxSceneNode(
driver->getTexture(imgTop.c_str()),
driver->getTexture(imgBottom.c_str()),
driver->getTexture(imgLeft.c_str()),
driver->getTexture(imgRight.c_str()),
driver->getTexture(imgFront.c_str()),
driver->getTexture(imgBack.c_str()));
}
break;
}
}
// delete the parser after
if(xml)xml->drop();