Code: Select all
#include <irrlicht.h>
using namespace irr;
#pragma comment(lib,"irrlicht.lib")
int main()
{
IrrlichtDevice* device=0;
device=createDevice(video::EDT_OPENGL,core::dimension2d<s32>(640,480),16,false,true,false);
video::IVideoDriver* driver=device->getVideoDriver();
scene::ISceneManager* smgr=device->getSceneManager();
//! // SKYSPHERE // !// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
scene::ISceneNode* sky=0;
sky=smgr->addSkyDomeSceneNode(driver->getTexture("./gfx/Sky.jpg"),50,50,1.0f,2.0f);
//! KOLIZJA ZE SCENA : COLLISION
scene::IAnimatedMesh* SceneMesh=smgr->getMesh("./models/Scene.md2");
scene::ISceneNode* SceneNode=0;
SceneNode=smgr->addOctTreeSceneNode(SceneMesh->getMesh(0));
// Selector
scene::ITriangleSelector* selector=0;
selector=smgr->createOctTreeTriangleSelector(SceneMesh->getMesh(0),SceneNode,128);
SceneNode->setTriangleSelector(selector);
selector->drop();
//! // MODELE : MODELS // !// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
scene::IAnimatedMesh* Mesh=0; // LoaderMeshes
scene::IAnimatedMeshSceneNode* ANode=0; // AnimatedNode
scene::ISceneNode* SNode=0; // SceneNode
//! WCZYTYWANIE MODELI : LOAD MODELS
// Sceneria
Mesh=smgr->getMesh("./models/Scene.md2");
ANode=smgr->addAnimatedMeshSceneNode(Mesh);
ANode->setMaterialFlag(video::EMF_LIGHTING,true);
ANode->setMaterialTexture(0,driver->getTexture("./gfx/Red.jpg"));
// Kolo : Sphere
Mesh=smgr->getMesh("./models/Sphere.md2");
ANode=smgr->addAnimatedMeshSceneNode(Mesh);
ANode->setPosition(core::vector3df(0,20,0));
ANode->setMaterialFlag(video::EMF_LIGHTING,true);
ANode->setMaterialTexture(0,driver->getTexture("./gfx/Blue.jpg"));
ANode->addShadowVolumeSceneNode(-1,true,1000.0f);
//! SWIATLO I CIENIE : LIGHTS & SHADOWS
SNode=smgr->addLightSceneNode(0,core::vector3df(0,80,40),video::SColor(255,255,255,255),100.0f);
smgr->setShadowColor(video::SColor(0,0,0,0));
//! // KAMERA FPS : FPS CAMERA // !// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
SKeyMap keyMap[8];
keyMap[1].Action = EKA_MOVE_FORWARD; keyMap[1].KeyCode = KEY_KEY_W;
keyMap[2].Action = EKA_MOVE_BACKWARD; keyMap[2].KeyCode = KEY_KEY_S;
keyMap[3].Action = EKA_STRAFE_LEFT; keyMap[3].KeyCode = KEY_KEY_A;
keyMap[4].Action = EKA_STRAFE_RIGHT; keyMap[4].KeyCode = KEY_KEY_D;
keyMap[5].Action = EKA_JUMP_UP; keyMap[5].KeyCode = KEY_SPACE;
scene::ICameraSceneNode* camera=smgr->addCameraSceneNodeFPS(0,100.0f,50.0f,-1,keyMap,6,true,0.1f);
camera->setPosition(core::vector3df(0,100,50));
camera->setRotation(core::vector3df(0,180,0));
device->getCursorControl()->setVisible(false);
// Dodaj kolizje : Add collision
scene::ISceneNodeAnimatorCollisionResponse* anim=0;
anim=smgr->createCollisionResponseAnimator(
selector,camera,
core::vector3df(4,10,4),
core::vector3df(0,-0.3,0),
core::vector3df(0,5,0));
camera->addAnimator(anim);
anim->drop();
//! // WHILE // !// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
while(device->run())
{
//! DRAW All
driver->beginScene(true,true,video::SColor(100,100,100,200));
smgr->drawAll();
driver->endScene();
}
device->drop();
return 0;
}
EDIT:
Screen: http://www.uploadhouse.com/viewfile.php?id=573393