# DXDynamicTextureの使い方 [toc] # はじめに DXDynamicTextureとは@zhang_bx氏が開発したBveにおけるテクスチャ画像を動的に変更するプラグインである. <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">DXDynamicTexture v1.1がリリースされました。<br>これを使用して、BVE5 / 6でインタラクティブパネルを作成できるようになりました。<br>この例では、実際の電車のように、マウスでTIMSをクリックして使用できます。<br>検出は色に基づいているため、点滅があります。<a href="https://twitter.com/hashtag/bve5?src=hash&amp;ref_src=twsrc%5Etfw">#bve5</a> <a href="https://twitter.com/hashtag/bve6?src=hash&amp;ref_src=twsrc%5Etfw">#bve6</a> <a href="https://t.co/2JXcVrpq8b">pic.twitter.com/2JXcVrpq8b</a></p>&mdash; zbx1425 (@zhang_bx) <a href="https://twitter.com/zhang_bx/status/1428608737846218758?ref_src=twsrc%5Etfw">August 20, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> # 導入 導入方法についてはDXDynamicTextureの[リポジトリ](https://github.com/zbx1425/DXDynamicTexture)にも書いてありますので適宜そちらを参照してください. ## 1.ATSプラグインのテンプレートをダウンロード mikangogo氏が公開されている[BveAtsPluginCsharpTemplate](https://github.com/mikangogo/BveAtsPluginCsharpTemplate) をダウンロードします. ## 2.DLLExportのインストール プロジェクト>NuGetパッケージの管理 ![](https://i.imgur.com/qtYVYZu.png) ダイヤログが表示されたらプロジェクトの`BveAtsPluginCsharpTemplate.sln`を指定して, installedにチェックをつけて`Apply`をクリック ![](https://i.imgur.com/9grzlHk.png) VisualStudioからプロジェクトの再読み込みが求められるので再読み込みをします. ## 3.DXDynamicTextureの参照 [Release](https://github.com/zbx1425/DXDynamicTexture/releases/)からDXDynamicTexture.zipをダウンロードします. そして解凍して中のZbx1425.DXDynamicTexture-net35.dllを適当な場所へ置きます. 最後にVisualStudioから`プロジェクト>参照の追加`でZbx1425.DXDynamicTexture-net35.dllを追加します. ![](https://i.imgur.com/TLun3Vo.png) # サンプルプログラム DXDynamicTextureの[リポジトリ](https://github.com/zbx1425/DXDynamicTexture)にも書いてありますので適宜そちらを参照してください. ## マスコンの状態を反映する テンプレートの状態ではマスコンの状態がBve本体へ反映されないため,車両を制御することができません. そこで以下のプログラムを追加します. ```csharp=1 public struct AtsOutput { public int power; public int brake; public int reverser; public int ConstantSpeed; } private static AtsOutput output; ``` ```csharp=1 // Elapse関数内のreturnを変更 return new AtsHandles() { Power = output.power, Brake = output.brake, ConstantSpeed = AtsCscInstruction.Continue, Reverser = output.reverser }; ``` ```csharp=1 public static void SetPower(int handlePosition) { output.power = handlePosition; } ``` ```csharp=1 public static void SetBrake(int handlePosition) { output.brake = handlePosition; } ``` ```csharp=1 public static void SetReverser(int handlePosition) { output.reverser = handlePosition; } ``` ## パネルに文字を描画する ## パネルにクリックで操作するボタンを実装する