У меня небольшая проблема с настраиваемым узлом, который я создал в Maya. Если я сделаю что-то вроде:Maya: Удаление узла не вызывает деструктор напрямую
createNode -n "MyInstance" "MyNode";
delete "MyInstance";
Это не называется деструктором класса. Но, если вы создаете новую сцену, открываете новый файл или делаете все, что заставляет уничтожать текущую сцену, деструктор, наконец, вызывается.
Дело в том, что у меня есть некоторые выделения памяти, которые я хотел бы сразу очистить, а не ждать, пока они не исчезнут. Потому что они больше не нужны, поэтому их нужно очистить.
Я просмотрел документацию, и я не вижу никаких виртуальных функций, которые я мог бы переопределить, которые будут вызываться, когда узел фактически удален или аналогичное событие. Существует такая функция, чтобы отслеживать связь между атрибутами (фактически используя ее в этом случае), но не удалять такую вещь.
Итак, если у вас есть идея обхода, или способ имитировать это, пожалуйста, поделитесь!
Спасибо.
W
Достаточно ли это кода, или вам нужно вызвать конкретный деструктор в обратном вызове? –
Если вы выделили что-либо в конструкторе или в любой другой точке для этого узла, вам нужно освободить его там. В частности, если внутренне ваши данные могут использоваться несколькими узлами. Немного похожий на общий указатель, убедитесь, что вы уменьшите счетчик и удалите, если необходимо. – widgg
Хорошо, потому что моя проблема похожа на твою с немного иным эффектом. При удалении узла (MPxNode) с помощью ключа delete, Maya падает. Если я удалю его по коду (mdg.deleteNode), тогда он будет работать. Но прерывание nodeRemoveCallback кажется недостаточным. –