User Callbacks

Golaem provides callback functions mechanism which is triggered every time a Golaem file is loaded / saved or a new Golaem node is created. They can be used to edit default node parameters or call custom pipeline code. The available callbacks are

Callbacks

File Callbacks

SaveFileUserCallback // whenever a file is loaded / saved
LoadFileUserCallback

Behavior Callbacks

addCrowdBehaviorUserCallback // whenever a new behavior is created
addCrowdBe[BehaviorName]UserCallback
addCrowdFieldUserCallback
addTerrainLocatorUserCallback
addPerceptionLocatorUserCallback
addPhysicsLocatorUserCallback
addFlockLocatorUserCallback
addTrafficLocatorUserCallback
addTheCharacterMakerLocatorUserCallback
addCrowdEntityTypeNodeUserCallback
addCrowdGroupEntityTypeNodeUserCallback
addSensorLocatorUserCallback
addTheCrowdManagerNodeUserCallback
glmPopToolHandleConnectionsUserCallback
addSimulationCacheProxyUserCallback
addBakeSimulationCacheProxyUserCallback
addEmptySimulationCacheProxyUserCallback
addCrowdRenderProxyUserCallback

Simulation Cache Library Callbacks

sclReadLibFileUserCallback
sclWriteLibFileUserCallback
sclImportLibFileUserCallback
sclAddLibItemUserCallback
sclRemoveLibItemUserCallback
sclClearLibItemsUserCallback

Python

The module to include is the following

import glm.callbackUtils

To register a callback function you can call the following utilty function available in the glm.callbackUtils module:

def registerUserCallback(callbackName, function)

To deregister a callback function you can call the following utilty function available in the glm.callbackUtils module:

def deregisterUserCallback(callbackName)

Those callback functions all share the same prototype:

def [functionName](files)    // whenever a file is loaded / saved (multiple files separated with ';'
def [functionName](nodeName) // whenever a new node is created

Here is an example of an implemented callback called whenever a new Motion Behavior is created:

def motionCbExample(nodeName):
    cmds.setAttr(nodeName + '.loop', 0)

glm.callbackUtils.registerUserCallback('addCrowdBeMotionUserCallback', motionCbExample)

MEL

Those callback functions all share the same prototype:

global proc [callbackFunctionName](string $nodeName);

The following functions are available for a callback to be implemented. When implemented and sourced in the Maya session, they will be called when the corresponding node is created via the Golaem Shelf or the Golaem Menus:

Here is an example of an implemented callback called whenever a new Motion Behavior is created:

global proc addCrowdBeMotionUserCallback(string $nodeName)
{
  setAttr ($nodeName + ".loop") 0; // disable looping by default
}