X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=player_ragdoll.h;h=6f5a33137a8e5a48ef53b21da64d86b1a21555d7;hb=1fd91b77f23ce1593037e01b9abb62859545b400;hp=52c2ec9a20b34f603f1f2bff5dae704ff4bf617a;hpb=22f62f001f21d1b91fefd9fc495c122d9ddf205a;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/player_ragdoll.h b/player_ragdoll.h index 52c2ec9..6f5a331 100644 --- a/player_ragdoll.h +++ b/player_ragdoll.h @@ -33,30 +33,41 @@ struct player_ragdoll{ rb_constr_swingtwist cone_constraints[32]; u32 cone_constraints_count; + /* TODO: Fix duplicated data */ + u32 constraint_associations[32][2]; int shoes[2]; }; static float k_ragdoll_floatyiness = 20.0f, k_ragdoll_floatydrag = 1.0f, - k_ragdoll_limit_scale = 1.0f; + k_ragdoll_limit_scale = 1.0f, + k_ragdoll_spring = 127.0f, + k_ragdoll_dampening = 15.0f, + k_ragdoll_correction = 0.5f, + k_ragdoll_angular_drag = 0.08f, + k_ragdoll_active_threshold = 5.0f; static int k_ragdoll_div = 1, ragdoll_frame = 0, k_ragdoll_debug_collider = 1, k_ragdoll_debug_constraints = 0; +enum player_die_type { + k_player_die_type_generic, + k_player_die_type_head, + k_player_die_type_feet +}; + static void player_ragdoll_init(void); static void player_init_ragdoll_bone_collider( struct skeleton_bone *bone, struct ragdoll_part *rp ); -static u32 ragdoll_bone_parent( struct player_ragdoll *rd, - struct player_avatar *av, u32 bone_id ); -static void player_setup_ragdoll_from_avatar( struct player_ragdoll *rd, - struct player_avatar *av ); -static void copy_ragdoll_pose_to_avatar( struct player_ragdoll *rd, - struct player_avatar *av ); -static void copy_avatar_pose_to_ragdoll( struct player_avatar *av, - struct player_ragdoll *rd, - v3f velocity ); +static u32 ragdoll_bone_parent( struct player_ragdoll *rd, u32 bone_id ); +static void setup_ragdoll_from_skeleton( struct skeleton *sk, + struct player_ragdoll *rd ); +static void copy_ragdoll_pose_to_localplayer( struct player_ragdoll *rd ); +static void copy_localplayer_to_ragdoll( struct player_ragdoll *rd, + enum player_die_type type ); + static void player_debug_ragdoll(void); static void player_ragdoll_iter( struct player_ragdoll *rd );