added helper method to each chunk struct to calculate it's own size (that is, the size to be written out to mesh files)
This commit is contained in:
parent
80a4c87b92
commit
4d6a8b3c0d
|
@ -21,6 +21,26 @@ struct MaterialsChunk
|
||||||
{
|
{
|
||||||
SAFE_DELETE_ARRAY(materials);
|
SAFE_DELETE_ARRAY(materials);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GetSize()
|
||||||
|
{
|
||||||
|
if (count == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
size_t size = sizeof(uint32_t);
|
||||||
|
for (uint32_t i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
size += materials[i].name.length() + 1; // include null terminator
|
||||||
|
size += sizeof(float) * 4; // ambient
|
||||||
|
size += sizeof(float) * 4; // diffuse
|
||||||
|
size += sizeof(float) * 4; // specular
|
||||||
|
size += sizeof(float) * 4; // emissive
|
||||||
|
size += sizeof(float); // shininess
|
||||||
|
size += sizeof(float); // opacity
|
||||||
|
}
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,6 +21,19 @@ struct NormalsChunk
|
||||||
{
|
{
|
||||||
SAFE_DELETE_ARRAY(normals);
|
SAFE_DELETE_ARRAY(normals);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GetSize()
|
||||||
|
{
|
||||||
|
if (count == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
size_t size = sizeof(uint32_t);
|
||||||
|
size +=
|
||||||
|
(sizeof(float) * 3) // x, y, z
|
||||||
|
* count;
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,6 +21,19 @@ struct TexCoordsChunk
|
||||||
{
|
{
|
||||||
SAFE_DELETE_ARRAY(texCoords);
|
SAFE_DELETE_ARRAY(texCoords);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GetSize()
|
||||||
|
{
|
||||||
|
if (count == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
size_t size = sizeof(uint32_t);
|
||||||
|
size +=
|
||||||
|
(sizeof(float) * 2) // u, v
|
||||||
|
* count;
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,6 +21,23 @@ struct TrianglesChunk
|
||||||
{
|
{
|
||||||
SAFE_DELETE_ARRAY(triangles);
|
SAFE_DELETE_ARRAY(triangles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GetSize()
|
||||||
|
{
|
||||||
|
if (count == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
size_t size = sizeof(uint32_t);
|
||||||
|
size +=
|
||||||
|
(
|
||||||
|
(sizeof(uint32_t) * 3) // vertex indices
|
||||||
|
+ (sizeof(uint32_t) * 3) // normal indices
|
||||||
|
+ (sizeof(uint32_t) * 3) // texcoord indices
|
||||||
|
+ sizeof(uint32_t) // material index
|
||||||
|
) * count;
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,6 +21,19 @@ struct VerticesChunk
|
||||||
{
|
{
|
||||||
SAFE_DELETE_ARRAY(vertices);
|
SAFE_DELETE_ARRAY(vertices);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t GetSize()
|
||||||
|
{
|
||||||
|
if (count == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
size_t size = sizeof(uint32_t);
|
||||||
|
size +=
|
||||||
|
(sizeof(float) * 3) // x, y, z
|
||||||
|
* count;
|
||||||
|
|
||||||
|
return size;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Reference in a new issue