Notifications
Clear all

[Closed] ExposeTransform Dependency Test

 MZ1

I want to create a script to find all nodes that have dependency with specific node. This is my first try:



-- Dependency Test Function:
All = #()
Searched = #()
fn RecursiveFind Obj =
(
   if Obj != undefined and finditem Searched Obj == 0 do
   (
      appendifunique Searched Obj
      for i = 1 to Obj.numsubs where (C = Obj[i].controller) != undefined do 
      (
         deps = refs.dependents C
         depsOn = refs.dependsOn C
         loopTest = for o in objects where refs.dependencyLoopTest o C collect o
         nodeTest = refs.dependentNodes C
         for d in deps do appendifunique All d
         for d in depsOn do appendifunique All d
         for d in loopTest do appendifunique All d
         for d in nodeTest do appendifunique All d
         RecursiveFind C
      )
      if isvalidnode Obj do RecursiveFind Obj.parent
   )
)

-- Find in Selection:
Obj = selection[1]
RecursiveFind Obj

-- Find Objects:
AllObjects = #()
for C in All do 
(
   for o in objects where refs.dependencyLoopTest o C do appendifunique AllObjects o
)

-- clearlistener()
select AllObjects


but the problem is some nodes like ExposeTransformHelper doesn’t have any public subanim for the node attribute. So my question is how I can find dependencies on attributes like this?

6 Replies

refs.dependencyLoopTest is absolutely enough to get any fact of dependency (at least between nodes).

5 Replies
 MZ1
(@mz1)
Joined: 1 year ago

Posts: 0

It works only in one way:


TargetNode = teapot pos:[50,0,0]
ExNode = ExposeTm exposeNode:TargetNode
-- Works:
refs.dependencyLoopTest ExNode TargetNode
-- Doesn't Work:
refs.dependencyLoopTest TargetNode ExNode

(@denist)
Joined: 1 year ago

Posts: 0

of course… that’s what the function is about

 MZ1
(@mz1)
Joined: 1 year ago

Posts: 0

I didn’t get your point , document says this function should check dependency between two max wrapper. I dont’t see any note about swaping inputs.

(@denist)
Joined: 1 year ago

Posts: 0

two nodes CANNOT depend on each other. other way it makes dependency loop.
so if any two nodes have dependency it means one node is a dependent and it depends on another.
so if refs.dependencyLoopTest node1 node2 says true, it means node1 depends on node2. And refs.dependencyLoopTest node2 node1 MUST be false

 MZ1
(@mz1)
Joined: 1 year ago

Posts: 0

So we need to check them both?