000000 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

Let's create BVE

January 7, 2009
XML
64行目、Elapseを見てみます。
オフィシャルサイトの解説には1フレームごとに呼び出される関数と書いてあります。
この関数は画面が1回描画されるたびに呼び出されます。
40fpsなら1秒間に40回、5fpsなら1秒間に5回呼び出されます。
この関数は重要で、常に状態をチェックする必要がある処理はここに書きます。

引数で渡ってくるものは、速度、ブレーキ圧力などの車両の現在の状態(ATS_VEHICLESTATE)です。
それと、panel、soundです。
panelは運転台設定ファイルPanel2.cfgで使うats0~ats255の値を設定します。
soundはサウンド設定ファイルSound.cfgで使う0~255の値を設定します。
(Panel、Soundに関しては次回詳しく解説します。)

戻り値はATS_HANDLESです。BVEへ渡すハンドル(マスコン、ブレーキ等)の状態を設定します。
ここで重要なのは、ATSプラグインで制御できる車両の状態は
マスコン、ブレーキ、レバーサ、定速のみという点です。
速度やブレーキ圧力などはATSプラグインで制御できません。
このサンプルファイルの場合、g_outputにそれぞれのハンドルの状態を設定してやることで、
車両のマスコンやブレーキを制御しています。

ソースをみてみます。75行目、
if(g_atssn.AtsBrake || g_atsp.EmergencyBrake)
{
g_output.Brake = g_emgBrake;
}
else if(g_atsp.ServiceBrake && g_brakeNotch != g_emgBrake)
{
g_output.Brake = g_svcBrake;
}
else
{
g_output.Brake = g_brakeNotch;
}

とあります。この部分の動作は、
ATS-SN作動またはATS-P非常ブレーキの場合、BVEに返すブレーキの値は非常ノッチ。
ATS-P常用ブレーキかつユーザ操作のブレーキノッチが非常ノッチでない場合、BVEに返すブレーキの値は常用最大。
それ以外の場合、BVEに返すブレーキの値はユーザ操作のブレーキノッチ。

となります。
このように、ブレーキは保安装置の状態により、非常ノッチを返すかユーザ操作のノッチを返すか分けています。

87行目、レバーサの設定です。
パイロットランプが点灯の場合、ユーザ操作のレバーサを返し、それ以外(消灯)の場合、レバーサは0(中立)を返しています。

95行目、マスコンはユーザ操作のノッチをそのまま返しています。
96行目、定速制御です。これは常にATS_CONSTANTSPEED_CONTINUEで良いでしょう。

115行目、return g_outputでBVEへハンドルの値を返しましょう。

ひよこまめ知識ひよこ
ATSプラグイン側でg_output.Reverser = 1(前進)に設定しても、
ユーザ操作のレバーサが中立(BVEの左下の表示が「切」)になっている場合、
列車は加速できません。


<< 08 関数の解説(第3回)  10 Panelの設定 >>






Last updated  January 29, 2009 09:17:58 PM
コメント(0) | コメントを書く
[ATSプラグイン作成講座] カテゴリの最新記事


PR

Recent Posts

Category

Comments

にそん@ Re:ATS-Pの距離情報(06/05) I.A.さん このサイトとは全く関係ないんで…
I.A.@ ATS-Pの距離情報 はじめまして、I.A.と申します。 現在,A…
ノ付@ Re:質問です(03/10) This version is not supportedというメッ…
オカT@ 質問です  管理人様、初めまして。 講座とは関係…
(G)@ ありがとうございます なんだか難しそうですね…。頑張ってみます…

Calendar

Archives

December , 2020
November , 2020
October , 2020
September , 2020
August , 2020

Copyright (c) 1997-2020 Rakuten, Inc. All Rights Reserved.