Yes Second Life

セカンドライフに早9年、現役セカンドライファーの考えてること

LSLの文法「型」

この記事は、セカンドライフ 技術系 Advent Calendarの、10日めの記事です。

いま、消えそうな言語ナンバーワン、LSLの文法について書いていきます。今日のお題は型です。

LSLは、次の型があります。

  • integer(整数型)
  • float(浮動小数点型)
  • string(文字列型)
  • key(識別子型)
  • list (リスト型)
  • vector(ベクトル型)
  • rotation(回転型)

オブジェクト等の固有IDを表す「key型」、オブジェクトの大きさ・速度などを表す「vector型」、回転を表す「rotation型」等が、基本型に含まれてるのが特徴です。

integer型

−2,147,483,648 〜 +2,147,483,647の範囲をあらわす、4バイト整数です。

float型

1.175494351E-38 〜 3.402823466E+38の範囲をあらわす、浮動小数点数です。

string型

ごくごく一般的な文字列型です。「+」記号で連結します。

例:string value = "abc" + "def";

key型

セカンドライフのオブジェクトの識別子などに使われる型。ぶっちゃけUUIDです。

例:key value = "00000000-0000-0000-0000-000000000000";

list型

いわゆるリストです。要素に複数の型を混在させることができます。リストの入れ子はできません。ちなみに、LSLには配列はありません。

例:list value = [ 6, 1.8, "string" ];

vector

float型3つからなる型。3D空間を扱うLSLでは何気に便利な型です。オブジェクトの位置、大きさ、速度なんかを表すのにつかいます。

例:vector value = <1.0, 2.0, 3.0>;

rotation型

回転型です。LSLの回転は4つの数字からなるクォータニオンで表します。クォータニオンはちょっとややこしい概念ですが、この形式にすることで回転の合成などが簡単になります。

例:rotation value = <0.0, 0.0, PI, 1.0>;

まとめ

全体的に、3Dを扱うのに特化した型になってるのがわかるとおもいます。ぼくは経験ないですが、ゲームプログラミングなどをしてると理解しやすいのかもしれません。