]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
support up to 4 aim bones
authorRudolf Polzer <divverent@xonotic.org>
Tue, 12 Feb 2013 11:18:05 +0000 (12:18 +0100)
committerRudolf Polzer <divverent@xonotic.org>
Tue, 12 Feb 2013 11:18:05 +0000 (12:18 +0100)
17 files changed:
models/player/erebus.iqm_0.txt
models/player/gak.iqm_0.txt
models/player/gakarmored.iqm_0.txt
models/player/gakmasked.iqm_0.txt
models/player/ignis.iqm_0.txt
models/player/ignishalfmasked.iqm_0.txt
models/player/ignismasked.iqm_0.txt
models/player/megaerebus.iqm_0.txt
models/player/nyx.iqm_0.txt
models/player/pyria.iqm_0.txt
models/player/seraphina.iqm_0.txt
models/player/seraphinamasked.iqm_0.txt
models/player/umbra.iqm_0.txt
qcsrc/client/player_skeleton.qc
qcsrc/client/player_skeleton.qh
qcsrc/common/util.qc
qcsrc/common/util.qh

index 359949d2e4a6d8642f8853b2f3271d49149a9a20..a7fc978538eef13931280184848eb54667a63068 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 105
 age 26
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 160f2ec4ea38e630d2e81fa10201a81881929e2d..ba6faaed723ae719c0594577ca289c2659747409 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 85
 age 16
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 3378343fc69b246e192f682e4e13376011b4897d..c3096b387c97e31f48d4897cf2c23dd3f4b89e78 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 90
 age 20
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 84b27c74eb5110c48e4ae58f2d5a4e9e2f232c05..796da05aabacf8e24cce6252e859f2aa7c4455cc 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 87
 age 18
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index f2b4e3ff3cb1dbbc0a3391edf88b07c907662476..73035425be90470ae1f01647f655b81b9acc0e4e 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 88
 age 31
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 7cd377b31da4524b12d9d90afb182301ee8340dd..e0d82ea74262d1589ab1ce28c9cbf9a0e321d270 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 90
 age 31
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index a4b082c708ba009900f757e9d99bbc733363360a..3db94af41a06ab17ab1af857fb22222781db8dfc 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 92
 age 31
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index e8bbbf10cb5254bdc9c7cd3a1b3a19ca72861337..4097c3b8b7c869dc4d94e6fa35d8fd80b3aef9cd 100644 (file)
@@ -4,7 +4,7 @@ sex Male
 weight 210
 age 26
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 6184efddbc4383754a05f36f527a2e21f4df09e3..385546f123c0f20a67e06ac77f71b38eedc1cc12 100644 (file)
@@ -4,7 +4,7 @@ sex Female
 weight 100
 age 24
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index d18f4b56f256cb0921e3805eed5214504daf967f..f1abbd371a953e81ae9e0c1f4e2e30ad450d9b5c 100644 (file)
@@ -4,7 +4,7 @@ sex Female
 weight 57
 age 53
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 186c4a421b2d6f375b78008eeb3b578f27565e84..530f559e17bbcd4a24149d98e6063bdd74c9bd93 100644 (file)
@@ -4,7 +4,7 @@ sex Female
 weight 89
 age 31
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index b20ef794ad765d9ecc4c944177054526ddbd3149..be15edbaf6cd867fa380d30c91d85ba6ddc839e0 100644 (file)
@@ -4,7 +4,7 @@ sex Female
 weight 90
 age 31
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 0572cb2b346deaa85afbdfa35740731902171877..f20562a9f89853f3c6ba0492913a7978893bccc9 100644 (file)
@@ -4,7 +4,7 @@ sex Female
 weight 61
 age 25
 bone_upperbody spine2
-bone_aim1 1 spine2
+bone_aim0 1 spine2
 bone_weapon bip01 r hand
 fixbone 1
 
index 96879c561cd61528cff66843fdf956749b13053c..fbbbb94a994f0a11d542f10981800db96aab80e0 100644 (file)
@@ -8,6 +8,7 @@
 
 void skeleton_loadinfo(entity e)
 {
+       float i;
        if(e.skeleton_info_modelindex == e.modelindex && e.skeleton_info_skin == e.skin)
                return;
        e.bone_upperbody = 0;
@@ -16,10 +17,11 @@ void skeleton_loadinfo(entity e)
                e.bone_weapon = gettagindex(e, "tag_weapon");
        if(!e.bone_weapon)
                e.bone_weapon = gettagindex(e, "bip01 r hand");
-       e.bone_aim1 = 0;
-       e.bone_aim2 = 0;
-       e.bone_aim1weight = 0;
-       e.bone_aim2weight = 0;
+       for(i = 0; i < MAX_AIM_BONES; ++i)
+       {
+               e.bone_aim[i] = 0;
+               e.bone_aimweight[i] = 0;
+       }
        e.fixbone = 0;
        if(get_model_parameters(e.model, e.skin))
        {
@@ -29,14 +31,13 @@ void skeleton_loadinfo(entity e)
                        e.fixbone = get_model_parameters_fixbone;
                if(get_model_parameters_bone_weapon)
                        e.bone_weapon = gettagindex(e, get_model_parameters_bone_weapon);
-               if(get_model_parameters_bone_aim1)
-                       e.bone_aim1 = gettagindex(e, get_model_parameters_bone_aim1);
-               if(e.bone_aim1)
-                       e.bone_aim1weight = get_model_parameters_bone_aim1weight;
-               if(get_model_parameters_bone_aim2)
-                       e.bone_aim2 = gettagindex(e, get_model_parameters_bone_aim2);
-               if(e.bone_aim2)
-                       e.bone_aim2weight = get_model_parameters_bone_aim2weight;
+               for(i = 0; i < MAX_AIM_BONES; ++i)
+               {
+                       if(get_model_parameters_bone_aim[i])
+                               e.bone_aim[i] = gettagindex(e, get_model_parameters_bone_aim[i]);
+                       if(e.bone_aim[i])
+                               e.bone_aimweight[i] = get_model_parameters_bone_aimweight[i];
+               }
        }
        else
                dprint("No model parameters for ", e.model, "\n");
@@ -99,6 +100,7 @@ void free_skeleton_from_frames(entity e)
 
 void skeleton_from_frames(entity e)
 {
+       float i;
        float m = e.modelindex;
        if(!e.skeletonindex)
        {
@@ -164,23 +166,16 @@ void skeleton_from_frames(entity e)
                skel_set_boneabs(s, e.bone_upperbody, org);
        }
 
-       if(e.bone_aim1)
+       for(i = 0; i < MAX_AIM_BONES; ++i)
        {
-               vector aim = '1 0 0' * bound(-90, self.v_angle_x, 90) * e.bone_aim1weight;
-               vector org = skel_get_boneabs(s, e.bone_aim1);
-               vector ang_cur = fixedvectoangles2(v_forward, v_up);
-               vector ang = AnglesTransform_Multiply(aim, ang_cur);
-               fixedmakevectors(ang);
-               skel_set_boneabs(s, e.bone_aim1, org);
-       }
-
-       if(e.bone_aim2)
-       {
-               vector aim = '1 0 0' * bound(-90, self.v_angle_x, 90) * e.bone_aim2weight;
-               vector org = skel_get_boneabs(s, e.bone_aim2);
-               vector ang_cur = fixedvectoangles2(v_forward, v_up);
-               vector ang = AnglesTransform_Multiply(aim, ang_cur);
-               fixedmakevectors(ang);
-               skel_set_boneabs(s, e.bone_aim2, org);
+               if(e.bone_aim[i])
+               {
+                       vector aim = '1 0 0' * bound(-90, self.v_angle_x, 90) * e.bone_aimweight[i];
+                       vector org = skel_get_boneabs(s, e.bone_aim[i]);
+                       vector ang_cur = fixedvectoangles2(v_forward, v_up);
+                       vector ang = AnglesTransform_Multiply(aim, ang_cur);
+                       fixedmakevectors(ang);
+                       skel_set_boneabs(s, e.bone_aim[i], org);
+               }
        }
 }
index 45023a7b10b241e8ae4c63e8eb994532a04bc10e..047a15671f1e29e51417ee4cb3be37de5d1fa86f 100644 (file)
@@ -4,8 +4,6 @@ void skeleton_loadinfo(entity e);
 
 .float bone_upperbody;
 .float bone_weapon;
-.float bone_aim1;
-.float bone_aim1weight;
-.float bone_aim2;
-.float bone_aim2weight;
+.float bone_aim[MAX_AIM_BONES];
+.float bone_aimweight[MAX_AIM_BONES];
 .float fixbone;
index f6f318c48e46290e14b951a80c2a3cc2d161d554..8f6a9c05c6b83dced5878f492c7e14593e46ed4a 100644 (file)
@@ -2001,7 +2001,7 @@ string get_model_datafilename(string m, float sk, string fil)
 float get_model_parameters(string m, float sk)
 {
        string fn, s, c;
-       float fh;
+       float fh, i;
 
        get_model_parameters_modelname = string_null;
        get_model_parameters_modelskin = -1;
@@ -2013,10 +2013,11 @@ float get_model_parameters(string m, float sk)
        get_model_parameters_desc = string_null;
        get_model_parameters_bone_upperbody = string_null;
        get_model_parameters_bone_weapon = string_null;
-       get_model_parameters_bone_aim1 = string_null;
-       get_model_parameters_bone_aim2 = string_null;
-       get_model_parameters_bone_aim1weight = 0;
-       get_model_parameters_bone_aim2weight = 0;
+       for(i = 0; i < MAX_AIM_BONES; ++i)
+       {
+               get_model_parameters_bone_aim[i] = string_null;
+               get_model_parameters_bone_aimweight[i] = 0;
+       }
        get_model_parameters_fixbone = 0;
 
        if not(m)
@@ -2077,16 +2078,12 @@ float get_model_parameters(string m, float sk)
                        get_model_parameters_bone_upperbody = s;
                if(c == "bone_weapon")
                        get_model_parameters_bone_weapon = s;
-               if(c == "bone_aim1")
-               {
-                       get_model_parameters_bone_aim1weight = stof(car(s));
-                       get_model_parameters_bone_aim1 = cdr(s);
-               }
-               if(c == "bone_aim2")
-               {
-                       get_model_parameters_bone_aim2weight = stof(car(s));
-                       get_model_parameters_bone_aim2 = cdr(s);
-               }
+               for(i = 0; i < MAX_AIM_BONES; ++i)
+                       if(c == strcat("bone_aim", ftos(i)))
+                       {
+                               get_model_parameters_bone_aimweight[i] = stof(car(s));
+                               get_model_parameters_bone_aim[i] = cdr(s);
+                       }
                if(c == "fixbone")
                        get_model_parameters_fixbone = stof(s);
        }
index a406e12426b3f73b0a71e53409ab2323be8f91c0..93a62fcf6db628fa7ce8ff9dce5f1bb58b09868a 100644 (file)
@@ -252,10 +252,9 @@ float get_model_parameters_weight;
 float get_model_parameters_age;
 string get_model_parameters_bone_upperbody;
 string get_model_parameters_bone_weapon;
-string get_model_parameters_bone_aim1;
-float get_model_parameters_bone_aim1weight;
-string get_model_parameters_bone_aim2;
-float get_model_parameters_bone_aim2weight;
+#define MAX_AIM_BONES 4
+string get_model_parameters_bone_aim[MAX_AIM_BONES];
+float get_model_parameters_bone_aimweight[MAX_AIM_BONES];
 float get_model_parameters_fixbone;
 string get_model_parameters_desc;
 float get_model_parameters(string mod, float skn); // call with string_null to clear; skin -1 means mod is the filename of the txt file and is to be split