Advertisement
Le_BuG63

Untitled

Mar 22nd, 2014
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.37 KB | None | 0 0
  1. #include <Irrlicht\irrlicht.h>
  2.  
  3. void    move_lightCube(irr::core::vector3df &posLight) {
  4.     static int velocity = 1;
  5.  
  6.     if (posLight.X <= -50)
  7.         velocity = 1;
  8.     if (posLight.X >= 50)
  9.         velocity = -1;
  10.     posLight.X += velocity;
  11. }
  12.  
  13. int main(void) {
  14.     irr::IrrlichtDevice *device = irr::createDevice(
  15.         irr::video::EDT_DIRECT3D9,
  16.         irr::core::dimension2d<irr::u32>(720, 720),
  17.         32,
  18.         false,
  19.         true,
  20.         true,
  21.         nullptr);
  22.  
  23.     irr::video::IVideoDriver  *driver = device->getVideoDriver();
  24.     irr::scene::ISceneManager *sceneManager = device->getSceneManager();
  25.  
  26.     irr::SKeyMap keyMap[5];
  27.     keyMap[0].Action = irr::EKA_MOVE_FORWARD;   // avancer
  28.     keyMap[0].KeyCode = irr::KEY_KEY_Z;
  29.     keyMap[1].Action = irr::EKA_MOVE_BACKWARD;  // reculer
  30.     keyMap[1].KeyCode = irr::KEY_KEY_S;
  31.     keyMap[2].Action = irr::EKA_STRAFE_LEFT;    // a gauche
  32.     keyMap[2].KeyCode = irr::KEY_KEY_Q;
  33.     keyMap[3].Action = irr::EKA_STRAFE_RIGHT;   // a droite
  34.     keyMap[3].KeyCode = irr::KEY_KEY_D;
  35.    
  36.     sceneManager->addCameraSceneNodeFPS(0, 100.0f, 0.1f, -1, keyMap, 5);
  37.    
  38.     auto lightCube = sceneManager->addCubeSceneNode(5.0F, nullptr, -1, irr::core::vector3df(0, 40, 0));
  39.     auto cube = sceneManager->addCubeSceneNode(5.0F, nullptr, -1, irr::core::vector3df(0, -10, 0));
  40.     auto sphere = sceneManager->addSphereSceneNode(5.F, 64, nullptr, -1, irr::core::vector3df(6, 0, 0));
  41.     auto floor = sceneManager->addCubeSceneNode(1.0F, nullptr, -1, irr::core::vector3df(0, -20, 0));
  42.  
  43.     irr::scene::ILightSceneNode *light = sceneManager->addLightSceneNode(
  44.         nullptr,
  45.         lightCube->getPosition(),
  46.         irr::video::SColorf(0.4f, 1.f, 1.f, 1.f),
  47.         100.0f);
  48.  
  49.     floor->setScale(irr::core::vector3df(50, 5, 50));
  50.  
  51.     cube->setMaterialTexture(0, driver->getTexture("aa.png"));
  52.     floor->setMaterialTexture(0, driver->getTexture("bb.png"));
  53.  
  54.     lightCube->getMaterial(0).EmissiveColor = irr::video::SColor(255, 0, 255, 255);
  55.  
  56.     irr::core::vector3df vec(0, 0, 0);
  57.     irr::core::vector3df vecLight(0, 15, -15);
  58.  
  59.     cube->addShadowVolumeSceneNode();
  60.     sphere->addShadowVolumeSceneNode();
  61.  
  62.     while (device->run()) {
  63.        
  64.         vec.X += 1;
  65.         vec.Y -= 1;
  66.         vec.Z += 1;
  67.  
  68.         cube->setRotation(vec);
  69.  
  70.         move_lightCube(vecLight);
  71.         lightCube->setPosition(vecLight);
  72.         light->setPosition(lightCube->getPosition());
  73.  
  74.         driver->beginScene(true, true, irr::video::SColor(255, 50, 50, 50));
  75.  
  76.             sceneManager->drawAll();
  77.  
  78.         driver->endScene();
  79.     }
  80.  
  81.     driver->drop();
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement