Maya: удаление узла не вызывает деструктор напрямую

У меня небольшая проблема с пользовательским узлом, который я создал в Maya. Если я сделаю что-то вроде:

createNode -n "MyInstance" "MyNode";
delete "MyInstance";

Это не вызывает деструктор класса. Но если вы создаете новую сцену, открываете новый файл или делаете что-либо, что вызывает разрушение текущей сцены, деструктор наконец вызывается.

Дело в том, что у меня есть некоторые выделения памяти, которые я хотел бы очистить сразу, а не ждать до конца, чтобы фактически очистить их. Потому что они больше не нужны, поэтому они должны быть очищены.

Я посмотрел в документации, и я не вижу каких-либо виртуальных функций, которые я мог бы переопределить, которые были бы вызваны, когда узел фактически удален, или подобное событие. Есть такая функция для отслеживания связи между атрибутами (в действительности используется в этом случае), но нет такой вещи для удаления.

Так что, если у кого-то из вас есть идея обойти или смоделировать это, пожалуйста, поделитесь!

Благодарю.

W

3

Решение

Так, ребята,

Наконец-то нашел. Это совсем не то, что должно быть. У Autodesk есть какой-то странный способ сделать что-то.

Вот:

void removeMyNode(MObject &node, void *clientData)
{
MFnDependencyNode nodeFn(node);
MGlobal::displayInfo(MString("Removal callback node: ") + nodeFn.name());
}

MDGMessage::addNodeRemovedCallback(removeMyNode, "MyNode", NULL, &status);

Итак, если узел удален, этот обратный вызов фактически вызывается. Тем не менее, я бы предпочел способ сделать это непосредственно в определении узла путем переопределения функции.

Спасибо всем, кто взглянул на этот вопрос. Надеюсь, что это может помочь некоторым из вас в конце концов!

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]