action Picker()
{
var vAngBone1 = 0;
var vAngBone2 = 0;
var vAngBone3 = 0;
var vAngBone4 = 0;
var vAngBone5 = 0;
VECTOR gvTemp2;
ANGLE gvTempAng2;
VECTOR temp, initialDir;
vec_set(temp2, nullvector);
c_setminmax(my);
ent_bonereset_all(my);
vec_for_bone(dir1, my, "bone13");
vec_for_bone(dir2, my, "bone14");
vec_diff(initialDir, dir2, dir1);
vec_to_angle(initialAngle, initialDir);
while(1)
{
my.pan += (key_o - key_p)*time_step*3;
//my.tilt += (key_k - key_l)*time_step*3;
vAngBone1+= (key_cul-key_cur)*3*time_step; // bone1 angle (base pan)
ent_bonereset(my, "bone1");
ent_bonerotate(my,"bone1", vector(vAngBone1, 0, 0)); // rotate bone
vAngBone2+= (key_cud-key_cuu)*3*time_step; // bone2 angle (base arm tilt)
vAngBone2 = clamp(vAngBone2, 0, 80);
ent_bonereset(my, "bone2");
ent_bonerotate(my,"bone2", vector(0, vAngBone2, 0)); // rotate bone
ang_for_bone(gvTempAng, my, "bone3"); // get angle of bone3
ent_bonerotate(my,"bone3", vector(0,-gvTempAng.tilt,0)); // fixed bone angle
vec_for_bone(dir1, my, "bone13");
vec_for_bone(dir2, my, "bone14");
vec_diff(temp, dir2, dir1);
vec_to_angle(curAngle, temp);
vec_diff(temp, curAngle, initialAngle);
ent_bonereset(my, "bone13");
ent_bonerotate(my, "bone13", vector(0,temp.y,0));
// rotate bone 14 in opposite direction:
// vec_diff(temp, initialAngle, curAngle);
ent_bonereset(my, "bone14");
ent_bonerotate(my, "bone14", vector(0,temp.y,0));
wait(1);
}
}