martes, 21 de abril de 2015

Sistema de Particulas en Irrlicht


Descargar Assets para este proyecto


#include <irrlicht.h>

//los namespace para definir funciones de irrlicht
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;

#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#endif


int main()
{
 //define un device para la pantalla y cambiamos los valores a true para activar la sombra
 IrrlichtDevice *device = createDevice(EDT_DIRECT3D9, dimension2d<u32>(640, 480), 16, false,
  true, false, 0);

 //en caso de error
 if (!device)
  return 1;

 //Para ponerle un titulo a la ventana
 device->setWindowCaption(L"Sistema de Particulas en Irrlicht");

 //Creo un driver de video
 IVideoDriver *driver = device->getVideoDriver();

 //Creo un nodo para manejar la scena
 ISceneManager *sceneManager = device->getSceneManager();

 //Agrego mi sistema de particulas
 IParticleSystemSceneNode *particleSystem = sceneManager->addParticleSystemSceneNode(false);

 //Creo un emmiter para la emision de las particulas
 IParticleEmitter *emitter = particleSystem->createBoxEmitter(aabbox3d<f32>(-5, 0, -5, 5, 1, 5),
  vector3df(0.0f, 0.1f, 0.0f), 50, 200, SColor(0, 0, 0, 255), SColor(0, 255, 255, 255),
  800, 1000, 0, dimension2df(10.f, 10.f), dimension2df(20.f, 20.f));

 //Establesco mi emision al sistema de particulas
 particleSystem->setEmitter(emitter);
 emitter->drop();

 //Agrego propiedades a mi sistema de particulas

 //posicion
 particleSystem->setPosition(vector3df(-70, 60, 40));

 //Escala
 particleSystem->setScale(vector3df(2, 2, 2));

 //Materiales
 particleSystem->setMaterialFlag(EMF_LIGHTING, false);
 particleSystem->setMaterialFlag(EMF_ZWRITE_ENABLE, false);

 //Textura y tipo de material
 particleSystem->setMaterialTexture(0, driver->getTexture("fireball.bmp"));
 particleSystem->setMaterialType(EMT_TRANSPARENT_ADD_COLOR);

 //Creo una camara de tipo FPS(First Person Shooter) se maneja con las teclas de direccion del teclado
 //y el mouse Alt + f4 para salir
 ICameraSceneNode *fpsCamera = sceneManager->addCameraSceneNodeFPS(0, 80.f, 0.3f);

 //Agrego sus propiedades
 fpsCamera->setPosition(vector3df(0, 150, -250));
 fpsCamera->setTarget(vector3df(0, 0, 0));

 //Gameloop
 while (device->run())
 {
   driver->beginScene(true, true, SColor(255, 100, 101, 140));

   //Dibujo todo del sceneManager
   sceneManager->drawAll();

   driver->endScene();
 }

 //cerrar device
 device->drop();

 return 0;
}


No hay comentarios:

Publicar un comentario