diff --git a/MeshConverter/MeshConverter.vcxproj b/MeshConverter/MeshConverter.vcxproj
index dab0dc9..ec1cf63 100644
--- a/MeshConverter/MeshConverter.vcxproj
+++ b/MeshConverter/MeshConverter.vcxproj
@@ -89,9 +89,13 @@
+
+
+
+
@@ -99,6 +103,8 @@
+
+
diff --git a/MeshConverter/src/assets/animationsequence.h b/MeshConverter/src/assets/animationsequence.h
new file mode 100644
index 0000000..e68aff3
--- /dev/null
+++ b/MeshConverter/src/assets/animationsequence.h
@@ -0,0 +1,15 @@
+#ifndef __ASSETS_ANIMATIONSEQUENCE_H_INCLUDED__
+#define __ASSETS_ANIMATIONSEQUENCE_H_INCLUDED__
+
+#include "../common.h"
+#include
+
+class AnimationSequence
+{
+public:
+ std::string name;
+ uint32_t start;
+ uint32_t end;
+};
+
+#endif
diff --git a/MeshConverter/src/chunks/animations.h b/MeshConverter/src/chunks/animations.h
new file mode 100644
index 0000000..cdca650
--- /dev/null
+++ b/MeshConverter/src/chunks/animations.h
@@ -0,0 +1,33 @@
+#ifndef __CHUNKS_ANIMATIONS_H_INCLUDED__
+#define __CHUNKS_ANIMATIONS_H_INCLUDED__
+
+#include "../common.h"
+#include "../assets/animationsequence.h"
+#include
+
+struct AnimationsChunk
+{
+ std::vector animations;
+
+ uint32_t GetCount()
+ {
+ return animations.size();
+ }
+
+ uint32_t GetSize()
+ {
+ if (animations.size() == 0)
+ return 0;
+
+ uint32_t size = sizeof(uint32_t);
+ for (uint32_t i = 0; i < animations.size(); ++i)
+ {
+ size += animations[i].name.length() + 1; // include null terminator
+ size += sizeof(uint32_t) * 2 // start + end
+ }
+
+ return size;
+ }
+};
+
+#endif
diff --git a/MeshConverter/src/chunks/keyframes.h b/MeshConverter/src/chunks/keyframes.h
new file mode 100644
index 0000000..d41fd10
--- /dev/null
+++ b/MeshConverter/src/chunks/keyframes.h
@@ -0,0 +1,33 @@
+#ifndef __CHUNKS_KEYFRAMES_H_INCLUDED__
+#define __CHUNKS_KEYFRAMES_H_INCLUDED__
+
+#include "../common.h"
+#include "../geometry/keyframe.h"
+#include
+
+struct KeyFramesChunk
+{
+ std::vector frames;
+
+ uint32_t GetCount()
+ {
+ return frames.size();
+ }
+
+ uint32_t GetSize()
+ {
+ if (frames.size() == 0)
+ return 0;
+
+ uint32_t size = sizeof(uint32_t);
+ size +=
+ (
+ (sizeof(float) * 3) // vertex
+ + (sizeof(float) * 3) // normal
+ ) * frames.size();
+
+ return size;
+ }
+};
+
+#endif
diff --git a/MeshConverter/src/chunks/keyframetriangles.h b/MeshConverter/src/chunks/keyframetriangles.h
new file mode 100644
index 0000000..948c40e
--- /dev/null
+++ b/MeshConverter/src/chunks/keyframetriangles.h
@@ -0,0 +1,33 @@
+#ifndef __CHUNKS_KEYFRAMETRIANGLES_H_INCLUDED__
+#define __CHUNKS_KEYFRAMETRIANGLES_H_INCLUDED__
+
+#include "../common.h"
+#include "../geometry/keyframetriangle.h"
+#include
+
+struct KeyFrameTrianglesChunk
+{
+ std::vector triangles;
+
+ uint32_t GetCount()
+ {
+ return triangles.size();
+ }
+
+ uint32_t GetSize()
+ {
+ if (triangles.size() == 0)
+ return 0;
+
+ uint32_t size = sizeof(uint32_t);
+ size +=
+ (
+ (sizeof(uint32_t) * 3) // vertex indices
+ + (sizeof(uint32_t) * 3) // texcoord indices
+ ) * triangles.size();
+
+ return size;
+ }
+};
+
+#endif
diff --git a/MeshConverter/src/geometry/keyframe.h b/MeshConverter/src/geometry/keyframe.h
new file mode 100644
index 0000000..be576e4
--- /dev/null
+++ b/MeshConverter/src/geometry/keyframe.h
@@ -0,0 +1,13 @@
+#ifndef __GEOMETRY_KEYFRAME_H_INCLUDED__
+#define __GEOMETRY_KEYFRAME_H_INCLUDED__
+
+#include "vector3.h"
+
+class KeyFrame
+{
+public:
+ Vector3 vertex;
+ Vector3 normal;
+};
+
+#endif
diff --git a/MeshConverter/src/geometry/keyframetriangle.h b/MeshConverter/src/geometry/keyframetriangle.h
new file mode 100644
index 0000000..387da8e
--- /dev/null
+++ b/MeshConverter/src/geometry/keyframetriangle.h
@@ -0,0 +1,13 @@
+#ifndef __GEOMETRY_KEYFRAMETRIANGLE_H_INCLUDED__
+#define __GEOMETRY_KEYFRAMETRIANGLE_H_INCLUDED__
+
+#include "../common.h"
+
+class KeyFrameTriangle
+{
+public:
+ uint32_t vertices[3];
+ uint32_t texCoords[3];
+};
+
+#endif