add functions to write out keyframe related chunks

This commit is contained in:
gered 2011-04-24 20:19:05 -04:00
parent 3bbb574ff8
commit 757f3a0666
2 changed files with 80 additions and 0 deletions

View file

@ -138,3 +138,77 @@ void WriteChunk(TrianglesChunk *chunk, FILE *fp)
fwrite(&t->materialIndex, sizeof(uint32_t), 1, fp);
}
}
void WriteChunk(KeyFramesChunk *chunk, FILE *fp)
{
uint32_t size = chunk->GetSize();
if (size == 0)
return;
fputs("KFR", fp);
fwrite(&size, 4, 1, fp);
uint32_t count = chunk->GetCount();
fwrite(&count, 4, 1, fp);
for (uint32_t i = 0; i < count; ++i)
{
KeyFrame *f = &chunk->frames[i];
fwrite(&f->vertex.x, sizeof(float), 1, fp);
fwrite(&f->vertex.y, sizeof(float), 1, fp);
fwrite(&f->vertex.z, sizeof(float), 1, fp);
fwrite(&f->normal.x, sizeof(float), 1, fp);
fwrite(&f->normal.y, sizeof(float), 1, fp);
fwrite(&f->normal.z, sizeof(float), 1, fp);
}
}
void WriteChunk(KeyFrameTrianglesChunk *chunk, FILE *fp)
{
uint32_t size = chunk->GetSize();
if (size == 0)
return;
fputs("KTR", fp);
fwrite(&size, 4, 1, fp);
uint32_t count = chunk->GetCount();
fwrite(&count, 4, 1, fp);
for (uint32_t i = 0; i < count; ++i)
{
KeyFrameTriangle *t = &chunk->triangles[i];
fwrite(&t->vertices[0], 4, 1, fp);
fwrite(&t->vertices[1], 4, 1, fp);
fwrite(&t->vertices[2], 4, 1, fp);
fwrite(&t->texCoords[0], 4, 1, fp);
fwrite(&t->texCoords[1], 4, 1, fp);
fwrite(&t->texCoords[2], 4, 1, fp);
}
}
void WriteChunk(AnimationsChunk *chunk, FILE *fp)
{
uint32_t size = chunk->GetSize();
if (size == 0)
return;
fputs("ANI", fp);
fwrite(&size, 4, 1, fp);
uint32_t count = chunk->GetCount();
fwrite(&count, 4, 1, fp);
for (uint32_t i = 0; i < count; ++i)
{
AnimationSequence *a = &chunk->animations[i];
fwrite(a->name.c_str(), a->name.length(), 1, fp);
char ch = '\0';
fwrite(&ch, 1, 1, fp);
fwrite(&a->start, 4, 1, fp);
fwrite(&a->end, 4, 1, fp);
}
}

View file

@ -13,11 +13,17 @@ void WriteFileHeader(FILE *fp);
#include "texcoords.h"
#include "materials.h"
#include "triangles.h"
#include "keyframes.h"
#include "keyframetriangles.h"
#include "animations.h"
void WriteChunk(VerticesChunk *chunk, FILE *fp);
void WriteChunk(NormalsChunk *chunk, FILE *fp);
void WriteChunk(TexCoordsChunk *chunk, FILE *fp);
void WriteChunk(MaterialsChunk *chunk, FILE *fp);
void WriteChunk(TrianglesChunk *chunk, FILE *fp);
void WriteChunk(KeyFramesChunk *chunk, FILE *fp);
void WriteChunk(KeyFrameTrianglesChunk *chunk, FILE *fp);
void WriteChunk(AnimationsChunk *chunk, FILE *fp);
#endif