Resource 파일(확장자 .RC)은 플러그인이 사용자 정의 그래픽 인터페이스를 생성할 때 사용하는 리소스를 설명합니다. Resource 파일을 쉽게 관리하는 방법은 Visual Studio Editor 도구를 사용하는 것입니다. 이 도구를 사용해 위젯을 캔버스로 끌어 GUI를 빌드할 수 있습니다. 다음 섹션은 새로운 플러그인의 Resource 파일을 생성하는 방법을 설명합니다.
시작에 앞서 해당 개발 툴을 숙달해놓는 것이 좋습니다. 더 많은 정보는 개발 도구 사용하기 를 참고하세요.
Resource 파일 생성하기:
- 다음 명령을 실행해 플러그인을 생성합니다. 메시지가 뜨면 "effect (효과)" 타입 플러그인을 선택하세요.
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" new
- 다음 명령을 실행하여 플러그인 디렉터리로 변경한 다음
premake
를 호출합니다. cd MyPlugin
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" premake Authoring
- Visual Studio 2019에서 생성된 솔루션 파일(예:
MyPlugin_Authoring_Windows_vc160.sln
)을 엽니다.
- Resource View에서 프로젝트 이름을 선택하고 메뉴 바에서 Project > Add New Item을 클릭합니다. Add New Item 대화 상자가 열립니다.
- 왼쪽 창에서 Resource를 선택한 다음 가운데 창에서 Resource File (.rc)을 선택하고 Add를 클릭하세요.
Resource.rc
파일이 생성되어 Resource View의 프로젝트 이름 아래에 나타납니다. 이 파일은 WwisePlugin
하위 디렉터리에 있습니다. Resource View에서 Resource.rc
파일을 우클릭한 다음 Add Resource
를 클릭하세요. Add Resource 대화 상자에서 Dialog를 선택한 다음 New를 클릭합니다. 대화 상자 리소스가 생성되어 편집 창에 나타납니다.
- Properties 창에서 다음 값을 설정하세요.
- Appearance/Border: None
- Appearance/Clip Children: True
- Appearance/Style: Child
- Misc/Control: True
- Misc/Control Parent: True
- 편집 창 왼쪽에 있는 Toolbox에서 원하는 위젯을 대화 상자로 드래그합니다. 완료되면 Save를 클릭하세요.
- 플러그인 디렉터리의 명령 프롬프트에서 다음 두 명령을 순서대로 실행합니다.
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" premake Authoring
python "%WWISEROOT%/Scripts/Build/Plugins/wp.py" build -c Release -x x64 -t vc160 Authoring
첫 번째 명령은 프로젝트에 Resource.rc
파일을 포함하고, 두 번째 명령은 Resource 파일을 기반으로 resource.h
파일을 생성합니다.
- 플러그인의
Win32
하위 디렉터리에서 PluginNamePluginGUI.h
파일을 열고 다음 코드를 추가합니다. #pragma once
#include "../MyPlugin.h"
#include "../resource.h"
class MyPluginGUI final
: public AK::Wwise::Plugin::PluginMFCWindows<>
{
public:
MyPluginGUI();
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;
};
이 코드는 AK::Wwise::Plugin::GUIWindows
에서 제공하는 메소드를 오버라이드하고 플러그인이 사용자 정의 인터페이스를 사용하도록 합니다.
PluginNamePluginGUI.cpp
파일에 다음 코드를 추가합니다: HINSTANCE MyPluginGUI::GetResourceHandle() const
{
AFX_MANAGE_STATE( AfxGetStaticModuleState() );
return AfxGetStaticModuleState()->m_hCurrentResourceHandle;
}
bool MyPluginGUI::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 MyPluginGUI::WindowProc( AK::Wwise::Plugin::eDialog in_eDialog, HWND in_hWnd, uint32_t 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에서 Effect로 사용할 수 있으며 Wwise 오브젝트에 추가할 수 있습니다.