]> 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 6bc1020f8cfab87bf61778c141f85a379bfe2e07..61333989136cdecf3f75933c93084e7d41acd2fc 100644 (file)
@@ -32,31 +32,17 @@ extern "C" {
                        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
@@ -69,49 +55,12 @@ extern "C" {
                                     irr_scene_E_PRIMITIVE_TYPE pType,
                                     irr_video_E_INDEX_TYPE iType)
   {
-    // Convert vertices
-    irr::video::S3DVertex irrVertices[vertexCount];
-    for (int i=0; i<vertexCount; i++)
-      {
-        irr_video_S3DVertex *vertex = (irr_video_S3DVertex*)vertices + i;
-        irrVertices[i] =
-          irr::video::S3DVertex(vertex->pos.x, vertex->pos.y, vertex->pos.z,
-                                vertex->normal.x, vertex->normal.y, vertex->normal.z,
-                                irr::video::SColor(vertex->color.a,
-                                                   vertex->color.r,
-                                                   vertex->color.g,
-                                                   vertex->color.b),
-                                vertex->tCoords.x, vertex->tCoords.y);
-      }
-
-    // Convert indices
-    size_t indexListSize =
-      ((iType == irr_video_EIT_16BIT) ? sizeof(irr::u16) : sizeof(irr::u32)) *
-      primCount * 3;
-    void* irrIndexList = malloc(indexListSize);
-
-    for (int i=0; i<primCount*3; i++)
-      {
-        if (iType == irr_video_EIT_16BIT)
-          {
-            uint16_t *index = (uint16_t*)indexList + i;
-            ((irr::u16*)irrIndexList)[i] = *index;
-          }
-        else
-          {
-            uint32_t *index = (uint32_t*)indexList + i;
-            ((irr::u32*)irrIndexList)[i] = *index;
-          }
-      }
-
     ((irr::video::IVideoDriver*)driver)
-      ->drawVertexPrimitiveList(&irrVertices[0], vertexCount,
-                                irrIndexList, primCount,
+      ->drawVertexPrimitiveList(vertices, vertexCount,
+                                indexList, primCount,
                                 (irr::video::E_VERTEX_TYPE)vType,
                                 (irr::scene::E_PRIMITIVE_TYPE)pType,
                                 (irr::video::E_INDEX_TYPE)iType);
-
-    free(irrIndexList);
   }
 
   int