stk-code_catmod/lib/irrlicht/tests/skinnedMesh.cpp
hikerstk 974deca5e1 Added our own irrlicht version - not used atm.
git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@11846 178a84e3-b1eb-0310-8ba1-8eac791a3b58
2012-11-01 02:00:02 +00:00

76 lines
2.0 KiB
C++

// Copyright (C) 2008-2012 Colin MacDonald
// No rights reserved: this software is in the public domain.
#include "testUtils.h"
using namespace irr;
// Tests skinned meshes.
bool skinnedMesh(void)
{
// Use EDT_BURNINGSVIDEO since it is not dependent on (e.g.) OpenGL driver versions.
IrrlichtDevice *device = createDevice(video::EDT_BURNINGSVIDEO, core::dimension2d<u32>(160, 120), 32);
if (!device)
return false;
scene::ISceneManager * smgr = device->getSceneManager();
logTestString("Testing setMesh()\n");
scene::ISkinnedMesh* mesh = (scene::ISkinnedMesh*)smgr->getMesh("../media/ninja.b3d");
if (!mesh)
{
logTestString("Could not load ninja.\n");
return false;
}
scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);
if (!node)
{
logTestString("Could not add ninja node.\n");
return false;
}
// test if certain joint is found
bool result = (node->getJointNode("Joint1") != 0);
if (!result)
logTestString("Could not find joint in ninja.\n");
mesh = (scene::ISkinnedMesh*)smgr->getMesh("../media/dwarf.x");
if (!mesh)
{
logTestString("Could not load dwarf.\n");
return false;
}
node->setMesh(mesh);
// make sure old joint is non-existant anymore
logTestString("Ignore error message in log, this is intended.\n");
result &= (node->getJointNode("Joint1")==0);
if (!result)
logTestString("Found non-existing joint in dwarf.\n");
// and check that a new joint can be found
// we use a late one, in order to see also inconsistencies in the joint cache
result &= (node->getJointNode("hit") != 0);
if (!result)
logTestString("Could not find joint in dwarf.\n");
node = smgr->addAnimatedMeshSceneNode(mesh);
if (!node)
{
logTestString("Could not add dwarf node.\n");
return false;
}
// check that a joint can really be found
result &= (node->getJointNode("hit") != 0);
if (!result)
logTestString("Could not find joint in dwarf.\n");
device->closeDevice();
device->run();
device->drop();
return result;
}