2008年08月05日
ルービックキューブ(その5)
回転の問題は 単純にどんどん回転させることで解決
-----
リセットボタンは希望があったので やはり追加
-----
ただ わざと押しにくくした w
-----
単純に llResetScript だと 装着時の回転の向きを考慮することができないので state で default に戻すことに
-----
装着時の回転の向きの処理は ルートから 5秒毎にルートのローカルローテーションを通知することにした(ちょっとあれだが w)
-----
操作用のパネルは 矢印風にし 見ただけで回転の向きがわかるようにした...
-----
-----
-----
というわけで ひとまず これで 終了(やたら面倒だった w)
-----
というわけで ピースのリストだけ あげとこうかな(ピース毎に default から遷移する state は異なっています)
-----
リセットボタンは希望があったので やはり追加
-----
ただ わざと押しにくくした w
-----
単純に llResetScript だと 装着時の回転の向きを考慮することができないので state で default に戻すことに
-----
装着時の回転の向きの処理は ルートから 5秒毎にルートのローカルローテーションを通知することにした(ちょっとあれだが w)
-----
操作用のパネルは 矢印風にし 見ただけで回転の向きがわかるようにした...
-----
-----
-----
というわけで ひとまず これで 終了(やたら面倒だった w)
-----
というわけで ピースのリストだけ あげとこうかな(ピース毎に default から遷移する state は異なっています)
//
// File: RubiksCube_cube.lsl
// Date Author number of nodes
// 2008/8/5 walkinglint 798
//
integer RR = 0;
integer XH = 1;
integer XB = 2;
integer XT = 3;
integer YH = 4;
integer YB = 5;
integer YT = 6;
integer ZH = 7;
integer ZB = 8;
integer ZT = 9;
integer RST = 10;
integer first = TRUE;
rotation cur_rot;
float pos_factor = 0.10;
float rot_factor = 90.0;
rotation rot;
vector rot_delta;
rotation root_local_rot;
rotation update_rot(vector d) {
cur_rot *= llEuler2Rot(d * rot_factor * DEG_TO_RAD);
if (llGetAttached() == 0) {
return cur_rot / llGetRootRotation();
} else {
return cur_rot / root_local_rot;
}
}
default {
state_entry() {
cur_rot = llEuler2Rot(<0.0, 0.0, 0.0>);
if (first) {
root_local_rot = llEuler2Rot(<0.0, 0.0, 0.0>);
first = FALSE;
}
rot = update_rot(<0, 0, 0>);
state HHH;
}
}
state HHH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, 1, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HTH;
} else {
rot = update_rot(rot_delta);
state HHT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HHT;
} else {
rot = update_rot(rot_delta);
state THH;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state THH;
} else {
rot = update_rot(rot_delta);
state HTH;
}
}
}
}
state HBH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, 0, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HTB;
} else {
rot = update_rot(rot_delta);
state HHB;
}
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HBT;
} else {
rot = update_rot(rot_delta);
state TBH;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state BHH;
} else {
rot = update_rot(rot_delta);
state BTH;
}
}
}
}
state HTH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, -1, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HTT;
} else {
rot = update_rot(rot_delta);
state HHH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HTT;
} else {
rot = update_rot(rot_delta);
state TTH;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HHH;
} else {
rot = update_rot(rot_delta);
state TTH;
}
}
}
}
state HHB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, 1, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HBH;
} else {
rot = update_rot(rot_delta);
state HBT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state BHT;
} else {
rot = update_rot(rot_delta);
state BHH;
}
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state THB;
} else {
rot = update_rot(rot_delta);
state HTB;
}
}
}
}
state HBB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, 0, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
rot = update_rot(rot_delta);
llSetPrimitiveParams([PRIM_ROTATION, rot]);
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state BBT;
} else {
rot = update_rot(rot_delta);
state BBH;
}
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state BHB;
} else {
rot = update_rot(rot_delta);
state BTB;
}
}
}
}
state HTB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, -1, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HBT;
} else {
rot = update_rot(rot_delta);
state HBH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state BTT;
} else {
rot = update_rot(rot_delta);
state BTH;
}
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HHB;
} else {
rot = update_rot(rot_delta);
state TTB;
}
}
}
}
state HHT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, 1, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HHH;
} else {
rot = update_rot(rot_delta);
state HTT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state THT;
} else {
rot = update_rot(rot_delta);
state HHH;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state THT;
} else {
rot = update_rot(rot_delta);
state HTT;
}
}
}
}
state HBT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, 0, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HHB;
} else {
rot = update_rot(rot_delta);
state HTB;
}
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state TBT;
} else {
rot = update_rot(rot_delta);
state HBH;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state BHT;
} else {
rot = update_rot(rot_delta);
state BTT;
}
}
}
}
state HTT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <1, -1, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XH) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state HHT;
} else {
rot = update_rot(rot_delta);
state HTH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state TTT;
} else {
rot = update_rot(rot_delta);
state HTH;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HHT;
} else {
rot = update_rot(rot_delta);
state TTT;
}
}
}
}
state BHH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, 1, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BTH;
} else {
rot = update_rot(rot_delta);
state BHT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HHB;
} else {
rot = update_rot(rot_delta);
state THB;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state TBH;
} else {
rot = update_rot(rot_delta);
state HBH;
}
}
}
}
state BBH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, 0, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BTB;
} else {
rot = update_rot(rot_delta);
state BHB;
}
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HBB;
} else {
rot = update_rot(rot_delta);
state TBB;
}
} else if (num == ZH) {
rot = update_rot(rot_delta);
llSetPrimitiveParams([PRIM_ROTATION, rot]);
}
}
}
state BTH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, -1, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BTT;
} else {
rot = update_rot(rot_delta);
state BHH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HTB;
} else {
rot = update_rot(rot_delta);
state TTB;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HBH;
} else {
rot = update_rot(rot_delta);
state TBH;
}
}
}
}
state BHB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, 1, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BBH;
} else {
rot = update_rot(rot_delta);
state BBT;
}
} else if (num == YH) {
rot = update_rot(rot_delta);
llSetPrimitiveParams([PRIM_ROTATION, rot]);
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state TBB;
} else {
rot = update_rot(rot_delta);
state HBB;
}
}
}
}
state BTB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, -1, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BBT;
} else {
rot = update_rot(rot_delta);
state BBH;
}
} else if (num == YT) {
rot = update_rot(rot_delta);
llSetPrimitiveParams([PRIM_ROTATION, rot]);
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HBB;
} else {
rot = update_rot(rot_delta);
state TBB;
}
}
}
}
state BHT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, 1, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BHH;
} else {
rot = update_rot(rot_delta);
state BTT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state THB;
} else {
rot = update_rot(rot_delta);
state HHB;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state TBT;
} else {
rot = update_rot(rot_delta);
state HBT;
}
}
}
}
state BBT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, 0, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BHB;
} else {
rot = update_rot(rot_delta);
state BTB;
}
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state TBB;
} else {
rot = update_rot(rot_delta);
state HBB;
}
} else if (num == ZT) {
rot = update_rot(rot_delta);
llSetPrimitiveParams([PRIM_ROTATION, rot]);
}
}
}
state BTT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <0, -1, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XB) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state BHT;
} else {
rot = update_rot(rot_delta);
state BTH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state TTB;
} else {
rot = update_rot(rot_delta);
state HTB;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HBT;
} else {
rot = update_rot(rot_delta);
state TBT;
}
}
}
}
state THH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, 1, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state TTH;
} else {
rot = update_rot(rot_delta);
state THT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HHH;
} else {
rot = update_rot(rot_delta);
state THT;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state TTH;
} else {
rot = update_rot(rot_delta);
state HHH;
}
}
}
}
state TBH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, 0, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state TTB;
} else {
rot = update_rot(rot_delta);
state THB;
}
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HBH;
} else {
rot = update_rot(rot_delta);
state TBT;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state BTH;
} else {
rot = update_rot(rot_delta);
state BHH;
}
}
}
}
state TTH {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, -1, 1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state TTT;
} else {
rot = update_rot(rot_delta);
state THH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state HTH;
} else {
rot = update_rot(rot_delta);
state TTT;
}
} else if (num == ZH) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HTH;
} else {
rot = update_rot(rot_delta);
state THH;
}
}
}
}
state THB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, 1, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state TBH;
} else {
rot = update_rot(rot_delta);
state TBT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state BHH;
} else {
rot = update_rot(rot_delta);
state BHT;
}
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state TTB;
} else {
rot = update_rot(rot_delta);
state HHB;
}
}
}
}
state TBB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, 0, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
rot = update_rot(rot_delta);
llSetPrimitiveParams([PRIM_ROTATION, rot]);
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state BBH;
} else {
rot = update_rot(rot_delta);
state BBT;
}
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state BTB;
} else {
rot = update_rot(rot_delta);
state BHB;
}
}
}
}
state TTB {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, -1, 0> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state TBT;
} else {
rot = update_rot(rot_delta);
state TBH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state BTH;
} else {
rot = update_rot(rot_delta);
state BTT;
}
} else if (num == ZB) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HTB;
} else {
rot = update_rot(rot_delta);
state THB;
}
}
}
}
state THT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, 1, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state THH;
} else {
rot = update_rot(rot_delta);
state TTT;
}
} else if (num == YH) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state THH;
} else {
rot = update_rot(rot_delta);
state HHT;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state TTT;
} else {
rot = update_rot(rot_delta);
state HHT;
}
}
}
}
state TBT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, 0, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state THB;
} else {
rot = update_rot(rot_delta);
state TTB;
}
} else if (num == YB) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state TBH;
} else {
rot = update_rot(rot_delta);
state HBT;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state BTT;
} else {
rot = update_rot(rot_delta);
state BHT;
}
}
}
}
state TTT {
state_entry() {
llSetPrimitiveParams([PRIM_POSITION, <-1, -1, -1> * pos_factor, PRIM_ROTATION, rot]);
}
link_message(integer sender_num, integer num, string str, key id) {
rot_delta = (vector)str;
if (num == RR) {
root_local_rot = (rotation)str;
} else if (num == RST) {
state default;
} else if (num == XT) {
if (rot_delta.x == 1) {
rot = update_rot(rot_delta);
state THT;
} else {
rot = update_rot(rot_delta);
state TTH;
}
} else if (num == YT) {
if (rot_delta.y == 1) {
rot = update_rot(rot_delta);
state TTH;
} else {
rot = update_rot(rot_delta);
state HTT;
}
} else if (num == ZT) {
if (rot_delta.z == 1) {
rot = update_rot(rot_delta);
state HTT;
} else {
rot = update_rot(rot_delta);
state THT;
}
}
}
}
Posted by walkinglint at 21:56│Comments(0)
│walking のスクリプティング講座