【发布时间】:2015-07-20 10:09:37
【问题描述】:
我有一个 Maya api cpp 代码,可以创建同一实例的多个 MPxLocator。
初始化插件函数:
pluginFn.registerNode(
"unitNode",
unitNode::id,
&unitNode::creator,
&unitNode::initialize,
MPxNode::kLocatorNode,
&unitNode::drawDbClassification);
MHWRender::MDrawRegistry::registerDrawOverrideCreator(
unitNode::drawDbClassification,
unitNode::drawRegistrantId,
unitNodeDrawOverride::Creator);
节点创建函数:
MDagModifier dagMod;
for (int i=0;i<100;i++)
externalClass->objArray[i]=dagMod.createNode("unitNode", MObject::kNullObj);
删除(例如在属性更改后从节点 #15 启动):
MDGModifier mdg;
mdg.deleteNode(externalClass->objArray[99]);
当其中一个定位器中的特定属性发生更改时,我会删除另一个给定的定位器(因此永远不会删除它本身)。 MDGModifer::deleteNode 函数运行良好,但随后 maya 立即崩溃(仅在 Viewport 2.0 中,不在常规 viewPort 中)。
我的假设是 Maya 的队列中仍有为所有定位器启动 prepareForDraw 和绘制函数的队列,但是当我删除其中一个时,Maya 崩溃了。如何在属性更改后安全地删除节点?
【问题讨论】:
标签: c++ events attributes nodes maya