+void skeleton_loadinfo(entity e)
+{
+ if(e.skeleton_info_modelindex == e.modelindex && e.skeleton_info_skin == e.skin)
+ return;
+ e.bone_upperbody = 0;
+ e.bone_weapon = gettagindex(e, "weapon");
+ if(!e.bone_weapon)
+ e.bone_weapon = gettagindex(e, "tag_weapon");
+ if(!e.bone_weapon)
+ e.bone_weapon = gettagindex(e, "bip01 r hand");
+ e.fixbone = 0;
+ if(get_model_parameters(e.model, e.skin))
+ {
+ if(get_model_parameters_bone_upperbody)
+ e.bone_upperbody = gettagindex(e, get_model_parameters_bone_upperbody);
+ if(get_model_parameters_bone_weapon)
+ e.bone_weapon = gettagindex(e, get_model_parameters_bone_weapon);
+ e.fixbone = get_model_parameters_fixbone;
+ }
+ else
+ dprint("No model parameters for ", e.model, "\n");
+ dprint(e.model, " uses ", ftos(e.bone_upperbody), " ", ftos(e.fixbone), "\n");
+ get_model_parameters(string_null, 0);
+ e.skeleton_info_modelindex = e.modelindex;
+ e.skeleton_info_skin = e.skin;
+ if(e.skeletonindex)
+ {
+ skel_delete(e.skeletonindex);
+ e.skeletonindex = 0;
+ }
+}
+
+void skeleton_markbones(entity e)