2012/06/16

むふふなHUD


むふふ商品を使うときに、チャットでタイプするのが面倒なら、HUD(ヘッドアップディスプレイ)を使ってマウスのクリック(タッチ)だけですます方法もあります。

写真のようなものを装着すると、画面上中央のように見えます。
そのマークをタッチするというのは、装着したオブジェクトをタッチしているわけです。

HUDのスクリプトでは、タッチした面の面番号に割当てたマークを、専用のチャンネルでむふふ商品に伝えます。
default {
  touch_start(integer num_detected) {
    string mark = llList2String( Marks,
        llDetectedTouchFace(0) );
        // タッチした面に対応するマーク
    string message = (string)llGetOwner()+":"+mark;
      // 所有者キーと一緒に送る(万一の混線防止)
    llWhisper( HUDchannel, message );
  }
}
むふふ商品側では、それを聞いて、角度を変えたり変形させたりするわけです。
実際のスクリプトはチャットも聞きますが、ここでは省略しています。
default {
 state_entry() {
  llListen( HUDchannel, HUDname, NULL_KEY, "" );
      // HUD専用チャンネルで連絡を待つ
 }
 listen( integer channel, string name, key id, string message ) {
  string s;
  integer n = 1;
  if ( channel == HudChannel ) { // HUDチャンネルから聞こえた
   list info = llParseString2List( message, [":"], [] );
   if ( llGetOwner() != llList2Key(info,0) ) return; // 混線防止
   s = llGetSubString(llList2String(info,1),0,0);
  }
  // (角度変更部分も省略)
  else if ( s == "*" ) { // 「*」マークなら
   llMessageLinked(LINK_THIS,Transform, // 変形スクリプトに連絡
     "Transform:" + (string)TransSteps, NULL_KEY);
  }
 }
}