Working on some custom nodes, I ran into something I’ve not considered before.

Here are my nodes in the graph -

A Plate node takes position inputs, marks a “tick” attribute dirty to indicate to a central Solver node that it has changed.

This triggers the Solver to compute, updating the output matrix plugs.

Except, by default, using only the `attributeAffects()`

function and with an empty `compute()`

method on the Solver, the Solver does not actually recompute when the Plate changes.

Here is (test case) compute code for the Plate -

And here for the Solver -

The two commented lines in the solver query the datablock `inputArrayValue()`

for the tick plug attributes - with these lines commented, as in the image, the solver does not compute when the input transform changes.

With these lines *active* though, the solver does compute *and triggers the compute of the previous Plate node, within the same scope*. This seems wild to me - is this actually how Maya works? With the datablock of one node responsible for micromanaging the computes of all its inputs?

If it is, then what’s the point of `attributeAffects()`

at all? Or is this just an artefact of the python implementation?

I’ve verified that `attributeAffects()`

is run correctly for both nodes, on both the outer compound attributes and the leaf attributes themselves.

If anyone has any experience with this I’d love your insight.

Thanks