のような入力プラグを汚すと、setDependentsDirty()
が正しく呼び出されますが、fileName
プラグの値はまだ古い値です!私はそれがcompute()
を通過すると更新されるのを見るだけです。 setDependentsDirty()
関数の新しい値にプラグイン値の更新によって実際にアクセスされたので、どうすればこの値にアクセスできますか?汚れたプラグはまだsetDependentsDirty()の間に古い値を持っています
MStatus FNode::setDependentsDirty(const MPlug& plug, MPlugArray& plugArray) {
if (plug == mFileAttr)
{
MPlug fileNamePlug(thisMObject(), plug);
MString fileName = fileNamePlug.asString();
}
return MPxNode::setDependentsDirty(plug, plugArray); }
編集: ただ、プラグ値そのもの、plug.asString()
を読んで、明確にするために、それはまだ古い値を保持します。
これは実際には読んでいましたが、さまざまなプラグ接続を切断または接続しようとしているので、これはcompute()中にこれを行う方法がありません。私が気づいていない方法がないかぎり、compute()を実行します。詳しい説明はこれを見てください。http://stackoverflow.com/questions/38721084/disconnecting-connecting-plugs-gives-internal-failure-in-compute – Yasin