| 25 | namespace mesh_animation_resource_internal |
| 26 | { |
| 27 | static s32 write(MeshAnimation &ma, CompileOptions &opts) |
| 28 | { |
| 29 | MeshAnimationResource mar; |
| 30 | mar.version = RESOURCE_VERSION_MESH_ANIMATION; |
| 31 | mar.num_tracks = hash_map::size(ma.track_ids); |
| 32 | mar.total_time = ma.total_time; |
| 33 | mar.num_keys = array::size(ma.sorted_keys); |
| 34 | mar.keys_offset = sizeof(mar); |
| 35 | mar._pad0 = 0u; |
| 36 | mar.target_skeleton = ma.target_skeleton; |
| 37 | mar.num_bones = array::size(ma.bone_ids); |
| 38 | mar.bone_ids_offset = mar.keys_offset + mar.num_keys * sizeof(AnimationKey); |
| 39 | |
| 40 | opts.write(mar.version); |
| 41 | opts.write(mar.num_tracks); |
| 42 | opts.write(mar.total_time); |
| 43 | opts.write(mar.num_keys); |
| 44 | opts.write(mar.keys_offset); |
| 45 | opts.write(mar._pad0); |
| 46 | opts.write(mar.target_skeleton); |
| 47 | opts.write(mar.num_bones); |
| 48 | opts.write(mar.bone_ids_offset); |
| 49 | |
| 50 | for (u32 i = 0; i < array::size(ma.sorted_keys); ++i) |
| 51 | opts.write(ma.sorted_keys[i]); |
| 52 | |
| 53 | for (u32 i = 0; i < array::size(ma.bone_ids); ++i) |
| 54 | opts.write(ma.bone_ids[i]); |
| 55 | |
| 56 | return 0; |
| 57 | } |
| 58 | |
| 59 | s32 compile(CompileOptions &opts) |
| 60 | { |