Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Irrlicht\irrlicht.h>
- void move_lightCube(irr::core::vector3df &posLight) {
- static int velocity = 1;
- if (posLight.X <= -50)
- velocity = 1;
- if (posLight.X >= 50)
- velocity = -1;
- posLight.X += velocity;
- }
- int main(void) {
- irr::IrrlichtDevice *device = irr::createDevice(
- irr::video::EDT_DIRECT3D9,
- irr::core::dimension2d<irr::u32>(720, 720),
- 32,
- false,
- true,
- true,
- nullptr);
- irr::video::IVideoDriver *driver = device->getVideoDriver();
- irr::scene::ISceneManager *sceneManager = device->getSceneManager();
- irr::SKeyMap keyMap[5];
- keyMap[0].Action = irr::EKA_MOVE_FORWARD; // avancer
- keyMap[0].KeyCode = irr::KEY_KEY_Z;
- keyMap[1].Action = irr::EKA_MOVE_BACKWARD; // reculer
- keyMap[1].KeyCode = irr::KEY_KEY_S;
- keyMap[2].Action = irr::EKA_STRAFE_LEFT; // a gauche
- keyMap[2].KeyCode = irr::KEY_KEY_Q;
- keyMap[3].Action = irr::EKA_STRAFE_RIGHT; // a droite
- keyMap[3].KeyCode = irr::KEY_KEY_D;
- sceneManager->addCameraSceneNodeFPS(0, 100.0f, 0.1f, -1, keyMap, 5);
- auto lightCube = sceneManager->addCubeSceneNode(5.0F, nullptr, -1, irr::core::vector3df(0, 40, 0));
- auto cube = sceneManager->addCubeSceneNode(5.0F, nullptr, -1, irr::core::vector3df(0, -10, 0));
- auto sphere = sceneManager->addSphereSceneNode(5.F, 64, nullptr, -1, irr::core::vector3df(6, 0, 0));
- auto floor = sceneManager->addCubeSceneNode(1.0F, nullptr, -1, irr::core::vector3df(0, -20, 0));
- irr::scene::ILightSceneNode *light = sceneManager->addLightSceneNode(
- nullptr,
- lightCube->getPosition(),
- irr::video::SColorf(0.4f, 1.f, 1.f, 1.f),
- 100.0f);
- floor->setScale(irr::core::vector3df(50, 5, 50));
- cube->setMaterialTexture(0, driver->getTexture("aa.png"));
- floor->setMaterialTexture(0, driver->getTexture("bb.png"));
- lightCube->getMaterial(0).EmissiveColor = irr::video::SColor(255, 0, 255, 255);
- irr::core::vector3df vec(0, 0, 0);
- irr::core::vector3df vecLight(0, 15, -15);
- cube->addShadowVolumeSceneNode();
- sphere->addShadowVolumeSceneNode();
- while (device->run()) {
- vec.X += 1;
- vec.Y -= 1;
- vec.Z += 1;
- cube->setRotation(vec);
- move_lightCube(vecLight);
- lightCube->setPosition(vecLight);
- light->setPosition(lightCube->getPosition());
- driver->beginScene(true, true, irr::video::SColor(255, 50, 50, 50));
- sceneManager->drawAll();
- driver->endScene();
- }
- driver->drop();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement