diff --git a/src/external/vox_loader.h b/src/external/vox_loader.h index 70d62720..f199a333 100644 --- a/src/external/vox_loader.h +++ b/src/external/vox_loader.h @@ -42,6 +42,7 @@ revision history: Removed Raylib dependencies Changed Vox_LoadFileName to Vox_LoadFromMemory 1.02 (2021-09-10) @raysan5: Reviewed some formating + 1.03 (2021-10-02) @catmanl: Reduce warnings on gcc */ @@ -80,11 +81,6 @@ typedef struct { float x, y, z; } VoxVector3; -typedef struct { - int* array; - int used, size; -} ArrayInt; - typedef struct { VoxVector3* array; int used, size; @@ -142,7 +138,7 @@ extern "C" { // Prevents name mangling of functions #endif // Functions -int Vox_LoadFromMemory(const unsigned char* pvoxData, unsigned int voxDataSize, VoxArray3D* pvoxarray); +int Vox_LoadFromMemory(unsigned char* pvoxData, unsigned int voxDataSize, VoxArray3D* pvoxarray); void Vox_FreeArrays(VoxArray3D* voxarray); #ifdef __cplusplus @@ -161,35 +157,6 @@ void Vox_FreeArrays(VoxArray3D* voxarray); #ifdef VOX_LOADER_IMPLEMENTATION -///////////////////////////////////////////////////////////////////////////////////////////// -// ArrayInt helper -///////////////////////////////////////////////////////////////////////////////////////////// - -static void initArrayInt(ArrayInt* a, int initialSize) -{ - a->array = VOX_MALLOC(initialSize * sizeof(int)); - a->used = 0; - a->size = initialSize; -} - -static void insertArrayInt(ArrayInt* a, int element) -{ - if (a->used == a->size) - { - a->size *= 2; - a->array = VOX_REALLOC(a->array, a->size * sizeof(int)); - } - - a->array[a->used++] = element; -} - -static void freeArrayInt(ArrayInt* a) -{ - VOX_FREE(a->array); - a->array = NULL; - a->used = a->size = 0; -} - ///////////////////////////////////////////////////////////////////////////////////////////// // ArrayUShort helper ///////////////////////////////////////////////////////////////////////////////////////////// @@ -560,7 +527,7 @@ static void Vox_Build_Voxel(VoxArray3D* pvoxArray, int x, int y, int z, int matI } // MagicaVoxel *.vox file format Loader -int Vox_LoadFromMemory(const unsigned char* pvoxData, unsigned int voxDataSize, VoxArray3D* pvoxarray) +int Vox_LoadFromMemory(unsigned char* pvoxData, unsigned int voxDataSize, VoxArray3D* pvoxarray) { ////////////////////////////////////////////////// //Read VOX file @@ -607,8 +574,6 @@ int Vox_LoadFromMemory(const unsigned char* pvoxData, unsigned int voxDataSize, unsigned long sizeX, sizeY, sizeZ; sizeX = sizeY = sizeZ = 0; unsigned long numVoxels = 0; - int offsetX, offsetY, offsetZ; - offsetX = offsetY = offsetZ = 0; while (fileDataPtr < endfileDataPtr) { @@ -620,9 +585,6 @@ int Vox_LoadFromMemory(const unsigned char* pvoxData, unsigned int voxDataSize, unsigned long chunkSize = *((unsigned long*)fileDataPtr); fileDataPtr += sizeof(unsigned long); - unsigned long chunkTotalChildSize = *((unsigned long*)fileDataPtr); - fileDataPtr += sizeof(unsigned long); - if (strcmp(szChunkName, "SIZE") == 0) { //(4 bytes x 3 : x, y, z ) diff --git a/src/rmodels.c b/src/rmodels.c index 8ccd26b5..11778901 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -5745,8 +5745,18 @@ static Model LoadVOX(const char *fileName) int verticesRemain = voxarray.vertices.used; int verticesMax = 65532; // 5461 voxels x 12 vertices per voxel -> 65532 (must be inf 65536) - Vector3 *pvertices = voxarray.vertices.array; // 6*4 = 12 vertices per voxel - Color *pcolors = voxarray.colors.array; + // 6*4 = 12 vertices per voxel + Vector3 *pvertices = { 0 }; + pvertices->x = voxarray.vertices.array->x; + pvertices->y = voxarray.vertices.array->y; + pvertices->z = voxarray.vertices.array->z; + + Color *pcolors = { 0 }; + pcolors->r = voxarray.colors.array->r; + pcolors->g = voxarray.colors.array->g; + pcolors->b = voxarray.colors.array->b; + pcolors->a = voxarray.colors.array->a; + unsigned short *pindices = voxarray.indices.array; // 5461*6*6 = 196596 indices max per mesh int size = 0;