Voici mon code:
#include <irrlicht.h>
using namespace irr;
#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif
class MyEventReceiver : public IEventReceiver
{
public:
MyEventReceiver(scene::ISceneNode* terrain) : Terrain(terrain)
{
}
bool OnEvent(const SEvent& event)
{
return false;
}
private:
scene::ISceneNode* Terrain;
};
int main()
{
irr::IrrlichtDevice* device = irr::createDevice(irr::video::EDT_OPENGL, irr::core::dimension2d<irr::u32>(1000,800),32);
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* scene = device->getSceneManager();
gui::IGUIEnvironment* env = device->getGUIEnvironment();
device->setWindowCaption(L"Fast Jump [INDEV]");
device->getCursorControl()->setVisible(false);
irr::SKeyMap keyMap[4];
keyMap[0].Action = irr::EKA_MOVE_FORWARD;
keyMap[0].KeyCode = irr::KEY_KEY_Z;
keyMap[1].Action = irr::EKA_MOVE_BACKWARD;
keyMap[1].KeyCode = irr::KEY_KEY_S;
keyMap[2].Action = irr::EKA_STRAFE_LEFT;
keyMap[2].KeyCode = irr::KEY_KEY_Q;
keyMap[3].Action = irr::EKA_STRAFE_RIGHT;
keyMap[3].KeyCode = irr::KEY_KEY_D;
scene::ICameraSceneNode* camera = scene->addCameraSceneNodeFPS(0,100.0f,2.5f, -1, keyMap, 4);
camera->setPosition(core::vector3df(2700*2,255*2,2600*2));
camera->setTarget(core::vector3df(2397*2,343*2,2700*2));
camera->setFarValue(42000.0f);
scene::ITerrainSceneNode* terrain = scene->addTerrainSceneNode("heightmap.png", 0, -1,
core::vector3df(0.f, 0.f, 0.f),
core::vector3df(0.f, 0.f, 0.f),
core::vector3df(60.f, 10.f, 60.f),
video::SColor ( 255, 255, 255, 255 ), 5, scene::ETPS_17, 4);
terrain->setMaterialFlag(video::EMF_LIGHTING, false);
terrain->setMaterialTexture(0, driver->getTexture("terrain-texture.jpg"));
terrain->setMaterialTexture(1, driver->getTexture("detailmap3.jpg"));
terrain->setMaterialType(video::EMT_DETAIL_MAP);
terrain->scaleTexture(1.0f, 20.0f);
// create triangle selector for the terrain
scene::ITriangleSelector* selector = scene->createTerrainTriangleSelector(terrain, 0);
terrain->setTriangleSelector(selector);
// create collision response animator and attach it to the camera
scene::ISceneNodeAnimator* anim = scene->createCollisionResponseAnimator(
selector, camera, core::vector3df(60,100,60),
core::vector3df(0,0,0),
core::vector3df(0,50,0));
selector->drop();
camera->addAnimator(anim);
anim->drop();
MyEventReceiver receiver(terrain);
device->setEventReceiver(&receiver);
scene->setAmbientLight(irr::video::SColorf(1.0, 1.0, 1.0,0.0));
while(device->run())
if (device->isWindowActive())
{
driver->beginScene(true, true, 0 );
scene->drawAll();
env->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
Quand je vise avec ma souris vers le haut, je continue à décoller du sol ;(