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);
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -21,6 +21,19 @@ struct NormalsChunk
|
|||
{
|
||||
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
|
||||
|
|
|
@ -21,6 +21,19 @@ struct TexCoordsChunk
|
|||
{
|
||||
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
|
||||
|
|
|
@ -21,6 +21,23 @@ struct TrianglesChunk
|
|||
{
|
||||
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
|
||||
|
|
|
@ -21,6 +21,19 @@ struct VerticesChunk
|
|||
{
|
||||
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
|
||||
|
|
Reference in a new issue