車両プラグイン - stop-pattern/BveExCsTemplate GitHub Wiki

概要

本項ではAtsEXのプラグインのうち車両プラグインを扱う
車両プラグインは公式によると次のように説明されている

車両プラグインは、車両データに同梱するプラグインです。
形としては通常のBVEにおけるATSプラグインに近いと言えます。

このことからも、保安装置や計器の描画にかかわる機能など車両アドオンによって異なる機能の実装に向いているとわかる

コードでの実装

車両プラグインを実装する場合には、車両プラグインであるという情報をAtsEx側に伝達するため次の設定が必要となる

  • プラグインのメインクラスにPluginType(PluginType.VehiclePlugin)属性を付与
  • PluginBase抽象クラスを継承
    • 基本的にPluginBaseから派生したAssemblyPluginBase抽象クラスを継承
  • TickVehiclePluginTickResultを返す

この時の最小構成を下に引用して示す

[PluginType(PluginType.VehiclePlugin)]
internal class PluginMain : AssemblyPluginBase
{
    public PluginMain(PluginBuilder builder) : base(builder)
    {
    }

    public override void Dispose()
    {
    }

    public override void Tick(TimeSpan elapsed)
    {
        return new VehiclePluginTickResult();
    }
}

Bveへの導入

配置場所

車両アドオンの中にプラグインを配置する

ディレクトリ構成例:

Scenarios
└ MyVehicles
  └ SampleVehicle
    ├ Vehicle.txt
    ├ Ats
    │ ├ AtsEx.Caller.txt
    │ ├ AtsEx.Caller.x64.dll
    │ ├ AtsEx.Caller.x86.dll
    │ ├ AtsEXPlugins
    │ │ ├ **プラグイン**
    │ │ └ OtherPlugin.dll
    │ ├ DetailManager.x64.dll
    │ ├ DetailManager.x86.dll
    │ ├ detailmodules.txt
    │ ├ OtherNormalPlugin.dll
    │ └ ...
    ├ Notch
    │ ├ Notch.txt
    │ └ ...
    ├ Panel
    │ ├ Panel.txt
    │ └ ...
    ├ Sound
    │ ├ Sound.txt
    │ ├ Motor.txt
    │ └ ...
    ├ Parameters.txt
    └ ...

参照設定

車両アドオンからAtsEXの車両プラグインを参照するためには、通常の手順に加え設定ファイルの追加が必要である
設定ファイルの追加をはじめとする参照のための設定は次のとおりである

設定ファイル

設定ファイルを作成しプラグインの情報を記入する

  • AtsEx.Caller.txt
    AtsEx.Caller に AtsEX のパスを伝える
    ..\..\..\AtsEx
    
  • AtsEx.Caller.x86.VehiclePluginUsing.xml: x64と同じ
  • AtsEx.Caller.x64.VehiclePluginUsing.xml(例):
    AtsEx.Caller に読み込むプラグインのパスを伝える
    <?xml version="1.0" encoding="utf-8" ?>
    <AtsExPluginUsing xmlns="http://automatic9045.github.io/ns/xmlschemas/AtsExPluginUsingXmlSchema.xsd">
        <Assembly Path="AtsEXPlugins\**プラグイン**" />
        <Assembly Path="AtsEXPlugins\OtherPlugin.dll" />
    </AtsExPluginUsing>
    
  • AtsEx.Caller.x86.VehicleConfig.xml: x64と同じ
  • AtsEx.Caller.x64.VehicleConfig.xml(例):
    AtsEx.Caller に読み込む際の設定を伝える
    <?xml version="1.0" encoding="utf-8" ?>
    <AtsExVehicleConfig xmlns="http://automatic9045.github.io/ns/xmlschemas/AtsExVehicleConfigXmlSchema.xsd">
        <DetectSoundIndexConflict>true</DetectSoundIndexConflict>
        <DetectPanelValueIndexConflict>true</DetectPanelValueIndexConflict>
    </AtsExVehicleConfig>
    

Vehicleファイルから参照

Bve側にプラグインのパスを教える必要があるため、その設定を行う
Vehicle.txt(例):

BveTs Vehicle 2.00
PerformanceCurve = Notch\Notch.txt
Parameters = Parameters.txt
Panel = Panel\Panel.txt
Sound = Sound\Sound.txt
MotorNoise = Sound\Motor.txt
Ats32 = Ats\AtsEx.Caller.x86.dll
Ats64 = Ats\AtsEx.Caller.x64.dll

非AtsEXプラグインとの両立

  1. Ats32とAts64でDetailManagerを指定する
  2. detailmodules.txtでAtsEx.Callerを指定する

読み込まれ方

車両プラグインは従来のAtsEXを介さないプラグインと同様に、シナリオ読み込み時にAtsEXから呼ばれシナリオ終了時に開放される

参考文献・引用元