model-switch

概要

プラグインの外観設定などに利用できる選択肢を定義します。

生成規則

model-switch ::=
DefineSwitch string{
    ( GroupCommon = string; )opt cond
    ( Entry = string; )1+
}

解説

DefineSwitch

直後にスイッチ名を指定します。スイッチ名は、ひとつのプラグイン内で固有のものでなければなりません。スイッチ名には予約されているものもあります。詳しくは下記をご覧ください。

GroupCommon

車輌プラグインでのみ有効です。ここで指定した識別子が一致するスイッチは、同じ編成の中で共通の値を持ちます。例えば方向幕など、編成の各車輌で共通になるオプションを一括して設定できるようにするために指定します。識別子が同じであれば、異なる車輌プラグインの間でもスイッチの値が共通になります。このとき、スイッチの選択肢の数や意味は、複数の車輌プラグインの間で統一されていなければならないので気をつけてください。

Entry

スイッチの選択肢を列挙します。初期選択肢は最初に定義されたものになります。

スイッチの選択肢には番号が割り振られ、この番号はスイッチを実際に適用する際に使用されます。番号は選択肢を定義した順番に 0, 1, 2, ... となります。1 からではなく 0 から始まるので注意してください。例えば、選択肢を 5 個設定した場合には、5 個目の選択肢に対応する番号は 4 となります。

システムスイッチ

モデルプラグインごとに作成できるユーザー定義スイッチのほかに、システム側で用意される特殊なスイッチがあります。各システムスイッチの機能を以下に示します。

"_FRONT"

車輌プラグインでのみ有効です。車輌の前方 (Z 軸正方向) が進行方向と一致していれば 0、それ以外は 1 となります。

"_CONNECT1"

車輌プラグインでのみ有効です。車輌の前方に別の車輌が連結されていれば 1、それ以外は 0 となります。

"_CONNECT2"

同じく、車輌の後方に別の車輌が連結されていれば 1、それ以外は 0 となります。

"_DOOR1"

車輌プラグインでのみ有効です。車輌の Z 軸正方向を前方とし、列車がホームに停車して左側のドアを開くことを示します。そのとき左側のドアを開くべきなら 1、そうでなければ 0 となります。このスイッチと static-mover 等のカスタマイザを使用してドア開閉のアニメーションを作ることができます。

"_DOOR2"

同じく、右側のドアを開くべきなら 1、そうでなければ 0 となります。

"_SERIAL"

車輌プラグインと地形プラグインでのみ有効です。車輌プラグインの場合はその車輌が属する編成の番号、地形プラグインの場合はその地形が使われているシーンの番号がセットされます。番号は 1 からではなく 0 から数えられます。

"_CAMDIST"

視野角 45°における、視点からユニットまでの距離に相当する値がメートル単位でセットされます。小数点以下は四捨五入されます。この値は、オブジェクトがある程度視点から離れた場合に、簡単なモデルに切り替えることで軽量化を図るために使用できます。視野角が x = 45°の場合は視点からの距離そのものになりますが、視野角が狭くなるほど tan(x/2) に比例して値は小さくなり、画面上の見かけの大きさにほぼ比例する値となります。距離の基準となる座標はプラグイン内の個々のオブジェクトではなく、例えば施設の場合は施設を設置した座標というように、ユニットごとに共通の値となります。

"_VELOCITY"

車輌プラグインでのみ有効です。そのときの車輌の速度がセットされます。単位は [km/h] です。値は進行方向に関わらず正となります。小数点以下は四捨五入されます。

"_ACCEL"

車輌プラグインでのみ有効です。そのときの車輌の加減速度がセットされます。単位は [m/h/s] です。値は加速時は正、減速時は負となります。小数点以下は四捨五入されます。

"_CABINVIEW"

車輌プラグインでのみ有効です。その車輌で運転席視点モードが有効になっているとき 1 がセットされます。それ以外は 0 になります。運転台を表現する場合等に使用します。

"_APPROACH1"

駅舎プラグインでのみ有効です。プラットフォームに、プラットフォームが定義された方向と同じ方向に列車が停車・通過・接近している場合に、プラットフォーム番号に対応するビットが 1 になります。Stoppable で停車できないように設定されたプラットフォームにも対応します。スイッチは 32 ビットなので、32 本のプラットフォームまでしか調べられません。例えば、5 番目のプラットフォームに定義と同じ方向に列車が接近しているかどうかを調べるには、("_APPROACH1">>4)&1 とします。列車が「接近している」の定義は、その列車の減速度でその位置・速度から停車できる最小範囲にプラットフォームが入っていること、になります。このスイッチは、停車できないプラットフォームを使って踏切を作る場合などに利用できます。

"_APPROACH2"

上と同様に、プラットフォームが定義された方向と逆の方向に列車が停車・通過・接近している場合に、プラットフォーム番号に対応するビットが 1 になります。例えば、7 番目のプラットフォームにいずれかの方向から列車が接近しているかどうかを調べるには、(("_APPROACH1"|"_APPROACH2")>>6)&1 とします。

"_STOPPING"

上と同じく、プラットフォームに列車が停車しているかどうかが設定されます。停車と見なされるのはドアを開き始めるタイミングからドアを閉じ始めるタイミングまでですので、プラットフォーム側にもドアを設けたい場合に使用できます。ただし、この場合編成の車輌数やドア間隔などの調整が重要です。このスイッチのビットが 1 ならば、"_APPROACH1", "_APPROACH2" のいずれかのうち対応するビットも必ず 1 になります。

"_NIGHT"

現在の時刻が昼なら 0、夜なら 1 になります。

"_WEATHER"

現在の天気を示すスイッチとなる予定です (未実装)。

"_SEASON"

現在の季節が春 (3〜5 月) なら 0、夏 (6〜8 月) なら 1、秋 (9〜11 月) なら 2、冬 (12〜2 月) なら 3 になります。なお、環境プラグインの設定により緯度が負に設定されている場合、つまり南半球では季節が逆転します。

"_SHADOW"

システムのオプション設定で影が ON になっていれば 1、それ以外は 0 となります。プラグイン側のテクスチャの影の表現を、システムによる影が OFF の場合のみ有効にしたい場合などに使用します。

"_ENVMAP"

システムのオプション設定で環境マッピングが ON になっていれば 1、それ以外は 0 となります。プラグイン側のテクスチャの反射の表現を、システムによる環境マッピングが OFF の場合のみ有効にしたい場合などに使用します。

"_YEAR"

ゲーム内の年がセットされます。

"_MONTH"

ゲーム内の月がセットされます。

"_DAY"

ゲーム内の日がセットされます。

"_DAYOFWEEK"

ゲーム内の曜日がセットされます。日、月、火…が 0、1、2…に対応します。

"_HOUR"

ゲーム内の時がセットされます。

"_MINUTE"

ゲーム内の分がセットされます。

"_SECOND"

ゲーム内の秒がセットされます。

▲SecTop | ▲PageTop
Copyright (c) 2003-2007 インターネット停留所