LScriptメモ

環境

WindowsXP
lightwave[8]

注意

日本語はコメントでもだめ

書式

C言語に近い

モデラー用LScriptと、レイアウト用LScriptの違い

  • モデラー用LScriptは、main()関数からスタートする
  • レイアウト用lscriptは、generic()関数からスタートする

Hello World

main
{
	info(“Hello World”);
}

ベクトル型

ベクトルはカンマで区切った三つの数値データタイプの値を、
小なり記号(<)と大なり記号(>)で囲み、一つの型として表す

<1.9, -2.4, 0.23>

関数形式

関数名: 引数1, 引数2...
{
	...
}

配列引数

関数に配列を渡す場合、@で囲む

// 垂直選択リストを作成
c1 = ctlchoice(“Quadrant?”,choice,@”90”,”180”,”270”@,true);

この場合、”90”,”180”,”270”を3つ目の引数にしている

ツール

LScriptエディタ

C:\LightWave_8\Programs\lsed
構文チェックや、強調表示が可能。日本語に対応していない?

LScriptインターフェースデザイナ

C:\LightWave_8\Programs\lsid
リクエスタのレイアウトを作成できる

リクエス

ユーザーに何か入力を促すパネルのこと

リクエスタ使用例
// リクエスタの開始の宣言
reqbegin("<Requester Title>");

// コントロールをリクエスタに追加する
c0 = ctlinteger("Integer Control",1);
c1 = ctlnumber("Number Control",1.0);
c2 = ctlstring("String Control","my string");
c3 = ctlcheckbox("Checkbox Control",true);
c4 = ctlpopup("Popup control",1,@"Item 1","Item 2","Item 3"@);
c5 = ctlchoice("Choice Control",1,@"X","Y","Z"@);

// リクエスタの終了チェック(OK/Cancelのチェック)
return if !reqpost();

// リクエスタモードを終了する
reqend();

閉じる前に
Width = getvalue(c0);
といった感じで変数に入力されたパラメータを渡す

ファイルの読み込み

file = "c:\\test.lws"; //日本語ファイル名はNG?
f = File(file,"r") || error("can't open file: '",file,"'");
// メソッドの値を表示
info("Linecount: ", f.linecount());
// 開始行を読み込んで表示
line1 = f.read();
info("line1: ", line1);
// 次の行を読み込んで表示
line2 = f.read();
info("line2: ", line2);

ファイルの書き込み

file = "c:\\test.lws"; //日本語ファイル名はNG?
f = File(file,"w") || error("can't open file: '",file,"'");
f.writeln(integer, 10);
f.writeln(string, "20");

リクエスタに直接描く

main
{
	reqbegin("graphics test");
	reqsize(600, 400); // リクエスタのサイズを指定する
	reqredraw("req_redraw"); // 再描画時のコールバックを指定する
	return if !reqpost();
	reqend();
}

// 再描画時のコールバック
req_redraw
{
	drawbox(<255, 0, 0>, 10, 10, 50, 50); // 箱
	drawtext("draw text", <0 , 255, 0>, 200, 10); // テキスト
	drawline(<0, 0, 255>, 100, 100, 150, 150); // 線
}