#include <IRR/irrlicht.h>
using namespace irr;
int main(int argc, char **argv)
{
IrrlichtDevice *device = createDevice(video::EDT_OPENGL,
core::dimension2d<s32>(800,600), 32, false, true, false);
video::IVideoDriver *driver = device->getVideoDriver();
scene::ISceneManager *scenegraph = device->getSceneManager();
//une camera
scene::ICameraSceneNode *camera = scenegraph->addCameraSceneNodeFPS();
camera->setPosition(core::vector3df(0,10,-200));
//on ajoute un plan
scene::IAnimatedMesh *mPlan = scenegraph->addHillPlaneMesh("myHill",
core::dimension2d<f32>(20,20),core::dimension2d<u32>(40,40), 0, 0,
core::dimension2d<f32>(0,0),core::dimension2d<f32>(10,10));
scene::ISceneNode *plan = scenegraph->addAnimatedMeshSceneNode(mPlan);
plan->setMaterialTexture(0, driver->getTexture("media/floor055.jpg"));
plan->setPosition(core::vector3df(0,-20,0));
//Un soleil lumiere
scene::ILightSceneNode *lumiere = scenegraph->addLightSceneNode(0);
scene::ISceneNodeAnimator *anim = scenegraph->createFlyCircleAnimator(
core::vector3df(0,300,0), 600, 0.0005);
lumiere->addAnimator(anim);
//On crée une instance
video::SLight light;
//On fait tous les réglages
light.Type = video::ELT_POINT;
light.Radius= 450.0f;
light.AmbientColor = video::SColorf(1.0f,1.0f,1.0f,1);
light.SpecularColor= video::SColorf(0.4f,0.0f,0.0f,1);
light.DiffuseColor = video::SColorf(1.0f,1.0f,1.0f,1);
light.CastShadows = true;
//Et on la copie dans un ILightSceneNode pour le paramètrer
lumiere->setLightData(light);
scene::IBillboardSceneNode *soleil = scenegraph->addBillboardSceneNode(lumiere,
core::dimension2d<f32>(60,60));
soleil->setMaterialTexture(0, driver->getTexture("media/soleil.png"));
soleil->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR);
soleil->setMaterialFlag(video::EMF_LIGHTING, false);
//un petit modele pour le fun
scene::IAnimatedMeshSceneNode *sydney = scenegraph->addAnimatedMeshSceneNode(
scenegraph->getMesh("media/sydney.md2"));
sydney->setMaterialTexture(0, driver->getTexture("media/sydney.bmp"));
sydney->addShadowVolumeSceneNode(-1, false);
sydney->setPosition(core::vector3df(0,5,0));
//un petit cube
scene::IAnimatedMeshSceneNode *cube = scenegraph->addAnimatedMeshSceneNode(
scenegraph->getMesh("media/cube.3ds"));
cube->setPosition(core::vector3df(100,0,100));
cube->addShadowVolumeSceneNode(-1, false);
cube->setMaterialTexture(0, driver->getTexture("media/floor100.jpg"));
//une balle
scene::IAnimatedMeshSceneNode *balle = scenegraph->addAnimatedMeshSceneNode(
scenegraph->getMesh("media/balle.3ds"));
balle->setScale(core::vector3df(8,8,8));
balle->setPosition(core::vector3df(-50,0,-50));
balle->addShadowVolumeSceneNode();
while(device->run())
{
driver->beginScene(true, true, video::SColor(255,209,68,14));
scenegraph->drawAll();
driver->endScene();
}
device->drop();
return 0;
}