From 1ba3b35dc1623e5722e5835dd52044c58f2d809e Mon Sep 17 00:00:00 2001 From: _ <_> Date: Sun, 1 Apr 2018 00:13:30 -0700 Subject: [PATCH] Initial with structs for model format --- devil3model.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 devil3model.c diff --git a/devil3model.c b/devil3model.c new file mode 100644 index 0000000..a02de4c --- /dev/null +++ b/devil3model.c @@ -0,0 +1,75 @@ +#include +#include +#include + +struct Header { + char numMesh; + char unknownNumberB; + char unknownNumberC; + char unknownNumberD; + uint32_t padding; // + uint64_t unknowOffset; +}; + +struct MeshHeaders { + int16_t numBatch; + int16_t numVertex; + uint32_t u; // + uint64_t offsetBatches; + uint64_t flags; +}; // put these in an array of size: [header.numMesh] + +struct Positions { + float x, y, z; +}; + +struct Normals { + float x, y, z; +}; + +struct UVs { + int16_t u, v; +}; + +struct BoneIndexes { + unsigned char indexes[4]; // from ubyte +}; + +struct BoneWeights { + uint16_t weights; // +}; + +// This is where most of the parsing will be. +// this struct is in-order of what the file format wil have. +struct Batch { + int16_t numVertex; + int16_t uB; + uint32_t padding; // + uint64_t offsetPositions; // + uint64_t offsetNormals; // + uint64_t offsetUVs; // + uint64_t offsetBoneIndexes; // + uint64_t offsetBoneWeights; // + uint64_t offsets[1]; // + int64_t pos; // set while parsing batch from ftell(); + // following structs should in an array of size numVertex + struct Positions *p; + struct Normals *n; + struct UVs *u; + struct BoneIndexes *bi; + struct BoneWeights *bw; +}; + +struct Mesh { + struct Batch b; +}; + +// just for now +// need to separate file operation from the lib later +bool readin(const char *fname) { + ; +} + +int main(int argc, char ** argv) { + ; +}