2016-08-01 36 views
0

Wenn ich einen Eingangsstecker zum Beispiel mFileAttr verschmutze, wird der setDependentsDirty() richtig aufgerufen, aber der Wert von fileName Stecker ist immer noch der alte Wert! Ich sehe nur, dass es aktualisiert wird, sobald es durch compute() geht. Wie kann ich auf den neuen Wert in setDependentsDirty() Funktion zugreifen, da es tatsächlich durch das Plug-Wert-Update ausgelöst wird? Verschmutzter Stecker hat immer noch den alten Wert während 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); } 

Edit: Nur um zu klären, Lesen Stecker Wert selbst, plug.asString(), es hält immer noch den alten Wert.

Antwort

0

Wenn Sie genauer Blick in doc nehmen, werden Sie sehen, warum Sie den aktualisierten Wert

„WICHTIGER HINWEIS nicht bekommen: da die setDependentsDirty() -Methode bei schmutzigen Ausbreitung genannt wird, Sie jede vorsichtig, nicht zu erfüllen sein müssen Wenn Sie den Wert eines Plugs wissen wollen, verwenden Sie MDataBlock :: outputValue(), da dies nicht zur Berechnung (und damit zur Rekursion) führt. Im Allgemeinen ist die Mehrheit von {setDependentsDirty ()} Methoden, die Benutzer implementieren, sollten nur feste Beziehungen beinhalten.In dem seltenen Fall, wo Sie Plug-Werte betrachten müssen, beachten Sie bitte die Warnung mit {MDataBlock :: outputValue()} und verwenden Sie Plugs, die Werte enthalten, die Sie wissen aktuell vor dem Start von dreckigen Propa gation. "

+0

Ich hatte das eigentlich gelesen. Die Sache ist, ich habe keine Möglichkeit, dies während compute() zu tun, weil ich versuche, verschiedene Stecker Verbindung zu trennen/zu verbinden und es scheint, als wäre das nicht möglich compute() es sei denn, es gibt eine Möglichkeit, die mir nicht bewusst ist. Schau dir das an für weitere Erklärungen http://stackoverflow.com/questions/38721084/disconnecting-connecting-plugs-gives-internal-failure-in-compute – Yasin