private void userDAGGenericCB(object sender, MMessageParentChildFunctionArgs arg) { MDagMessage.DagMessage msg = arg.msgType; MDagPath child = arg.child; MDagPath parent = arg.parent; string dagStr; switch (msg) { case MDagMessage.DagMessage.kParentAdded: dagStr = "DAG Changed - Parent Added: "; break; case MDagMessage.DagMessage.kParentRemoved: dagStr = "DAG Changed - Parent Removed: "; break; case MDagMessage.DagMessage.kChildAdded: dagStr = "DAG Changed - Child Added: "; break; case MDagMessage.DagMessage.kChildRemoved: dagStr = "DAG Changed - Child Removed: "; break; case MDagMessage.DagMessage.kChildReordered: dagStr = "DAG Changed - Child Reordered: "; break; default: dagStr = "DAG Changed - Unknown Type: "; break; } dagStr = userDAGCBHelper(dagStr, child, parent); MGlobal.displayInfo(dagStr); }
private void addGenericCallback(MDagPath dagPath, MDagMessage.DagMessage msg, string cbName) { if (dagPath == null || MDagPath.getCPtr(dagPath).Handle == IntPtr.Zero) { // we don't have genericCallback // MDagMessage.addDagCallback(DagMessage, MDagMessage::MMessageParentChildFunction) try { switch (msg) { case MDagMessage.DagMessage.kChildAdded: MDagMessage.ChildAdded += userDAGGenericCB; break; case MDagMessage.DagMessage.kChildRemoved: MDagMessage.ChildRemoved += userDAGGenericCB; break; case MDagMessage.DagMessage.kChildReordered: MDagMessage.ChildReordered += userDAGGenericCB; break; case MDagMessage.DagMessage.kInstanceAdded: MDagMessage.InstanceAdded += userDAGGenericCB; break; case MDagMessage.DagMessage.kInstanceRemoved: MDagMessage.InstanceRemoved += userDAGGenericCB; break; case MDagMessage.DagMessage.kParentAdded: MDagMessage.ParentAdded += userDAGGenericCB; break; case MDagMessage.DagMessage.kParentRemoved: MDagMessage.ParentRemoved += userDAGGenericCB; break; default: throw new ArgumentException("Failed to add generic callback", "msg"); } string info = string.Format("Adding a callback for {0} on all nodes", cbName); MGlobal.displayInfo(info); } catch (System.Exception) { string err = string.Format("Could not add callback to {0}", dagPath.fullPathName); MGlobal.displayError(err); } } else { string msgName = "Unknown"; try { // we doesn't support obsolete // MDagMessage.addDagCallback(DagMessage, MDagMessage::MMessageParentChildFunction) switch (msg) { case MDagMessage.DagMessage.kChildAdded: msgName = "ChildAdded"; dagPath.ChildAddedDagPath += userDAGChildAddedCB; break; case MDagMessage.DagMessage.kChildRemoved: msgName = "ChildRemoved"; dagPath.ChildRemovedDagPath += userDAGChildRemovedCB; break; case MDagMessage.DagMessage.kChildReordered: msgName = "ChildRecordered"; dagPath.ChildReorderedDagPath += userDAGChildRemovedCB; break; case MDagMessage.DagMessage.kInstanceAdded: msgName = "InstanceAdded"; dagPath.InstanceAddedDagPath += userDAGChildAddedCB; break; case MDagMessage.DagMessage.kInstanceRemoved: msgName = "InstanceRemoved"; dagPath.InstanceRemovedDagPath += userDAGInstanceRemovedCB; break; case MDagMessage.DagMessage.kParentAdded: msgName = "ParentAdded"; dagPath.ParentAddedDagPath += userDAGParentAddedCB; break; case MDagMessage.DagMessage.kParentRemoved: msgName = "ParentRemoved"; dagPath.ParentRemovedDagPath += userDAGParentRemovedCB; break; default: throw new ArgumentException("Failed to add generic callback", "msg"); } string info = string.Format("Adding a callback listening msg {0} for {1} on {2}", msgName, cbName, dagPath.fullPathName); MGlobal.displayInfo(info); } catch (System.Exception) { string err = string.Format("Could not add callback listening msg {0} to {1}", msgName, dagPath.fullPathName); throw new ApplicationException(err); } } }