Przeglądaj źródła

Add Display Size Socket to CurvePin

Joseph Brandenburg 6 miesięcy temu
rodzic
commit
49ca53963f
2 zmienionych plików z 13 dodań i 4 usunięć
  1. 4 2
      node_container_common.py
  2. 9 2
      xForm_containers.py

+ 4 - 2
node_container_common.py

@@ -246,8 +246,10 @@ def finish_driver(nc, driver_item, prop):
             else:
             else:
                 bone_col = nc.bGetParentArmature().pose.bones
                 bone_col = nc.bGetParentArmature().pose.bones
             driver["owner"] = bone_col[nc.bObject] # we use "unsafe" brackets instead of get() because we want to see any errors that occur
             driver["owner"] = bone_col[nc.bObject] # we use "unsafe" brackets instead of get() because we want to see any errors that occur
-        elif nc.node_type in ['XFORM',] and nc.__class__.__name__ in ['xFormCurvePin']:
-            driver["owner"] = nc.bObject.constraints[0]
+        # HACK having special cases here is indicitave of a deeper problem that should be refactored
+        elif nc.__class__.__name__ in ['xFormCurvePin'] and \
+                      prop in ['offset_factor', 'forward_axis', 'up_axis']:
+                driver["owner"] = nc.bObject.constraints['Curve Pin']
         else:
         else:
             driver["owner"] = nc.bObject
             driver["owner"] = nc.bObject
         driver["prop"] = prop
         driver["prop"] = prop

+ 9 - 2
xForm_containers.py

@@ -855,6 +855,9 @@ xFormCurvePinSockets = [
     UpAxisTemplate := SockTemplate(
     UpAxisTemplate := SockTemplate(
         name="Up Axis", is_input=True,  bl_idname='EnumUpAxis',
         name="Up Axis", is_input=True,  bl_idname='EnumUpAxis',
         default_value="UP_Z", blender_property='up_axis' ),
         default_value="UP_Z", blender_property='up_axis' ),
+    CurvePinDisplaySize := SockTemplate(
+        name="Display Size", is_input=True,  bl_idname='FloatPositiveSocket',
+        default_value=0.05, blender_property='empty_display_size'),
     xFormOutTemplate := SockTemplate(
     xFormOutTemplate := SockTemplate(
         name="xForm Out", is_input=False,  bl_idname='xFormSocket', ),
         name="xForm Out", is_input=False,  bl_idname='xFormSocket', ),
 ]
 ]
@@ -928,8 +931,12 @@ class xFormCurvePin(MantisNode):
         c.name = "Curve Pin"
         c.name = "Curve Pin"
 
 
         props_sockets = self.gen_property_socket_map()
         props_sockets = self.gen_property_socket_map()
-        del props_sockets['name']
-        evaluate_sockets(self, c, props_sockets)
+        constraint_props_sockets = props_sockets.copy()
+        del constraint_props_sockets['name']; del constraint_props_sockets['empty_display_size']
+        del props_sockets['offset_factor']; del props_sockets['forward_axis']
+        del props_sockets['up_axis']
+        evaluate_sockets(self, c, constraint_props_sockets)
+        evaluate_sockets(self, self.bObject, props_sockets)
         # this isn't usually run on xForm nodes so for now I need to set the
         # this isn't usually run on xForm nodes so for now I need to set the
         #   driver's default values manually if I want a matrix now.
         #   driver's default values manually if I want a matrix now.
         # because the drivers may not have initialized yet.
         # because the drivers may not have initialized yet.