Maya:删除节点不会直接调用析构函数

时间:2013-08-02 14:59:58

标签: c++ maya

我在Maya中创建的自定义节点有一个小问题。如果我这样做:

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

它不会调用类析构函数。但是,如果你做一个新场景,打开一个新文件,或做任何强制破坏当前场景的事情,最后会调用析构函数。

问题是我有一些内存分配,我想立即清除,而不是等到最后实际清除它们。因为他们不再需要了,所以他们应该被清除。

我查看了文档,我没有看到任何我可以覆盖的虚拟函数,当实际删除节点或类似事件时会调用这些函数。有这样的功能来跟踪属性之间的连接(在这种情况下实际使用它),但没有删除的东西。

因此,如果您有任何人想要绕道,或者模拟这种方法,请分享!

感谢。

w ^

1 个答案:

答案 0 :(得分:5)

所以伙计们,

终于找到了它。它完全不是它应该的位置。 Autodesk有一些奇怪的做法。

这是:

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

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

因此,如果删除节点,则实际调用此回调。不过,我更喜欢通过覆盖函数在节点定义中直接执行此操作。

感谢所有看过这个问题的人。希望这最终可以帮助你们中的一些人!