]> git.jsancho.org Git - c-irrlicht.git/blobdiff - src/IVideoDriver.cpp
Use structs with casting, without classes replication
[c-irrlicht.git] / src / IVideoDriver.cpp
index 50ee3454283db4ec73ea0d2d7c634c489f0ae4ab..61333989136cdecf3f75933c93084e7d41acd2fc 100644 (file)
 extern "C" {
   int
   irr_video_beginScene(irr_video_IVideoDriver* driver,
-                       int backBuffer,
-                       int zBuffer,
+                       bool backBuffer,
+                       bool 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;
-    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,
+                   *(irr::video::SColor*)color,
                    vdata,
-                   sourceRect != NULL ? &rect : 0);
+                   (irr::core::rect<irr::s32>*)sourceRect);
+  }
+
+  void
+  irr_video_drawVertexPrimitiveList(irr_video_IVideoDriver* driver,
+                                    const void* vertices,
+                                    uint32_t vertexCount,
+                                    const void* indexList,
+                                    uint32_t primCount,
+                                    irr_video_E_VERTEX_TYPE vType,
+                                    irr_scene_E_PRIMITIVE_TYPE pType,
+                                    irr_video_E_INDEX_TYPE iType)
+  {
+    ((irr::video::IVideoDriver*)driver)
+      ->drawVertexPrimitiveList(vertices, vertexCount,
+                                indexList, primCount,
+                                (irr::video::E_VERTEX_TYPE)vType,
+                                (irr::scene::E_PRIMITIVE_TYPE)pType,
+                                (irr::video::E_INDEX_TYPE)iType);
   }
 
   int
@@ -91,13 +95,9 @@ extern "C" {
 
   void
   irr_video_setMaterial(irr_video_IVideoDriver* driver,
-                        const irr_video_SMaterial material)
+                        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);
+    ((irr::video::IVideoDriver*)driver)->setMaterial(*(irr::video::SMaterial*)material);
   }
 
   void