車両プラグイン - stop-pattern/BveExCsTemplate GitHub Wiki
概要
本項ではAtsEXのプラグインのうち車両プラグインを扱う
車両プラグインは公式によると次のように説明されている
車両プラグインは、車両データに同梱するプラグインです。
形としては通常のBVEにおけるATSプラグインに近いと言えます。
このことからも、保安装置や計器の描画にかかわる機能など車両アドオンによって異なる機能の実装に向いているとわかる
コードでの実装
車両プラグインを実装する場合には、車両プラグインであるという情報をAtsEx側に伝達するため次の設定が必要となる
- プラグインのメインクラスに
PluginType(PluginType.VehiclePlugin)
属性を付与 PluginBase
抽象クラスを継承- 基本的に
PluginBase
から派生したAssemblyPluginBase
抽象クラスを継承
- 基本的に
Tick
でVehiclePluginTickResult
を返す
この時の最小構成を下に引用して示す
[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プラグインとの両立
- Ats32とAts64でDetailManagerを指定する
- detailmodules.txtでAtsEx.Callerを指定する
読み込まれ方
車両プラグインは従来のAtsEXを介さないプラグインと同様に、シナリオ読み込み時にAtsEXから呼ばれシナリオ終了時に開放される