Table of Contents

Using the Wwise Authoring API in Wwise Plug-ins

Calling a remote procedure

The Wwise Authoring API can be used to issue remote procedure calls from within a Wwise plug-in using the AK::Wwise::IPluginPropertySet::WaapiCall() method.

Note.gif
Note: Calls to the AK::Wwise::IPluginPropertySet::WaapiCall() method are always blocking.

Utility classes are provided so that callers can provide a strategy for memory allocation. AK::Wwise::Mallocator offers a default implementation using malloc and free, but a custom one can easily be provided by defining a class that implements AK::IAkPluginMemAlloc. Finally, a wrapper class AK::Wwise::SafeAllocator is used to ensure type-safety and automatic memory management.

Examples:

#include <AK/Tools/Common/AkAllocator.h>
#include <rapidjson/document.h>

// Use the default allocation strategy for results and errors
AK::Wwise::Mallocator alloc;

AK::Wwise::SafeAllocator<char> szResults(&alloc);
AK::Wwise::SafeAllocator<char> szError(&alloc);

// Issue a remote procedure call to the Wwise Authoring API
m_pPSet->WaapiCall("ak.wwise.core.getInfo", NULL, NULL, &alloc, szResults, szError);
if (!szError)
{
    // Parse the results JSON string
    rapidjson::Document results;
    results.Parse(szResults);

    // ...
}
#include <AK/Tools/Common/AkAllocator.h>
#include <rapidjson/document.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/writer.h>

// Use the default allocation strategy for results and errors
AK::Wwise::Mallocator alloc;

AK::Wwise::SafeAllocator<char> szResults(&alloc);
AK::Wwise::SafeAllocator<char> szError(&alloc);

// Build a JSON object that contains the procedure's parameters
rapidjson::Document args;
args.SetObject();
args.AddMember("classId", 8192003, args.GetAllocator());
args.AddMember("property", "ModDepth", args.GetAllocator());

// Stringify the JSON object
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
args.Accept(writer);

// Issue a remote procedure call to the Wwise Authoring API
m_pPSet->WaapiCall("ak.wwise.core.plugin.getProperty", buffer.GetString(), NULL, &alloc, szResults, szError);
if (!szError)
{
    // Parse the results JSON string
    rapidjson::Document results;
    results.Parse(szResults);

    // ...
}
Note.gif
Note: Here, RapidJSON is only used for demonstration purposes and is in no way mandatory.

Refer to How to Create a Wwise Plug-in DLL for more information on Wwise plug-ins.