*/
#include <irrlicht/irrlicht.h>
+#include <wchar.h>
#include "IVideoDriver.h"
extern "C" {
- bool irr_video_IVideoDriver_beginScene(void* driver,
- bool backBuffer,
- bool zBuffer,
- const irr_video_SColor* color,
- void* videoData, // not used for now
- const irr_core_rect_s32* sourceRect)
+ int
+ irr_video_beginScene(irr_video_IVideoDriver* driver,
+ int backBuffer,
+ int zBuffer,
+ const irr_video_SColor* color,
+ irr_video_SExposedVideoData* videoData,
+ const irr_core_rect_s32* sourceRect)
{
// Color
irr::video::SColor col = irr::video::SColor(color->a, color->r,
color->g, color->b);
// Video data
+ // TODO
irr::video::SExposedVideoData vdata = irr::video::SExposedVideoData();
// Source rect
- irr::core::rect<irr::s32> rect = \
- irr::core::rect<irr::s32>(sourceRect->x,
- sourceRect->y,
- sourceRect->x2,
- sourceRect->y2);
+ irr::core::rect<irr::s32> rect;
+ if (sourceRect != NULL)
+ {
+ rect = irr::core::rect<irr::s32>(sourceRect->x,
+ sourceRect->y,
+ sourceRect->x2,
+ sourceRect->y2);
+ }
// Begin scene
- return ((irr::video::IVideoDriver*)driver)->beginScene(backBuffer,
- zBuffer,
- col,
- vdata,
- &rect);
+ return ((irr::video::IVideoDriver*)driver)
+ ->beginScene(backBuffer,
+ zBuffer,
+ col,
+ vdata,
+ sourceRect != NULL ? &rect : 0);
}
- bool irr_videoIVideoDriver_endScene(void* driver)
+ int
+ irr_video_endScene(irr_video_IVideoDriver* driver)
{
return ((irr::video::IVideoDriver*)driver)->endScene();
}
+
+ int
+ irr_video_getFPS(irr_video_IVideoDriver* driver)
+ {
+ return ((irr::video::IVideoDriver*)driver)->getFPS();
+ }
+
+ const char*
+ irr_video_getName(irr_video_IVideoDriver* driver)
+ {
+ const wchar_t *wname = ((irr::video::IVideoDriver*)driver)->getName();
+ size_t nbytes = wcslen(wname) + 1;
+ char *name = (char*)malloc(nbytes);
+ wcstombs(name, wname, nbytes);
+ return name;
+ }
+
+ irr_video_ITexture*
+ irr_video_getTexture(irr_video_IVideoDriver* driver,
+ const char* filename)
+ {
+ return (irr_video_ITexture*)
+ ((irr::video::IVideoDriver*)driver)->getTexture(filename);
+ }
+
+ void
+ irr_video_setMaterial(irr_video_IVideoDriver* driver,
+ const irr_video_SMaterial material)
+ {
+ irr::video::SMaterial irrMaterial = irr::video::SMaterial();
+ irrMaterial.Lighting = material.lighting;
+ irrMaterial.Wireframe = material.wireframe;
+
+ ((irr::video::IVideoDriver*)driver)->setMaterial(irrMaterial);
+ }
+
+ void
+ irr_video_setTransform(irr_video_IVideoDriver* driver,
+ irr_video_E_TRANSFORMATION_STATE state,
+ irr_core_matrix4* mat)
+ {
+ ((irr::video::IVideoDriver*)driver)
+ ->setTransform((irr::video::E_TRANSFORMATION_STATE)state,
+ *(irr::core::matrix4*)mat);
+ }
}