menu
 
Version
2017.1.9.6501

2024.1.5.8803

2023.1.13.8732

2022.1.19.8584

2021.1.14.8108

2019.2.15.7667

2019.1.11.7296

2018.1.11.6987

2017.2.10.6745

2017.1.9.6501

2016.2.6.6153

2015.1.9.5624


menu_open

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::IAudioPlugin::WaapiCall() method.

info
Note: Calls to the AK::Wwise::IAudioPlugin::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);

    // ...
}
info
Note: Here, RapidJSON is only used for demonstration purposes and is in no way mandatory. The library of your choice can be used to manipulate JSON.

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


Cette page a-t-elle été utile ?

Besoin d'aide ?

Des questions ? Des problèmes ? Besoin de plus d'informations ? Contactez-nous, nous pouvons vous aider !

Visitez notre page d'Aide

Décrivez-nous de votre projet. Nous sommes là pour vous aider.

Enregistrez votre projet et nous vous aiderons à démarrer sans aucune obligation !

Partir du bon pied avec Wwise