PDA

View Full Version : MEL node context


dbsmith
11-23-2006, 09:10 PM
Hey,
I have my own custom node, and have different instances of that node. This node is connected to a mesh.
Inside that node, I have a button that can load and apply a texture to its connected mesh.
Eg

Node1 -> Mesh1

Node2 -> Mesh2

So if I have a button that calls a mel script, how can I get mel to return the context where it was pushed?

Eg if I push the button inside Node2's attribute editor, what line of mel code will return the name "Node2"?
Should be an easy solution, just slightly tricky to explain

artifish
11-23-2006, 09:32 PM
Heya,

First of all a word of advice: never change anything in the dependency graph within the compute function of your node. this is braking one of maya's fundamental principles that each node only deals with its own plugs and data and never uses anything for which it doesn't have any explicit input. even though maya's api is not very strict and allows you to do something like this - changing the state of the dg in the way you describe will almost certainly get you into trouble at some point as your basicly messing up the dirty flag propagation.

So what you could do instead is to to the modification with a mel script. Either your currently selected node or attach your script to a custom control in your node's AETemplate. You know which node you are currently displaying in the AE, because you updated the UI (and your button) with the AEmyControlReplace function which gets automaticly called from maya with the nodeAttr (which you can simply tokenize to get the node name).

Hope this helps,
Carsten

dbsmith
11-23-2006, 11:34 PM
>> attach your script to a custom control in your node's AETemplate. You know which node you are currently displaying in the AE, because you updated the UI (and your button) with the AEmyControlReplace function which gets automaticly called from maya with the nodeAttr (which you can simply tokenize to get the node name).

Yeah, thats what im doing already, i just didnt explain it very well. Everythings in MEL, with regard to the button.
Sweet, thanks, I'll try what you said and get back to you.
Here's my AEtemplate, i assume i can just modify this to pass the $nodeName parameter to initTFW method (the one with the button). InitTFW mel procedure exists elsewhere...




global proc AEHFNodeTemplate ( string $nodeName )

{



AEswatchDisplay $nodeName;

editorTemplate -beginScrollLayout;

editorTemplate -beginLayout "Attributes" -collapse 0;

AEfieldCommon $nodeName;

editorTemplate -addControl "View_Detail";

editorTemplate -addControl "Render_Detail";

editorTemplate -addControl "Camera_Ratio";

editorTemplate -addControl "at_Origin";

editorTemplate -callCustom init_TFW refresh_TFW;

editorTemplate -endLayout;

AEdependNodeTemplate $nodeName;

editorTemplate -addExtraControls;

editorTemplate -endScrollLayout;

CGTalk Moderation
11-23-2006, 11:34 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.