]> git.lizzy.rs Git - irrlicht.git/blob - tests/skinnedMesh.cpp
Fix bug introduced in last merge from svn trunk
[irrlicht.git] / tests / skinnedMesh.cpp
1 // Copyright (C) 2008-2012 Colin MacDonald\r
2 // No rights reserved: this software is in the public domain.\r
3 \r
4 #include "testUtils.h"\r
5 \r
6 using namespace irr;\r
7 \r
8 // Tests skinned meshes.\r
9 bool skinnedMesh(void)\r
10 {\r
11         // Use EDT_BURNINGSVIDEO since it is not dependent on (e.g.) OpenGL driver versions.\r
12         IrrlichtDevice *device = createDevice(video::EDT_BURNINGSVIDEO, core::dimension2d<u32>(160, 120), 32);\r
13         if (!device)\r
14                 return false;\r
15 \r
16         scene::ISceneManager * smgr = device->getSceneManager();\r
17 \r
18         logTestString("Testing setMesh()\n");\r
19 \r
20         scene::ISkinnedMesh* mesh = (scene::ISkinnedMesh*)smgr->getMesh("../media/ninja.b3d");\r
21         if (!mesh)\r
22         {\r
23                 logTestString("Could not load ninja.\n");\r
24                 return false;\r
25         }\r
26 \r
27         scene::IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh);\r
28         if (!node)\r
29         {\r
30                 logTestString("Could not add ninja node.\n");\r
31                 return false;\r
32         }\r
33 \r
34         // test if certain joint is found\r
35         bool result = (node->getJointNode("Joint1") != 0);\r
36         if (!result)\r
37                 logTestString("Could not find joint in ninja.\n");\r
38 \r
39         mesh = (scene::ISkinnedMesh*)smgr->getMesh("../media/dwarf.x");\r
40         if (!mesh)\r
41         {\r
42                 logTestString("Could not load dwarf.\n");\r
43                 return false;\r
44         }\r
45         node->setMesh(mesh);\r
46 \r
47         // make sure old joint is non-existant anymore\r
48         logTestString("Ignore error message in log, this is intended.\n");\r
49         result &= (node->getJointNode("Joint1")==0);\r
50         if (!result)\r
51                 logTestString("Found non-existing joint in dwarf.\n");\r
52 \r
53         // and check that a new joint can be found\r
54         // we use a late one, in order to see also inconsistencies in the joint cache\r
55         result &= (node->getJointNode("hit") != 0);\r
56         if (!result)\r
57                 logTestString("Could not find joint in dwarf.\n");\r
58 \r
59         node = smgr->addAnimatedMeshSceneNode(mesh);\r
60         if (!node)\r
61         {\r
62                 logTestString("Could not add dwarf node.\n");\r
63                 return false;\r
64         }\r
65         // check that a joint can really be found\r
66         result &= (node->getJointNode("hit") != 0);\r
67         if (!result)\r
68                 logTestString("Could not find joint in dwarf.\n");\r
69 \r
70         device->closeDevice();\r
71         device->run();\r
72         device->drop();\r
73 \r
74         return result;\r
75 }\r