Implemented correct initialization of batch and positions array

This commit is contained in:
_
2018-04-07 19:37:43 -07:00
parent cc31734e44
commit fb962d2ffe
3 changed files with 61 additions and 4 deletions

View File

@@ -24,6 +24,31 @@ void printmeshheader(struct MeshHeader *mh) {
printf("flags %x\n\n", mh -> flags);
}
void printmeshbatch(struct Batch *b) {
if (b == NULL) {
return;
}
printf("number of vertices %x\n", b -> numVertex);
printf("unknown byte %x\n", b -> uB);
printf("padding %x\n", b -> padding);
printf("offsetPositions %x\n", b -> offsetPositions);
printf("offsetNormals %x\n", b -> offsetNormals);
printf("offsetUVs %x\n", b -> offsetUVs);
printf("offsetBoneIndexes %x\n", b -> offsetBoneIndexes);
printf("offsetBoneWeights %x\n", b -> offsetBoneWeights);
printf("offsets %x\n\n", b -> offsets[0]);
}
void printpositions(struct Positions *p, unsigned int count) {
if (p == NULL) {
return;
}
unsigned int i;
for (i = 0; i < count; i++) {
printf("(%f, %f, %f)\n", (p[i]).x, (p[i]).y, (p[i]).z);
}
}
bool getmeshheader(struct MeshHeader **hs,
unsigned int i,
const char * const filedata) {
@@ -40,3 +65,23 @@ bool getmeshheader(struct MeshHeader **hs,
done = true;
return done;
}
bool getmeshbatch(struct Batch **b,
struct MeshHeader *h,
const char * const filedata) {
bool done = false;
if (b == NULL || h == NULL || filedata == NULL) {
return done;
}
unsigned int offset = h -> offsetBatches;
*b = (struct Batch*)(filedata + offset);
(*b) -> p = (struct Positions*)(filedata + ((*b) -> offsetPositions));
printf("p = %x\n", (*b) -> offsetPositions);
printpositions((*b) -> p, 3);
(*b) -> n = NULL;
(*b) -> u = NULL;
(*b) -> bi = NULL;
(*b) -> bw = NULL;
done = true;
return done;
}