add functions to write out keyframe related chunks
This commit is contained in:
parent
3bbb574ff8
commit
757f3a0666
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Reference in a new issue