わかりやすく構造図を書いてみると、下図のようになる。
それでは順を追って見ていくことにしよう。
(A)「if (change & CHANGED_LINK)」が「真(TRUE)」の場合〜オブジェクトに乗ろう(座ろう)とした時〜
「changed()」イベントは、LSL Portalによると下図のように定義されている。
「changed(integer change)」は、下図のような形式で、「何か変化が加えられたときに、『if』文の{ }内を実行」する。その「変化」とは何か。今回でいえば「CHANGED_LINK」となる。「CHANGED_LINK」より、アバターが座ることで全体のプリム数が変化した時、「///(オレンジ色部分)」が実行されるようになる(「CHANGED_LINK」の内容については、上図にある表を参照)。
実際には、バイクに乗ろうとすると、「もともとのバイクのプリム数+乗ろうとするアバターの数」によってプリムの総数が多くなり、この「changed()」イベントが作動する。
それではアバターがバイクに乗ろうとした時に何が起こるのかを見てみよう。
「if (agent)」:エージェントの存在判定
まず、「key agent = llAvatarOnSitTarget();」によって、「agent」という「key型」の変数を定義する。
「llAvatarOnSitTarget()」はLSL Portalによると、下図のように定義されている。そのため、「agent」という変数には、「『llAvatarOnSitTarget()』が返す、乗ってこようとするアバターのkeyデータ」が代入される(keyデータについては、日本語版LSL Wikiを参照)。
そして、「if (agent)」→「if (llAvatarOnSitTarget())」→「if (keyデータ)」→「if (1)」→「if (TRUE)」となるため、次の段階へ移る。