nuclear@1: #ifndef CHUNK_H_ nuclear@1: #define CHUNK_H_ nuclear@1: nuclear@1: enum { nuclear@1: CNK_INVALID, // this shouldn't appear in files nuclear@1: CNK_SCENE, // the root chunk nuclear@1: nuclear@1: // general purpose chunks nuclear@1: CNK_INT, nuclear@1: CNK_UINT, nuclear@1: CNK_FLOAT, nuclear@1: CNK_VEC3, nuclear@1: CNK_VEC4, nuclear@1: CNK_STRING, nuclear@1: nuclear@1: // --- first level chunks --- nuclear@1: // children of CNK_SCENE nuclear@1: CNK_ENV, // environmental parameters nuclear@1: CNK_MTL_LIST, // material library nuclear@1: CNK_MESH_LIST, // all the meshes hang under this chunk nuclear@1: CNK_LIGHT_LIST, // likewise for lights nuclear@1: CNK_CAMERA_LIST, // likewise for cameras nuclear@1: CNK_NODE_LIST, // likewise for nodes nuclear@1: CNK_ANIM_LIST, // all animations nuclear@1: nuclear@1: // --- second level chunks --- nuclear@1: // children of CNK_ENV nuclear@1: CNK_ENV_AMBIENT, // ambient color, contains a single CNK_VEC3 nuclear@1: CNK_ENV_FOG, nuclear@1: nuclear@1: // children of CNK_*_LIST nuclear@1: CNK_MTL, nuclear@1: CNK_MESH, nuclear@1: CNK_LIGHT, nuclear@1: CNK_CAMERA, nuclear@1: CNK_NODE, nuclear@1: nuclear@1: // --- third level chunks --- nuclear@1: // children of CNK_FOG nuclear@1: CNK_FOG_COLOR, // fog color, contains a single CNK_VEC3 nuclear@1: CNK_FOG_EXP, // fog exponent, contains a single CNK_REAL nuclear@1: nuclear@1: // children of CNK_MTL nuclear@1: CNK_MTL_ATTR, // material attribute, has a CNK_STRING for its name, nuclear@1: // a CNK_MTL_ATTR_VAL, and optionally a CNK_MTL_ATTR_MAP nuclear@1: // children of CNK_MTL_ATTR nuclear@1: CNK_MTL_ATTR_VAL, // can have a single CNK_FLOAT, CNK_VEC3, or CNK_VEC4 nuclear@1: CNK_MTL_ATTR_MAP, // has a single CNK_STRING nuclear@1: nuclear@1: // children of CNK_MESH nuclear@1: // TODO... nuclear@1: }; nuclear@1: nuclear@1: struct ChunkHeader { nuclear@1: uint32_t id; nuclear@1: uint32_t size; nuclear@1: }; nuclear@1: nuclear@1: struct Chunk { nuclear@1: ChunkHeader hdr; nuclear@1: char data[1]; nuclear@1: }; nuclear@1: nuclear@1: #endif // CHUNK_H_