---*---*---*---
「センサーチェーン構造」とは、あるセンサーが、編成を運び屋にすることによって、1つ前のセンサーのオブジェクト参照値を取得するものである。そして、1つ前のセンサーはその1つ前のセンサーのオブジェクト参照値を持つことになるから、鎖状に連なって動作させることが出来る訳である。
---*---*---*---
それでは、「閉塞構築センサー」の動作(VRM5/ONLINE版)を見てみよう。
//閉塞メソッド
BeginFunc MethodSensorEvent
GetSenseTrain ObjTrain
SetCommonStatus VarBlockadeZoneNo VarBlockadeZoneStatus
mov this ObjPreviousSensor ObjTrain ObjBZoneSensor
ifeq VarBlockadeZoneStatus 4
call ObjPreviousSensor Method4to3
endif
ifeq VarBlockadeZoneStatus 3
call ObjPreviousSensor Method3to2
endif
ifeq VarBlockadeZoneStatus 2
call ObjPreviousSensor Method2to1
endif
ifeq VarBlockadeZoneStatus 1
call ObjPreviousSensor Method1to0
endif
mov ObjTrain ObjBZoneSensor this ObjThisSensor
EndFunc
この閉塞メソッドの黄色い部分がセンサーチェーン確立のためのコマンド群であり、編成ObjTrainのObjBZoneSensorが運び屋の器である。そして、センサーはObjPreviousSensorに1つ前のセンサーの参照値を確保する。
そして、メソッドは1つ前のセンサーへと指令を出していくわけである。それにより、閉塞の状態を示す4、3、2、1、0の値が入るのである。
「Method3to2」より
BeginFunc Method3to2
GetCommonStatus VarBlockadeZoneNo VarStatus
ifeq VarStatus 3
SetCommonStatus VarBlockadeZoneNo 2
call ObjPreviousSensor Method2to1
endif
EndFunc
尚、この赤い部分は変えるべき値が本当に3であるかを確認するためであり、これが後続編成が対象区間に突入していた場合の対策になる。
---*---*---*---
また、閉塞メソッドに話は戻るが、「ifeq VarBlockadeZoneStatus」で条件分岐しているのは、信号機の灯火数に対応するものであり、例えば5灯ではなく4灯ならば、
このようになる訳である。後は4灯式信号機及び編成動作用のスクリプトを追加すれば良いだけ。
---*---*---*---
という訳で、センサーチェーン構造の解説を書いた訳ですが、1つ前のセンサーが判るということは逆に1つ先のセンサーも判るということで、ObjPreviousSensorだけでなく、ObjNextSensorも取得できる訳である。
VRMにおける「動的オブジェクト参照」の究極的な使い方が、この「センサーチェーン構造」だろうと私は勝手に思っている。
最新の画像もっと見る
最近の「VRMスクリプト」カテゴリーもっと見る
最近の記事
カテゴリー
- 重要記事(18)
- HDR写真(91)
- VRM-NX(291)
- NX-TOMIX(122)
- VRM入門(82)
- VRM動画(84)
- VRM自動センサー(10)
- 天球テクスチャー(62)
- 編成(115)
- Pythonスクリプト(97)
- VRMoNLINE(25)
- VRMノンジャンル(187)
- VRMの日(22)
- 鉄道模型レイアウター(28)
- Trainz(183)
- A9(10)
- 鉄道模型(111)
- VRM4CV(69)
- cVss(20)
- VRM-Nietzsche(28)
- めっけ(8)
- 無理矢理ストラクチャ(29)
- VRM4GIS計画(仮)(12)
- VRM用技術(25)
- VRMスクリプト(21)
- 参考写真・参考書籍(29)
- 2D/3DCG(112)
- サウンド(5)
- 単なる雑談(79)
- ノンジャンル(9)
- 双極性障害(2)
- 生活(2)
- グルメ(0)
バックナンバー
2017年
人気記事