Initializing the project
Run the following command from any directory to install dependencies:
# Windows
py -m pip install autobahn
# macOS, Linux
python3 -m pip install autobahn
Project Code
| Note: The line from waapi_uri import WAAPI_URI imports a declaration of the API paths.
It is located in <Wwise installation path>/SDK/include/AK/WwiseAuthoringAPI/py . The location of this file was added to Python's path dynamically by extending sys.path in this sample, but you can also copy-paste the waapi.py file along-side the sample files.
Note that the additional file, ak_authobahn.py , provides a special type of component which supports custom options to be sent to WAAPI. This file is provided in the sample's directory.
|
Python 3.7+
Locate the sample file <Wwise installation path>/SDK/samples/WwiseAuthoringAPI/python/low-level/wwise-pubsub-wamp/get_ancestors_py3.py
.
This file contains the following code, which allows you to connect to the Wwise Authoring API.
import asyncio
import sys
import os
from autobahn.asyncio.wamp import ApplicationRunner
from ak_autobahn import AkComponent
sys.path.append(os.path.join(os.path.dirname(__file__), '../../../../../include/AK/WwiseAuthoringAPI/py'))
from waapi_uri import WAAPI_URI
done = False
class MyComponent(AkComponent):
def onJoin(self, details):
subscription = None
def on_object_created(**kwargs):
yield from subscription.unsubscribe()
result = kwargs[u"object"]
print("The object was created in the category: {}".format(result.get(u"category", "unknown")))
arguments = {
"from": {"id": [result.get(u"id")]},
"transform": [{"select": ["ancestors"]}],
"options": {
"return": ["name"]
}
}
res = yield from self.call(WAAPI_URI.ak_wwise_core_object_get, **arguments)
ancestors = res.kwresults[u"return"]
print(u"Ancestor of {}:".format(result[u"id"]))
for ancestor in ancestors:
print("\t{}".format(ancestor[u"name"]))
global done
if not done:
self.leave()
done = True
subscribe_args = {
"options": {
"return": ["id", "name", "category"]
}
}
subscription = yield from self.subscribe(on_object_created,
WAAPI_URI.ak_wwise_core_object_created,
**subscribe_args)
print("Create an object in the Project Explorer")
def onDisconnect(self):
print("The client was disconnected.")
asyncio.get_event_loop().stop()
if __name__ == '__main__':
runner = ApplicationRunner(url=u"ws://127.0.0.1:8080/waapi", realm=u"get_ancestors_demo")
try:
runner.run(MyComponent)
except Exception as e:
print(type(e).__name__ + ": Is Wwise running and Wwise Authoring API enabled?")
Running the project
Run the sample file from its directory using the following command:
Python 3.7+:
# Windows
py get_ancestors_py3.py
# macOS, Linux
python3 get_ancestors_py3.py
Create an object in the Project Explorer and the list of its ancestors will be displayed. The sample terminates the connection after the ancestors are retrieved.