{
k_material_flag_skate_surface = 0x1,
k_material_flag_collision = 0x2,
- k_material_flag_grow_grass = 0x4
+ k_material_flag_grow_grass = 0x4,
+ k_material_flag_grind_surface = 0x8
+};
+
+enum bone_flag
+{
+ k_bone_flag_deform = 0x1,
+ k_bone_flag_ik = 0x2,
+ k_bone_flag_collider_box = 0x4,
+ k_bone_flag_collider_capsule = 0x8,
+ k_bone_flag_collider_reserved0 = 0x10,
+ k_bone_flag_collider_reserved1 = 0x20,
+ k_bone_flag_collider_reserved2 = 0x40,
+ k_bone_flag_collider_reserved3 = 0x80,
+ k_bone_flag_collider_any = k_bone_flag_collider_box |
+ k_bone_flag_collider_capsule |
+ k_bone_flag_collider_reserved0 |
+ k_bone_flag_collider_reserved1 |
+ k_bone_flag_collider_reserved2 |
+ k_bone_flag_collider_reserved3,
+ k_bone_flag_cone_constraint = 0x100,
+ k_bone_flag_force_u32 = 0xffffffff
};
#pragma pack(push,1)
struct classtype_bone
{
- u32 deform,
+ u32 flags,
ik_target,
- ik_pole,
- collider,
- use_limits;
+ ik_pole;
- v3f angle_limits[2];
boxf hitbox;
+
+ v3f conevx, conevy, coneva;
+ float conet;
};
struct classtype_skeleton
{
assert( mdl->file );
- u64 size_verts = mdl->info.vertex_count * sizeof(mdl_vert),
- size_index = mdl->info.indice_count * sizeof(u32);
+ u64 size_verts = vg_align8( mdl->info.vertex_count * sizeof(mdl_vert) ),
+ size_index = vg_align8( mdl->info.indice_count * sizeof(u32) );
mdl->vertex_buffer = vg_linear_alloc( lin_alloc, size_verts );
mdl->index_buffer = vg_linear_alloc( lin_alloc, size_index );
if( mdl->info.keyframe_count == 0 )
return;
- u64 size_kf = mdl->info.keyframe_count * sizeof(mdl_keyframe);
+ u64 size_kf = vg_align8( mdl->info.keyframe_count * sizeof(mdl_keyframe) );
mdl->keyframe_buffer = vg_linear_alloc( lin_alloc, size_kf );
fseek( mdl->file, mdl->info.keyframe_offset, SEEK_SET );
if( mdl->info.pack_size == 0 )
return;
- mdl->pack = vg_linear_alloc( lin_alloc, mdl->info.pack_size );
+ mdl->pack = vg_linear_alloc( lin_alloc, vg_align8( mdl->info.pack_size ) );
fseek( mdl->file, mdl->info.pack_offset, SEEK_SET );
u64 l = fread( mdl->pack, mdl->info.pack_size, 1, mdl->file );
mdl_open( &temp_ctx, path );
/* create allocator */
- u32 tot_size = temp_ctx.info.file_length + sizeof( mdl_context );
+ u32 tot_size = temp_ctx.info.file_length + sizeof( mdl_context ) + 64;
void *data = vg_create_linear_allocator( lin_alloc, tot_size,
VG_MEMORY_SYSTEM );