+
+struct mdl_keyframe
+{
+ v3f co;
+ v4f q;
+ v3f s;
+};
+
+struct mdl_animation
+{
+ u32 pstr_name,
+ length;
+
+ float rate;
+
+ u32 offset;
+};
+
+struct mdl_file_header
+{
+ u32 identifier, version, file_length, pad0;
+
+ u32
+ node_count, node_offset,
+ submesh_count, submesh_offset,
+ material_count, material_offset,
+ texture_count, texture_offset,
+ anim_count, anim_offset,
+ entdata_size, entdata_offset,
+ strings_size, strings_offset,
+
+ keyframe_count, keyframe_offset,
+
+ vertex_count, vertex_offset,
+ indice_count, indice_offset,
+
+ pack_size, pack_offset;
+};
+
+/*
+ * Entity data structures
+ */
+
+struct classtype_gate
+{
+ u32 target;
+ v3f dims;
+};
+
+struct classtype_spawn
+{
+ u32 pstr_alias;
+};
+
+struct classtype_water
+{
+ u32 temp;
+};
+
+struct classtype_route_node
+{
+ u32 target, target1;
+};
+
+struct classtype_route
+{
+ u32 id_start;
+ u32 pstr_name;
+ v3f colour;
+};
+
+struct classtype_bone
+{
+ u32 flags,
+ ik_target,
+ ik_pole;
+
+ boxf hitbox;
+
+ v3f conevx, conevy, coneva;
+ float conet;
+};
+
+struct classtype_skeleton
+{
+ u32 channels,
+ ik_count,
+ collider_count,
+ anim_start,
+ anim_count;
+};
+
+struct classtype_skin
+{
+ u32 skeleton;
+};
+
+struct classtype_trigger
+{
+ u32 target;
+};
+
+struct classtype_logic_relay
+{
+ u32 targets[4];
+};
+
+struct classtype_logic_achievement
+{
+ u32 pstr_name;
+};
+
+struct classtype_audio
+{
+ u32 pstr_file,
+ flags;
+
+ float volume;
+};
+