Browse Source

Cleanup: Transform, Relationship passes in different passes

this commit changes bExecute into bTransformPass and bRelationshipPass
this way, I have a bit more control over how things execute
names are consistent with what they do
and I am a bit more free to add new passes
Joseph Brandenburg 3 months ago
parent
commit
f93b3ab722
7 changed files with 47 additions and 44 deletions
  1. 6 3
      base_definitions.py
  2. 7 7
      deformer_nodes.py
  3. 19 19
      link_nodes.py
  4. 5 5
      misc_nodes.py
  5. 1 1
      primitives_nodes.py
  6. 2 2
      readtree.py
  7. 7 7
      xForm_nodes.py

+ 6 - 3
base_definitions.py

@@ -928,10 +928,13 @@ class MantisNode:
             if hasattr(constraint_or_deformer, "subtarget"):
                 constraint_or_deformer.subtarget = subtarget
 
+# PASSES DEFINED HERE!
     def bPrepare(self, bContext=None):
-        return
-    def bExecute(self, bContext=None):
-        return
+        return # This one runs BEFORE anything else
+    def bTransformPass(self, bContext=None):
+        return # This one runs in EDIT MODE
+    def bRelationshipPass(self, bContext=None):
+        return # This one runs in POSE MODE
     def bFinalize(self, bContext=None):
         return
     def bModifierApply(self, bContext=None):

+ 7 - 7
deformer_nodes.py

@@ -129,7 +129,7 @@ class DeformerArmature(MantisDeformerNode):
         return None
         #should do the trick...
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         self.executed = True
     
     def initialize_vgroups(self, xf):
@@ -363,7 +363,7 @@ class DeformerHook(MantisDeformerNode):
                 driver['vars'].append(var1)
         CreateDrivers([driver])
             
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         self.executed = True
 
     def bFinalize(self, bContext=None):
@@ -468,7 +468,7 @@ class DeformerMorphTarget(MantisDeformerNode):
         raise GraphError("%s is not connected to an upstream xForm" % self)
 
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prGreen("Executing Morph Target Node")
 
         ob = None; relative = None
@@ -745,7 +745,7 @@ class DeformerSurfaceDeform(MantisDeformerNode):
         else:
             trace_xForm_back(self, socket)
     
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         self.executed = True
          
     def bFinalize(self, bContext=None):
@@ -782,7 +782,7 @@ class DeformerMeshDeform(MantisDeformerNode):
         else:
             trace_xForm_back(self, socket)
     
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         self.executed = True
          
     def bFinalize(self, bContext=None):
@@ -818,7 +818,7 @@ class DeformerLatticeDeform(MantisDeformerNode):
         else:
             trace_xForm_back(self, socket)
     
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         self.executed = True
          
     def bFinalize(self, bContext=None):
@@ -850,7 +850,7 @@ class DeformerSmoothCorrectiveDeform(MantisDeformerNode):
         else:
             trace_xForm_back(self, socket)
     
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         self.executed = True
          
     def bFinalize(self, bContext=None):

+ 19 - 19
link_nodes.py

@@ -133,7 +133,7 @@ class LinkCopyLocation(MantisLinkNode):
         self.init_parameters(additional_parameters=additional_parameters)
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('COPY_LOCATION')
@@ -158,7 +158,7 @@ class LinkCopyRotation(MantisLinkNode):
         self.init_parameters(additional_parameters=additional_parameters)
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('COPY_ROTATION')
@@ -192,7 +192,7 @@ class LinkCopyScale(MantisLinkNode):
         self.init_parameters(additional_parameters=additional_parameters)
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('COPY_SCALE')
@@ -231,7 +231,7 @@ class LinkCopyTransforms(MantisLinkNode):
         self.init_parameters(additional_parameters=additional_parameters)
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('COPY_TRANSFORMS')
@@ -271,7 +271,7 @@ class LinkTransformation(MantisLinkNode):
             return self.update_socket_value(socket_name, ui_socket.default_value)
         return super().ui_modify_socket(ui_socket, socket_name)
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('TRANSFORM')
@@ -321,7 +321,7 @@ class LinkLimitLocation(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('LIMIT_LOCATION')
@@ -342,7 +342,7 @@ class LinkLimitRotation(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('LIMIT_ROTATION')
@@ -364,7 +364,7 @@ class LinkLimitScale(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             c = xf.bGetObject().constraints.new('LIMIT_SCALE')
@@ -386,7 +386,7 @@ class LinkLimitDistance(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapWhite("Limit Distance")+
@@ -410,7 +410,7 @@ class LinkStretchTo(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapWhite("Stretch-To")+
@@ -435,7 +435,7 @@ class LinkDampedTrack(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapWhite("Damped Track")+
@@ -456,7 +456,7 @@ class LinkLockedTrack(MantisLinkNode):
         self.init_parameters(additional_parameters={"Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapWhite("Locked Track")+
@@ -477,7 +477,7 @@ class LinkTrackTo(MantisLinkNode):
         self.init_parameters(additional_parameters={"Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapWhite("Track-To")+
@@ -498,7 +498,7 @@ class LinkInheritConstraint(MantisLinkNode):
         self.init_parameters(additional_parameters={"Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapWhite("Child-Of")+
@@ -657,7 +657,7 @@ class LinkInverseKinematics(MantisLinkNode):
             if error<0: lower_bounds=try_angle
             i+=1
 
-    def bExecute(self, context):
+    def bRelationshipPass(self, context):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapOrange("Inverse Kinematics")+
@@ -722,7 +722,7 @@ class LinkDrivenParameter(MantisLinkNode):
         self.init_parameters(additional_parameters={ "Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prepare_parameters(self)
         prGreen("Executing Driven Parameter node")
         prop = self.evaluate_input("Parameter")
@@ -777,7 +777,7 @@ class LinkArmature(MantisLinkNode):
         self.set_traverse([("Input Relationship", "Output Relationship")])
         setup_custom_props(self) # <-- this takes care of the runtime-added sockets
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapOrange("Armature")+
@@ -816,7 +816,7 @@ class LinkSplineIK(MantisLinkNode):
         self.init_parameters(additional_parameters={"Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prepare_parameters(self)
         if not self.inputs['Target'].is_linked:
             raise GraphError(f"ERROR: {self} is not connected to a target curve.")
@@ -850,7 +850,7 @@ class LinkFloor(MantisLinkNode):
         self.init_parameters(additional_parameters={"Name":None })
         self.set_traverse([("Input Relationship", "Output Relationship")])
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prepare_parameters(self)
         for xf in self.GetxForm():
             print(wrapGreen("Creating ")+wrapOrange("Floor")+

+ 5 - 5
misc_nodes.py

@@ -862,7 +862,7 @@ class UtilityDriverVariable(MantisNode):
                 return node #this will fetch the first one, that's good!
         return None
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prepare_parameters(self)
         #prPurple ("Executing Driver Variable Node")
         xF1 = self.GetxForm()
@@ -966,7 +966,7 @@ class UtilityFCurve(MantisNode):
     def evaluate_input(self, input_name):
         return super().evaluate_input(input_name)
 
-    def bExecute(self, bContext = None,):
+    def bTransformPass(self, bContext = None,):
         prepare_parameters(self)
         extrap_mode = self.evaluate_input("Extrapolation Mode")
         keys = [] # ugly but whatever
@@ -1016,7 +1016,7 @@ class UtilityDriver(MantisNode):
         self.parameters["Driver"]=MantisDriver()
         self.prepared=True
     
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         prepare_parameters(self)
         from .drivers import MantisDriver
         #prPurple("Executing Driver Node")
@@ -1094,7 +1094,7 @@ class UtilitySwitch(MantisNode):
         self.parameters["Driver"]=MantisDriver()
         self.prepared=True
 
-    def bExecute(self, bContext = None,):
+    def bRelationshipPass(self, bContext = None,):
         #prepare_parameters(self)
         #prPurple ("Executing Switch Node")
         xForm = self.GetxForm()
@@ -1926,7 +1926,7 @@ class UtilityPrint(MantisNode):
             print("Preparation phase: ", wrapWhite(self), wrapGreen(my_input))
         self.prepared = True
 
-    def bExecute(self, bContext = None,):
+    def bTransformPass(self, bContext = None,):
         if my_input := self.evaluate_input("Input"):
             print("Execution phase: ", wrapWhite(self), wrapGreen(my_input))
         self.executed = True

+ 1 - 1
primitives_nodes.py

@@ -49,7 +49,7 @@ class CirclePrimitive(PrimitiveNode):
             bObject = data.meshes.get(self.evaluate_input("Name"))
         return bObject
         
-    def bExecute(self, bContext = None,):
+    def bTransformPass(self, bContext = None,):
         # Get the datablock
         data = self.bGetObject()
         import bpy

+ 2 - 2
readtree.py

@@ -556,7 +556,7 @@ def execute_tree(nodes, base_tree, context, error_popups = False):
                         if not n.prepared:
                             n.bPrepare(context)
                         if not n.executed:
-                            n.bExecute(context)
+                            n.bTransformPass(context)
                         if (n.__class__.__name__ == "xFormArmature" ):
                             ob = n.bGetObject()
                             switch_me.append(ob)
@@ -584,7 +584,7 @@ def execute_tree(nodes, base_tree, context, error_popups = False):
                 if not n.prepared:
                     n.bPrepare(context)
                 if not n.executed:
-                    n.bExecute(context)
+                    n.bRelationshipPass(context)
             except Exception as e:
                 e = execution_error_cleanup(n, e, show_error=error_popups)
                 if error_popups == False:

+ 7 - 7
xForm_nodes.py

@@ -95,7 +95,7 @@ class xFormArmature(xFormNode):
         self.parameters['Matrix'] = get_matrix(self)
         self.prepared = True
 
-    def bExecute(self, bContext = None,):
+    def bTransformPass(self, bContext = None,):
         # from .utilities import get_node_prototype
         
         import bpy
@@ -289,7 +289,7 @@ class xFormBone(xFormNode):
         self.parameters['Matrix'] = get_matrix(self)
         self.prepared = True
     
-    def bExecute(self, bContext = None,): #possibly will need to pass context?
+    def bTransformPass(self, bContext = None,): #possibly will need to pass context?
         import bpy
         from mathutils import Vector
         if not (name := self.evaluate_input("Name")):
@@ -609,7 +609,7 @@ class xFormBone(xFormNode):
 
         evaluate_sockets(self, pb, props_sockets)
 
-        # this could probably be moved to bExecute
+        # this could probably be moved to bTransformPass
         props_sockets = {
             'hide'      : ("Hide", False),
             'show_wire' : ("Custom Object Wireframe", False),
@@ -742,13 +742,13 @@ class xFormGeometryObject(xFormNode):
         self.bObject.matrix_world = matrix
         self.prepared = True
 
-    def bExecute(self, bContext = None,):
+    def bTransformPass(self, bContext = None,):
         try:
             bContext.collection.objects.link(self.bObject)
         except RuntimeError: #already in; but a dangerous thing to pass.
             pass
         self.has_shape_keys = False
-        # putting this in bExecute simply prevents it from being run more than once.
+        # putting this in bTransformPass simply prevents it from being run more than once.
         # maybe I should do that with the rest of bPrepare, too.
         props_sockets = {
             'hide_viewport'    : ("Hide in Viewport", False),
@@ -814,13 +814,13 @@ class xFormObjectInstance(xFormNode):
         self.bObject.matrix_world = matrix
         self.prepared = True
 
-    def bExecute(self, bContext = None,):
+    def bTransformPass(self, bContext = None,):
         try:
             bContext.collection.objects.link(self.bObject)
         except RuntimeError: #already in; but a dangerous thing to pass.
             pass
         self.has_shape_keys = False
-        # putting this in bExecute simply prevents it from being run more than once.
+        # putting this in bTransformPass simply prevents it from being run more than once.
         # maybe I should do that with the rest of bPrepare, too.
         props_sockets = {
             'hide_viewport'    : ("Hide in Viewport", False),