sábado, 15 de noviembre de 2008

¿Qué nos mantiene ocupados?

Pués estamos trabajando en un par de wrappers para ODE:
- ODE++
- OdeManager (for Irrlicht applications)
¿Suena bien? pues sigue leyendo.. :)


El primero, bastante demandado en la comunidad ODE, es un wrapper de ODE en C++. Se acabó ver ode como una colección de funciones aglomeradas en una librería. A través de éste sencillo wrapper pretendemos ordenar todas estas funciones en un conjunto de clases en C++ que nos faciliten su acceso. La principal ventaja que obtenemos es el poder navegar de forma ordenada entre todas estas funciones (ahora métodos :)) a través de la típica característica de autocompletar de los IDE actuales. Además de ahorrarnos el ir mareando de aquí p'allá con los ID de los objetos ODE.

El segundo ODE puede ser útil para todos aquellos que trabajen con Irrlicht como nosotros, ya que apoyándonos sobre el wrapper anterior, estamos implementando un "OdeManager" que encapsule las tareas cotidianas de toda aplicación Irrlicht que haga uso de ODE. Cuando la consideremos mínimamente aceptable la publicaremos, por el momento id abriendo boca con este preview de como sería una aplicación Irr+ODE con un par de esferas: una estática y una dinámica:


#include "irrlicht/irrlicht.h"
#include "OdeManager.h"
#include "IStaticSphereSceneNode.h"
#include "IDynamicSphereSceneNode.h"

using namespace ode;
using namespace irr;

int main()
{
IrrlichtDevice* device = createDevice(video::EDT_OPENGL, core::dimension2di(800,600),16,false);
ISceneManager* scene = device->getSceneManager();
scene->addCameraSceneNodeMaya();

OdeManager* odeMngr = createOdeManager( device );

IStaticSphereSceneNode* staticNode = odeMngr->mAddStaticSphereSceneNode( 10.0 );
IDynamicSphereSceneNode* dynamicNode = odeMngr->mAddDynamicSphereSceneNode( 10.0 );

dynamicNode->getGeom()->setPosition( 0, 25, 0 );
staticNode->getGeom()->setPosition( 0, -25, 0 );

while( device->run() )
{
odeMngr->mStep();

device->getVideoDriver()->beginScene(true, true, video::SColor(0,200,200,200));
device->getSceneManager()->drawAll();
device->getGUIEnvironment()->drawAll();
device->getVideoDriver()->endScene();
}

return 0;
}


Y recordad, un poco de feedback por vuestra parte siempre es agradecido!

No hay comentarios: