Second Lifeで気に入ったアイテムの記録です あ、ウソです。スクリプトとか他のことも書いてます

2009/05/02

Link系の関数をもっと使ってみるの3

さて、これまで、タッチ→処理ということでしたが
その処理部分で何ができるかも、少し考えてみます。

ルートから子を操作する関数は今のところ以下の通りです。
llSetLinkAlpha
llSetLinkColor
llSetLinkTexture
llSetLinkPrimitiveParams
※漏れてたら教えてください

まあ、llSetLinkPrimitiveParamsがあるので
かなりのことができます。
ただし、Delayも考えると、単純にllSetLinkPrimitiveParamsだけとはなりませんが。

※蛇足ですが、jiraにはllSetLinkTextを求める声もでています。
"llSetLinkText or a FLOATING_TEXT option for llSetLinkPrimitiveParams"
http://jira.secondlife.com/browse/SVC-2367

でも、お気づきの通り、ルートから子primの情報を取得するための
Get系がありません。これはセキュリティ等が考慮されているのかもしれません。

むりやり、なにか情報をとろうとするとllGetObjectDetailsなんかも
有効なケースもあります。

default
{
state_entry()
{
integer i_lnkno = llGetNumberOfPrims();
list l_detail = [];
for (;i_lnkno>=2;--i_lnkno){
l_detail = llGetObjectDetails(llGetLinkKey(i_lnkno)
,[OBJECT_NAME
,OBJECT_DESC
,OBJECT_POS
,OBJECT_ROT
,OBJECT_VELOCITY
,OBJECT_OWNER
,OBJECT_GROUP
,OBJECT_CREATOR]);
llOwnerSay((string)i_lnkno+":"+llList2CSV(l_detail));
}
}
}

と、まあこんな感じで、あまり有効なものはとれません。
※というか、この部分は半分ネタとしてみてもらってもいいです

こんな時はどうするかってことですが、
初期化時に、ルートから各primの設定を行い
実行中にその状態を更新していくことが考えられます。

処理:ボタンAを押すたびにボタンの色が赤と黒に交互に変わる

【初期化】
ボタンAを黒くする
  →管理用変数に黒をセット
【実行】
ボタンAが押される
  →管理用変数が黒なら赤くする
    →管理用変数を赤に更新
  →管理用変数が赤なら黒くする
    →管理用変数を黒に更新

ちょっとめんどくさそうですが
子prim内で処理する場合でも、llGetColorなどで
いまの色を取得して処理するのではなく
なんらかのフラグで処理しているはずです。
あまり変わりません。

こんなふうにルートから子primの操作も
制限があるとはいえ、工夫次第で可能ですよね。

4に続く

0 コメント: