【rfactor2】 プラグイン開発14 – rF2 Example Plugin 3.7 –

今回の趣旨
 rFactor2 Build 85リリースから少しだけ遅れて、プラグインのサンプル3.7がリリースされたので、
 変更点について、記載する。なお、以前のサンプルは2.7となっていた。
変更点1
 VehicleScoringInfoV01が変更され、フラグ情報がrFactor2.exeから提供されるようになった。
 ただし、「currently only 0=green or 6=blue」と書かれているので、
 イエローフラグやレッドはまだ情報が採取できない。
 また、謎のmUnused1~3が追加されている。
 そして、重要な事が判明した。サンプル27では、
 mExpansion[80]; // for future useとなっていた箇所が、サンプル37では[76]になっているのである。
 実は、フラグ+mUnused1~3の4バイトを差し引いた値になっている。
 今回の判明したのは、”future use”は将来の機能ではなく、将来使うための場所を取っている
 アラインメント固定用のパディングであることである。

 mUnused1~3も近い将来、何かのデータがrFactor2.exeから渡されることが推測される。
 この結果から判明すること。「以前のビルドのプラグインは、そのまま問題なく動く」
 ※ただし、以前、記載した「俺様プラグイン」は知らない。

変更点2
 残りが、プラグイン開発者に待ち望まれていた機能である。
 以前、「俺様プラグイン」になってしまう限り、「画面描画系プラグインは死ね」・・・とまでは行かないが、
 絶対に手を出さないようなことを書いたが、あっさりと描画支援機能が実装された。
 これはrFactor2プラグイン開発者は自由平等である。
 
 b3863413.jpg
 ※こんな絵を作っているから、後述のサンプルが次回へ後回しに・・・。
 機能が提供されているのにもかかわらず、「俺様プラグイン」(俺が描画するから、他プラグインは描画するなという仕組み)を作るプラグイン開発者はジャイアンそのものなので、無視してよい気がする。
 まずは、追加された構造体である。
 ScreenInfoV01を見てみると、rfactor2.exeから、画面サイズやDirectX9のデバイスハンドル、
 レンダーターゲットのハンドル等が引き渡されることが確認できる。 
 実際に使う方はどうだろうか?
 今回、class InternalsPluginV05が追加された。
 このクラスの中に、追加された描画系の関数が5つ定義されている。
 トラックデータがロードされたときに、呼び出される関数となる。
 virtual void InitScreen( const ScreenInfoV01 &info )
 トラックデータがアンロードされたときに、呼び出される関数となる。
 virtual void UninitScreen( const ScreenInfoV01 &info )
 画面が再アクティブされた際などに読み込まれる関数である。使い道は思いつかない。
 デバイスのロスト等した時に、テクスチャの再生成が必要な処理などを記載か?
 ※もしかすると、Windows7では必要ないかもしれない。
 virtual void DeactivateScreen( const ScreenInfoV01 &info )
 virtual void ReactivateScreen( const ScreenInfoV01 &info )
 そして、走行中に毎フレーム描画するための関数群である。
 これらの関数は、オーバーレイの前と後が選べるようであるが、「オーバーレイ」の定義が不明である。
 rFactor2のメッセージ表示の後ろか前かを描画対象として選択できると考えられる。
 ※トラックとか車の後ろに描画することはないため。
 virtual void RenderScreenBeforeOverlays( const ScreenInfoV01 &info )
 virtual void RenderScreenAfterOverlays( const ScreenInfoV01 &info )
新クラス対応への対応作業
 上記の通り、旧Build向けに開発されたプラグインはそのまま問題なく動く。
 今後の描画やフラグ情報取得対応として考慮する場合は、InternalsPlugin.hppだけを
 差し替えて、継承元のクラスをInternalsPluginV05にして再コンパイルすれば良い。
 ※V03等の元のままでもよいが、描画はできない。
 手前味噌のペースノートプラグインを書き換えた例が下記になる。
 20120529a_20120529231745.jpg
新機能テスト
 描画するには、d3dx9.hをincludeした上で、d3dx9.lib等の必要なライブラリをリンクしてやる必要がある。
 ※この辺りは、DirectX9の資料を参照していただきたい。
次回
次回は、実際の描画について解説を実施する予定。

rfactor2 Plugin Develop
One comment to “【rfactor2】 プラグイン開発14 – rF2 Example Plugin 3.7 –”
  1. まとめtyaiました【【rfactor2】 プラグイン開発14 – rF2 Example Plugin 3.7 -】

    今回の趣旨 rFactor2 Build 85リリースから少しだけ遅れて、プラグインのサンプル3.7がリリースされたので、 変更点について、記載する。なお、以前のサンプルは2.7となっていた。変更点1…

コメントは停止中です。