// Copyright (C) 2008-2009 Colin MacDonald // No rights reserved: this software is in the public domain. #include "testUtils.h" #include "irrlicht.h" using namespace irr; using namespace core; using namespace scene; using namespace video; /** Tests that the geometry creator does what it says it does. */ bool testGeometryCreator(void) { IrrlichtDevice *device = createDevice(video::EDT_BURNINGSVIDEO, core::dimension2du(160,120), 32); if (!device) return false; IVideoDriver* driver = device->getVideoDriver(); ISceneManager* smgr = device->getSceneManager(); (void)smgr->addCameraSceneNode(0, vector3df(0, 0, -50)); const IGeometryCreator * geom = smgr->getGeometryCreator(); ITexture * wall = driver->getTexture("../media/wall.bmp"); SMaterial material; material.Lighting = false; material.TextureLayer[0].Texture = wall; IMeshSceneNode * node = smgr->addMeshSceneNode( geom->createHillPlaneMesh(dimension2df(10, 5), dimension2du(5, 5), &material, 10, dimension2df(2, 2), dimension2df(3, 3)), 0, -1, vector3df(0, 10, 0), vector3df(-60, 0, 0)); node = smgr->addMeshSceneNode(geom->createArrowMesh(4, 8, 10, 6, 3, 6, SColor(255, 255, 0, 0), SColor(255, 0, 255, 0)), 0, -1, vector3df(-10, -20, 0)); node->setMaterialFlag(video::EMF_LIGHTING, false); node = smgr->addMeshSceneNode(geom->createSphereMesh(), 0, -1, vector3df(10, -15, 0)); node->setMaterialFlag(video::EMF_LIGHTING, false); node->setMaterialTexture(0, wall); bool result = false; device->run(); if (driver->beginScene(true, true, video::SColor(0, 80, 80, 80))) { smgr->drawAll(); driver->endScene(); result = takeScreenshotAndCompareAgainstReference(driver, "-testGeometryCreator.png", 100); } device->drop(); return result; }