バージョン
menu

Wwise SDK 2019.2.15
プラグインのResourceファイルの作成方法

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_vc160 Authoring

カスタムインターフェースを使うようにプラグインに指示するには、 AK::Wwise::IAudioPlugin で提供されるメソッドをオーバーライドする必要があります。 以下のように、 PluginNamePlugin.hresource.h を含め、メソッドシグニチャを追加し、ウィンドウハンドルを格納するためのプライベート変数を作成します:

#pragma once
#include "MyNewFXPlugin.h"
#include "resource.h"
class MyNewFXPlugin final
{
public:
    MyNewFXPluginGUI();
    ~MyNewFXPluginGUI();
    HINSTANCE GetResourceHandle() const override;
    bool GetDialog(
        eDialog in_eDialog,
UINT& out_uiDialogID,
AK::Wwise::PopulateTableItem *& out_pTable
    ) const override;
 
    bool WindowProc(
        eDialog in_eDialog,
HWND in_hWnd,
UINT in_message,
WPARAM in_wParam,
LPARAM in_lParam,
LRESULT & out_lResult
    ) override;
private:
    HWND m_hwndPropView = nullptr;
};

PluginNamePlugin.cpp に、これらのメソッドの実装を追加します:

#include <afxwin.h>
HINSTANCE MyNewFXPlugin::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 == 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;
}

最後に、 PremkaePlugin.lua にリソースファイルを追加します:

Plugin.authoring.files =
{
...
"resource.h",
"Resource.rc"
}

リコンパイルしてプラグインをWwiseプロジェクトにロードします。これで、あなたの作成したカスタムグラフィカルインターフェースが表示されるはずです。

Audiokinetic namespace
#define NULL
Definition: AkTypes.h:49
Use this base class to quickly implement most plugin functions empty
Definition: AudioPlugin.h:627
#define AKASSERT(Condition)
Definition: AkAssert.h:76

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう