今回の趣旨
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プラグイン開発者は自由平等である。
※こんな絵を作っているから、後述のサンプルが次回へ後回しに・・・。
機能が提供されているのにもかかわらず、「俺様プラグイン」(俺が描画するから、他プラグインは描画するなという仕組み)を作るプラグイン開発者はジャイアンそのものなので、無視してよい気がする。
まずは、追加された構造体である。
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等の元のままでもよいが、描画はできない。
手前味噌のペースノートプラグインを書き換えた例が下記になる。
新機能テスト
描画するには、d3dx9.hをincludeした上で、d3dx9.lib等の必要なライブラリをリンクしてやる必要がある。
※この辺りは、DirectX9の資料を参照していただきたい。
次回
次回は、実際の描画について解説を実施する予定。
One comment to “【rfactor2】 プラグイン開発14 – rF2 Example Plugin 3.7 –”
まとめtyaiました【【rfactor2】 プラグイン開発14 – rF2 Example Plugin 3.7 -】
今回の趣旨 rFactor2 Build 85リリースから少しだけ遅れて、プラグインのサンプル3.7がリリースされたので、 変更点について、記載する。なお、以前のサンプルは2.7となっていた。変更点1…