#include <irrlicht.h>
#include <iostream>
using namespace std;
using namespace irr;
int main()
{
IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<u32>(1000,800), 32);
video::IVideoDriver *driver = device -> getVideoDriver();
scene::ISceneManager *sceneManager = device -> getSceneManager();
device->setWindowCaption(L"Fast Jump [INDEV]");
device->getCursorControl()->setVisible(false);
scene::IAnimatedMesh *map = sceneManager -> getMesh("mapFJ.obj");
scene::IMeshSceneNode *scene = sceneManager -> addMeshSceneNode(map -> getMesh(0));
scene::ITriangleSelector *selector = NULL;
if (scene)
{
scene -> setMaterialFlag(video::EMF_LIGHTING,false);
scene -> setMaterialTexture(0, driver -> getTexture("terrain-texture.jpg"));
sceneManager -> getMeshManipulator() -> makePlanarTextureMapping(map -> getMesh(0), 0.4f);
selector = sceneManager->createOctTreeTriangleSelector(map->getMesh(0), scene);
if(selector)
{
scene->setTriangleSelector(selector);
selector->drop();
}
}
SKeyMap keyMap[5];
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;
keyMap[4].Action = EKA_JUMP_UP;
keyMap[4].KeyCode = KEY_SPACE;
scene::ICameraSceneNode* camera = sceneManager-> addCameraSceneNodeFPS(0,100.0f,0.025f, -1, keyMap, 5, true, 10.5f);
camera->setPosition(core::vector3df(0,100,0));
camera->setTarget(core::vector3df(0,0,0));
camera->setFarValue(42000.0f);
if(selector)
{
scene::ISceneNodeAnimator *anim = sceneManager->createCollisionResponseAnimator(selector, camera, core::vector3df(60,100,60), core::vector3df(0,-100,0), core::vector3df(0,50,0));
camera->addAnimator(anim);
anim->drop();
}
while(device -> run())
{
driver -> beginScene(true, true, video::SColor(255,90,146,177));
sceneManager -> drawAll();
driver->endScene();
}
device -> drop();
return 0;
}