Resourceファイル(拡張子 .rc )は、プラグインが使うリソースを表して、カスタムグラフィカルインターフェースを作成するために使うファイルフォーマットです。 Resourceファイルは、Visual Studio Editorツールで簡単に管理でき、GUIをビルドするために、ウィジェットをキャンバスにドラッグ&ドロップできます。新しいプラグインのResourceファイルは、以下の手順で作成できます。
最初に、wp.pyで新しいプラグインを作成します(開発ツールについてよく知らない場合は、 開発ツールを使う を参照してください)。
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new
プロンプトに回答し、プラグインが作成できたら、ディレクトリをプロジェクトフォルダに変えて premake
をコールします。
cd MyNewFX
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" premake Authoring
生成されたソリューションファイル(.sln)をVisual Studio 2019で開き、プロジェクトフォルダがハイライトされていることを確認し(ソリューションフォルダと間違えると Add New Item
の選択肢が違ってしまうので、注意してください)、Projectメニューで Add New Item...
を選択します。ダイアログウィンドウで、左列の Resource
を選択し、次に中央ペインで Resource File (.rc)
を選択します。あなたのプロジェクトの WwisePlugin
フォルダに、 Resource.rc
という名のファイルが作成されます。
Resource Viewで Resource.rc
ファイルを右クリックし、 Add Resource
を選択します。 Add Resource
ウィンドウで、Dialogを選択してNewボタンをクリックします。
|
注釈: DIALOGウィンドウを作成するときに、その Properties に、必ず以下のスタイルを設定してください:
- Appearance/Border = None
- Appearance/Clip Children = True
- Appearance/Style = Child
- Misc/Control = True
- Misc/Control Parent = True
|
インターフェースの左側にある Toolbox
タブを使えば、キャンバスにウィジェットをドラッグ&ドロップして、プラグインのグラフィカルインターフェースを構築することができるはずです。プロジェクトを保存すると、Resourceファイルが更新されます。
あなたのプロジェクトに Resource.rc
ファイルを含めるには、もう一度premakeをコールします。そうすれば、次にプラグインをビルドしたときに、Resourceファイルに基づいて resource.h
という名前のファイルが自動的に生成されます:
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build -c Release -x x64 -t vc160 Authoring
カスタムインターフェースを使うようにプラグインに指示するには、 AK::Wwise::Plugin::GUIWindows
で提供されるメソッドをオーバーライドする必要があります。 以下のように、 Win32/PluginNamePluginGUI.h
に resource.h
を含め、メソッドシグニチャを追加し、ウィンドウハンドルを格納するためのプライベート変数を作成します:
#pragma once
#include "../MyNewFXPlugin.h"
#include "../resource.h"
class MyNewFXPluginGUI final
: public AK::Wwise::Plugin::PluginMFCWindows<>
, public AK::Wwise::Plugin::GUIWindows
{
public:
MyNewFXPluginGUI();
HINSTANCE GetResourceHandle() const override;
bool GetDialog(
AK::Wwise::Plugin::eDialog in_eDialog,
UINT& out_uiDialogID,
AK::Wwise::Plugin::PopulateTableItem*& out_pTable
) const override;
bool WindowProc(
AK::Wwise::Plugin::eDialog in_eDialog,
HWND in_hWnd,
uint32_t in_message,
WPARAM in_wParam,
LPARAM in_lParam,
LRESULT& out_lResult
) override;
private:
HWND m_hwndPropView = nullptr;
};
Win32/PluginNamePluginGUI.cpp
に、これらのメソッドの実装を追加します:
HINSTANCE MyNewFXPluginGUI::GetResourceHandle() const
{
AFX_MANAGE_STATE( AfxGetStaticModuleState() );
return AfxGetStaticModuleState()->m_hCurrentResourceHandle;
}
bool MyNewFXPluginGUI::GetDialog( AK::Wwise::Plugin::eDialog in_eDialog, UINT & out_uiDialogID, AK::Wwise::Plugin::PopulateTableItem *& out_pTable ) const
{
AKASSERT( in_eDialog == AK::Wwise::Plugin::SettingsDialog );
out_uiDialogID = IDD_DIALOG1;
out_pTable = nullptr;
return true;
}
bool MyNewFXPluginGUI::WindowProc( AK::Wwise::Plugin::eDialog in_eDialog, HWND in_hWnd, UINT in_message, WPARAM in_wParam, LPARAM in_lParam, LRESULT & out_lResult )
{
switch ( in_message )
{
case WM_INITDIALOG:
m_hwndPropView = in_hWnd;
break;
case WM_DESTROY:
m_hwndPropView = NULL;
break;
}
out_lResult = 0;
return false;
}
リコンパイルしてプラグインをWwiseプロジェクトにロードします。これで、あなたの作成したカスタムグラフィカルインターフェースが表示されるはずです。