Maya Event System
As a direct replacement to MMessage (and related classes) the class AL::maya::MayaEventManager provides an interface to register your own C++ callback functions. All of the static methods AL::maya::MayaEventManager::registerCallback take the following arguments:
- func - the C++ function pointer
- eventName - the name of the the event (see list below)
- tag - a unique a tag string to identify the creator of the callback
- weight - the event weight (lowest weights are executed first, highest last, all usdmaya weights are 0x1000)
- userData - an optional user data pointer
The list of registered event names can be queried by running the mel command:
print `AL_usdmaya_ListEvents`;
The following table lists the registered event name, and the type of callback function required to handle that callback.
- "AnimCurveEdited" - AL::maya::event::MayaCallbackType::kObjArrayFunction
- "AnimKeyFrameEdited" - AL::maya::event::MayaCallbackType::kObjArrayFunction
- "AnimKeyframeEditCheck" - AL::maya::event::MayaCallbackType::kCheckPlugFunction
- "PreBakeResults" - AL::maya::event::MayaCallbackType::kPlugsDGModFunction
- "PostBakeResults" - AL::maya::event::MayaCallbackType::kPlugsDGModFunction
- "DisableImplicitControl" - AL::maya::event::MayaCallbackType::kPlugsDGModFunction
- "CameraLayer" - AL::maya::event::MayaCallbackType::kCameraLayerFunction
- "CameraChanged" - AL::maya::event::MayaCallbackType::kCameraLayerFunction
- "Command" - AL::maya::event::MayaCallbackType::kStringFunction
- "CommandOuptut" - AL::maya::event::MayaCallbackType::kMessageFunction
- "CommandOutputFilter" - AL::maya::event::MayaCallbackType::kMessageFilterFunction
- "Proc" - AL::maya::event::MayaCallbackType::kStringIntBoolIntFunction
- "PublishAttr" - AL::maya::event::MayaCallbackType::kNodeStringBoolFunction
- "BoundAttr" - AL::maya::event::MayaCallbackType::kNodeStringBoolFunction
- "ParentAdded" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "ParentRemoved" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "ChildAdded" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "ChildRemoved" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "ChildReordered" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "AllDagChanges" - AL::maya::event::MayaCallbackType::kMessageParentChildFunction
- "InstanceAdded" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "InstanceRemoved" - AL::maya::event::MayaCallbackType::kParentChildFunction
- "TimeChange" - AL::maya::event::MayaCallbackType::kTimeFunction
- "DelayedTimeChange" - AL::maya::event::MayaCallbackType::kTimeFunction
- "DelayedTimeChangeRunup" - AL::maya::event::MayaCallbackType::kTimeFunction
- "ForceUpdate" - AL::maya::event::MayaCallbackType::kTimeFunction
- "NodeAdded" - AL::maya::event::MayaCallbackType::kNodeFunction
- "NodeRemoved" - AL::maya::event::MayaCallbackType::kNodeFunction
- "Connection" - AL::maya::event::MayaCallbackType::kPlugFunction
- "PreConnection" - AL::maya::event::MayaCallbackType::kPlugFunction
- "Callback" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeDuplicate" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterDuplicate" - AL::maya::event::MayaCallbackType::kBasicFunction
- "VertexColor" - AL::maya::event::MayaCallbackType::kPathObjectPlugColoursFunction
- "SceneUpdate" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeNew" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterNew" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeImport" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterImport" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeOpen" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterOpen" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeFileRead" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterFileRead" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterSceneReadAndRecordEdits" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeExport" - AL::maya::event::MayaCallbackType::kBasicFunction
- "ExportStarted" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterExport" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeSave" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterSave" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeCreateReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeLoadReferenceAndRecordEdits" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterCreateReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterCreateReferenceAndRecordEdits" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeRemoveReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterRemoveReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeImportReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterImportReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeExportReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterExportReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeUnloadReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterUnloadReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeLoadReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeCreateReferenceAndRecordEdits" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterLoadReference" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterLoadReferenceAndRecordEdits" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeSoftwareRender" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterSoftwareRender" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeSoftwareFrameRender" - AL::maya::event::MayaCallbackType::kBasicFunction
- "AfterSoftwareFrameRender" - AL::maya::event::MayaCallbackType::kBasicFunction
- "SoftwareRenderInterrupted" - AL::maya::event::MayaCallbackType::kBasicFunction
- "MayaInitialized" - AL::maya::event::MayaCallbackType::kBasicFunction
- "MayaExiting" - AL::maya::event::MayaCallbackType::kBasicFunction
- "BeforeNewCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforeImportCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforeOpenCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforeExportCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforeSaveCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforeCreateReferenceCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforeLoadReferenceCheck" - AL::maya::event::MayaCallbackType::kCheckFunction
- "BeforePluginLoad" - AL::maya::event::MayaCallbackType::kStringArrayFunction
- "AfterPluginLoad" - AL::maya::event::MayaCallbackType::kStringArrayFunction
- "BeforePluginUnload" - AL::maya::event::MayaCallbackType::kStringArrayFunction
- "AfterPluginUnload" - AL::maya::event::MayaCallbackType::kStringArrayFunction
example code
A quick example of replacing a MSceneMessage::kAfterNew message with the events system
#include <maya/MFnPlugin.h>
#include "AL/maya/event/MayaEventManager.h"
#include <iostream>
void onFileNewCallback()
{
std::cout << "onFileNewCallback Callback called!" << std::endl;
}
AL::maya::CallbackId g_callback = 0;
MStatus initialisePlugin(MObject obj)
{
MFnPlugin fn(obj);
g_callback = AL::maya::event::MayaEventManager::registerCallback(
onFileNewCallback,
"AfterNew",
"MyPlugin_MyCallback",
99999,
nullptr);
return MS::kSuccess;
}
MStatus uninitialisePlugin(MObject obj)
{
MFnPlugin fn(obj);
AL::maya::event::MayaEventManager::registerCallback(g_callback);
return MS::kSuccess;
}