Commit 1e321bc0 authored by hybrid's avatar hybrid

Add test case to ensure that terrain nodes fit nicely together - when correctly placed.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@3764 dfc29bdd-3216-0410-991c-e03cc46cb475
parent c77bc631
...@@ -3,18 +3,23 @@ ...@@ -3,18 +3,23 @@
using namespace irr; using namespace irr;
using namespace core; using namespace core;
using namespace scene;
using namespace video;
bool terrainSceneNode(void) namespace
{
// test camera changes with terrain scene node recalculation
bool terrainRecalc(void)
{ {
IrrlichtDevice *device = IrrlichtDevice *device =
createDevice(video::EDT_OPENGL, dimension2du(160, 120), 32); createDevice(video::EDT_OPENGL, dimension2du(160, 120), 32);
IVideoDriver* driver = device->getVideoDriver(); if (!device)
ISceneManager* smgr = device->getSceneManager(); return true;
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
ITerrainSceneNode* terrain = smgr->addTerrainSceneNode( scene::ITerrainSceneNode* terrain = smgr->addTerrainSceneNode(
"../media/terrain-heightmap.bmp"); "../media/terrain-heightmap.bmp");
terrain->setScale(core::vector3df(40.f, .1f, 40.f)); terrain->setScale(core::vector3df(40.f, .1f, 40.f));
...@@ -22,7 +27,7 @@ bool terrainSceneNode(void) ...@@ -22,7 +27,7 @@ bool terrainSceneNode(void)
terrain->setMaterialTexture(0, driver->getTexture("../media/terrain-texture.jpg")); terrain->setMaterialTexture(0, driver->getTexture("../media/terrain-texture.jpg"));
terrain->setDebugDataVisible(scene::EDS_FULL); terrain->setDebugDataVisible(scene::EDS_FULL);
ICameraSceneNode* camera = smgr->addCameraSceneNode(); scene::ICameraSceneNode* camera = smgr->addCameraSceneNode();
const core::vector3df center(terrain->getBoundingBox().getCenter()); const core::vector3df center(terrain->getBoundingBox().getCenter());
camera->setTarget(center); camera->setTarget(center);
...@@ -69,3 +74,54 @@ bool terrainSceneNode(void) ...@@ -69,3 +74,54 @@ bool terrainSceneNode(void)
device->drop(); device->drop();
return result; return result;
} }
bool terrainGaps()
{
IrrlichtDevice* device = createDevice(video::EDT_OPENGL, dimension2d<u32>(160, 120));
if (!device)
return true;
video::IVideoDriver * irrVideo = device->getVideoDriver();
scene::ISceneManager* irrScene = device->getSceneManager();
// Add camera
scene::ICameraSceneNode* camera = irrScene->addCameraSceneNode();
camera->setPosition(vector3df(20000, 500, 12800));
camera->setTarget(vector3df(16800, 0, 12800));
camera->setFarValue(42000.0f);
// Add terrain scene node
for (u32 i = 0; i < 2; i++)
{
const char* name="media/ter1.png";
scene::ITerrainSceneNode* terrain = irrScene->addTerrainSceneNode(
name, 0, -1,
vector3df((f32)(256*50), 0.f, (f32)(i*256*50)),// position 12800(==imgsize*scale)
vector3df(0.f, 0.f, 0.f), // rotation
vector3df(50.f, 15.0f, 50.f) // scale 50 15 50
);
terrain->setMaterialFlag(video::EMF_LIGHTING, false);
terrain->setMaterialFlag(video::EMF_WIREFRAME, !terrain->getMaterial(0).Wireframe);
}
irrVideo->beginScene(true, true, video::SColor(0,150,150,150));
irrScene->drawAll();
irrVideo->endScene();
bool result = takeScreenshotAndCompareAgainstReference(irrVideo, "-terrainGap.png");
device->closeDevice();
device->run();
device->drop();
return true;
}
}
bool terrainSceneNode()
{
bool result = terrainRecalc();
result &= terrainGaps();
return result;
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment