#include <irrlicht.h>
//los namespace para definir funciones de irrlicht
using namespace irr;
using namespace core;
using namespace video;
using namespace scene;
#if defined(_MSC_VER)
#pragma comment(lib, "Irrlicht.lib")
#endif
int main()
{
//define un device para la pantalla
IrrlichtDevice *device = createDevice(EDT_OPENGL, dimension2d<u32>(640, 480), 16, false,
false, false, 0);
//en caso de error
if (!device)
return 1;
//Creo un driver de video
IVideoDriver *driver = device->getVideoDriver();
//Creo un nodo manejador de escenas
ISceneManager *sceneManager = device->getSceneManager();
//Agrego mi mesh md2 pero con animacion
//NOTA este modelo y su respectiva textura se encuentra en la carpeta media de irrlicht
IAnimatedMesh *mesh = sceneManager->getMesh("sydney.md2");
//Creo un nodo de animacion
IAnimatedMeshSceneNode *node = sceneManager->addAnimatedMeshSceneNode( mesh );
//Creo un segundo nodo de animacion y le paso el mismo mesh
IAnimatedMeshSceneNode *node2 = sceneManager->addAnimatedMeshSceneNode( mesh );
//Si ambos son true
if (node && node2)
{
//Les asigno un material y su textura
node->setMaterialFlag(EMF_LIGHTING, false);
node->setMaterialTexture(0, driver->getTexture("sydney.bmp"));
node2->setMaterialFlag(EMF_LIGHTING, false);
node2->setMaterialTexture(0, driver->getTexture("sydney.bmp"));
//Hago que mi nodo2 sea hijo del primer nodo
node->addChild(node2);
//Establesco una posicion para mi nodo2
node2->setPosition(vector3df(-30 ,0 ,40));
//Establesco posicion y rotacion del nodo
node->setPosition(vector3df(0, 0, -30));
node->setRotation(vector3df(0, 70, 0));
}
//Agrego una vista o camara a la escena
sceneManager->addCameraSceneNode(0, vector3df(-30, 0, 40), vector3df(0, 5, 0));
//Gameloop
while (device->run())
{
driver->beginScene(true, true, SColor(255,255,255,255));
//dibujo todo en mi escena
sceneManager->drawAll();
driver->endScene();
}
//cerrar device
device->drop();
return 0;
}
No hay comentarios:
Publicar un comentario