# ATSプラグイン制作メモ (AtsEX編) ###### tags:`BveTs` おーとまさん([twitter](https://twitter.com/@atF9045) / [HP](https://automatic9045.github.io))が制作されています、AtsEXの導入手順を記録として残します。 基本的な手順については同梱されるReadme等に記載されておりますので、まずそちらを参照ください。 プラグイン制作が初めての方は[ATSプラグイン制作メモ](https://hackmd.io/@Nepia/Hk6Owd4RU)を読むことをお勧めします この記事ではC#言語を使用しますが、C/C++言語は使用できません。 C#を使ったプラグイン作成は[ATSプラグイン作成メモ(C#編)](https://hackmd.io/@Nepia/H1uLvcIs5)を参照してください。(書きかけだけど...!) ## 目次 [TOC] ## 導入編 ### 用意するもの [GitHub](https://github.com/automatic9045/AtsEX/releases)より、以下2つをダウンロードします - AtsEx_SDK - AtsEx(本体) ### ファイル配置 同階層に配置します(それぞれの位置関係は任意) ``` . ├── AtsEX_v0.18.30202.1_SDK └── AtsEX_v0.18.30204.2 ``` --- ## ビルド編(SimpleAtsプロジェクト) AtsEx_SDKに含まれる`SimpleAtsプロジェクト`をビルドします ### プロジェクトを開く `.\AtsEX_v0.18.30202.1_SDK\AssemblyPlugins\VehiclePlugins\SimpleAts\`の`AtsEx.Samples.VehiclePlugins.SimpleAts.csproj`を右クリックのメニューからVisualStudoで開きます ### AtsEXの参照追加 1. `ソリューションエクスプローラ>AtsEx.Samples.VehiclePlugins.SimpleAts.csproj>参照`より、「!」が表示された参照(`AtsEX.PluginHost`,`BveTypes`)を削除します。 ![](https://i.imgur.com/AJ6vLNH.png) 2. `プロジェクト>参照の追加`より、`AtsEX_v0.18.30204.2`に含まれる`AtsEX.PluginHost`,`BveTypes`を追加します ![](https://i.imgur.com/GpDlHU9.png) ### ビルド実行 `Ctl+B`でビルドします ### 車両データに組み込む 以下のDLLファイルを車両データに組み込みます。 - SimpleAts.dll - AtsEx.Caller.txt - AtsEx.Caller.x64.dll - AtsEx.Caller.x64.VehiclePluginUsing.xml <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">SimpleAts.dllと、あとは<br><br>AtsEX本体の呼出に必要な<br>・AtsEx.Caller.txt<br>・AtsEx.Caller.x64.dll<br><br>本体に車両PIの一覧を認識させるための<br>・AtsEx.Caller.x64.VehiclePluginUsing.xml<br><br>が必要です。BVE5.8に対応させる場合は同じ物のx86版も+です。<br>詳しくはサンプル車両データ参照でお願いします🙇‍♂️</p>&mdash; 6速AT (おーとま) (@atF9045) <a href="https://twitter.com/atF9045/status/1628667826302226432?ref_src=twsrc%5Etfw">February 23, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> --- ## 提供関数群 AtsEXが提供する関数群 自作クラスでオーバーライドして実装すること(?) ### AtsEXプラグインの絶対パス ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Location||パス| ```csharp=1 public override String Location(){} ``` ### AtsEXプラグインのファイル名 ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Name||ファイル名| ```csharp=1 public override String Name(){} ``` ### AtsEXプラグインのタイトル名 ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Title||タイトル名| ```csharp=1 public override String Title(){} ``` ### AtsEXプラグインのバージョン ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Version||バージョン| ```csharp=1 public override String Version(){} ``` ### AtsEXプラグインの説明 ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Description||バージョン| ```csharp=1 public override String Description(){} ``` ### AtsEXプラグインの著作権表示 ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Copyright||著作権表示| ```csharp=1 public override void Dispose(){} ``` ### 毎フレーム呼び出される関数 ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|TickResult|前フレームからの経過時間|車両プラグインの実行結果(下記表参照)| |機能|返値| |:--|:--| |拡張機能|AtsEx.PluginHost.Plugins.Extensions.ExtensionTickResult| |車両プラグイン|AtsEx.PluginHost.Plugins.VehiclePluginTickResult| |マッププラグイン|AtsEx.PluginHost.Plugins.MapPluginTickResult| ```csharp=1 public override TickResult Tick(TimeSpan elapsed){ VehiclePluginTickResult tickResult = new VehiclePluginTickResult(); /* ~ 処理(後述) ~ */ return tickResult; } ``` ### AtsEXプラグインが解放されたときに呼び出される関数 ||関数名|引数|返値| |:--|:--|:--|:--| |AtsEX|Dispose||| ```csharp=1 public override void Dispose(){} ``` --- ## プラグイン開発 ### ノッチ反映 ```csharp=1 PluginHost.Handles.HandleSet handleSet = Native.Handles; ``` ### 自車位置情報 ```csharp=1 UserVehicleLocationManager locationManager = BveHacker.Scenario.LocationManager; ``` --- ## データ型一覧 ### PluginHost.Handles.HandleSet すべてのハンドルセットを表す ### TimeSpan 時間間隔を表す |提供関数|概要| |:--|:--| |a|a| --- ## API一覧