BlackSheep-LSL@Wiki llGetPrimitiveParams

※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

llGetPrimitiveParams

list llGetPrimitiveParams(list params)

primの属性値を返す。
引数paramsには取得したい属性のリストを指定する。
戻り値は引数に指定した属性に応じたリスト型のデータとなる。

基本的に、buildツールを使って指定可能なprimの設定値は全てこの関数を使用して取得できる。
また、この関数の戻り値を使ってllSetPrimitiveParams?関数を実行すると、buildツールと同様にprimを編集することが可能である。
これはつまりbuildの自動化が実現できることを意味する。
鏡面コピースクリプトなどは、この関数を使ってコピー元のprimの属性値を取得し、必要なパラメータに鏡面変換をかけた後、llSetPrimitiveParams?関数でコピー後のprimを形成する。

引数には以下のようなリストを指定する。

引数 説明 戻り値
[PRIM_BUMP_SHINY, integer face] face面のバンプマップとシャイニングの設定を得る [integer shiny, integer bump]
[PRIM_COLOR, integer face] face面の色と透明度を得る [vector color, float alpha]
[PRIM_FLEXIBLE] フレキシブルの設定値を得る [integer TRUE/FALSE, integer softness, float gravity, float friction, float wind, float tension, vector force]
[PRIM_FULLBRIGHT, integer face] face面のフルブライト設定を得る [integer TRUE/FALSE]
[PRIM_MATERIAL] マテリアル設定を得る [integer material]
[PRIM_PHANTOM] ファントムかどうかを得る [integer TRUE/FALSE]
[PRIM_PHYSICS] 物理オブジェクトかどうかを得る [integer TRUE/FALSE]
[PRIM_POINT_LIGHT] ライトの設定値を得る [integer TRUE/FALSE, vector color, float intensity, float radius, float falloff]
[PRIM_POSITION] 位置を得る [vector position]
[PRIM_ROTATION] 回転を得る [rotation rot]
[PRIM_SIZE] サイズを得る [vector size]
[PRIM_TEMP_ON_REZ] tempオブジェクトかどうかを得る [integer TRUE/FALSE]
[PRIM_TYPE] primの基本設定値を得る [integer primtype,...prim計上によって戻り値リストの配列は異なる]
[PRIM_TEXGEN, integer face] face面のテクスチャマッピングモードを得る [integer texgen]
[PRIM_TEXTURE, integer face] face面のテクスチャ情報を得る [( string name OR key uuid ), vector repeats, vector offsets, float rotation]

各属性値の詳しい内容についてはllSetPrimitiveParams?関数の説明を参照。

引数には複数のパラメータの組み合わせを指定することが可能である。

例えば、物理属性とtemp属性、さらにファントム属性をまとめて確認したい場合は、引数リストに
 [PRIM_PHYSICS,PRIM_TEMP_ON_REZ,PRIM_PHANTOM]
を指定する。

default {
  touch_start(integer detected){
    list p = llGetPrimitiveParams([PRIM_PHYSICS,PRIM_TEMP_ON_REZ,PRIM_PHANTOM]);
    string msg;
    if (llList2Integer(p,0)){
      msg = "PHYSICS:ON / ";
    }else{
      msg = "PHYSICS:OFF / ";
    }
    if (llList2Integer(p,1)){
      msg = "TEMP:ON / ";
    }else{
      msg = "TEMP:OFF / ";
    }
    if (llList2Integer(p,2)){
      msg = "PHANTOM:ON";
    }else{
      msg = "PHANTOM:OFF";
    }
    llSay(0, msg);
  }
}

名前:
コメント: