Преглед на файлове

Added security check if file not found

raysan5 преди 10 години
родител
ревизия
36552ff995
променени са 1 файла, в които са добавени 21 реда и са изтрити 10 реда
  1. 21 10
      src/models.c

+ 21 - 10
src/models.c

@@ -558,22 +558,33 @@ void DrawGizmo(Vector3 position)
 Model LoadModel(const char *fileName)
 Model LoadModel(const char *fileName)
 {
 {
     VertexData vData;
     VertexData vData;
+    
+    Model model;
+    
+    // TODO: Initialize default data for model in case loading fails, maybe a cube?
 
 
     if (strcmp(GetExtension(fileName),"obj") == 0) vData = LoadOBJ(fileName);
     if (strcmp(GetExtension(fileName),"obj") == 0) vData = LoadOBJ(fileName);
     else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName);
     else TraceLog(WARNING, "[%s] Model extension not recognized, it can't be loaded", fileName);
 
 
     // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
     // NOTE: At this point we have all vertex, texcoord, normal data for the model in vData struct
-
-    // NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel()
-    Model model = rlglLoadModel(vData);     // Upload vertex data to GPU
-
-    // Now that vertex data is uploaded to GPU, we can free arrays
-    // NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2
-    if (rlGetVersion() != OPENGL_11)
+    
+    if (vData.vertexCount == 0)
     {
     {
-        free(vData.vertices);
-        free(vData.texcoords);
-        free(vData.normals);
+        TraceLog(WARNING, "Model could not be loaded");
+    }
+    else
+    {
+        // NOTE: model properties (transform, texture, shader) are initialized inside rlglLoadModel()
+        model = rlglLoadModel(vData);     // Upload vertex data to GPU
+
+        // Now that vertex data is uploaded to GPU, we can free arrays
+        // NOTE: We don't need CPU vertex data on OpenGL 3.3 or ES2
+        if (rlGetVersion() != OPENGL_11)
+        {
+            free(vData.vertices);
+            free(vData.texcoords);
+            free(vData.normals);
+        }
     }
     }
 
 
     return model;
     return model;