Browse Source

use generated prop_sockets map in Armature Deformer

Joseph Brandenburg 1 month ago
parent
commit
6eb28ad9e9
2 changed files with 14 additions and 14 deletions
  1. 1 8
      deformer_nodes.py
  2. 13 6
      deformer_socket_templates.py

+ 1 - 8
deformer_nodes.py

@@ -265,14 +265,7 @@ class DeformerArmature(MantisDeformerNode):
                 raise RuntimeError(f"Modifier was not created in node {self} -- the object is invalid.")
             self.bObject.append(d)
             d.object = self.bGetParentArmature()
-            props_sockets = {
-            'vertex_group'               : ("Blend Vertex Group", ""),
-            'invert_vertex_group'        : ("Invert Vertex Group", ""),
-            'use_deform_preserve_volume' : ("Preserve Volume", False),
-            'use_multi_modifier'         : ("Use Multi Modifier", False),
-            'use_bone_envelopes'         : ("Use Envelopes", False),
-            'use_vertex_groups'          : ("Use Vertex Groups", False),
-            }
+            props_sockets = self.gen_property_socket_map()
             evaluate_sockets(self, d, props_sockets)
             #
             if (skin_method := self.evaluate_input("Skinning Method")) == "AUTOMATIC_HEAT":

+ 13 - 6
deformer_socket_templates.py

@@ -10,15 +10,22 @@ Target = ST(name="Target", bl_idname='xFormSocket',
 
 DeformArmatureSockets = [ 
     ArmatureObject := replace(Target, name="Armature Object"),
-    BlendVertexGroup := ST(name="Blend Vertex Group", bl_idname="StringSocket", is_input=True),
-    InvertBlendVertexGroup := ST(name="Invert Vertex Group", bl_idname="BooleanSocket", is_input=True),
+    BlendVertexGroup := ST(name="Blend Vertex Group", bl_idname="StringSocket", is_input=True,
+                           blender_property='vertex_group'),
+    InvertBlendVertexGroup := ST(name="Invert Vertex Group", bl_idname="BooleanSocket", is_input=True,
+                           blender_property='invert_vertex_group'),
     # QuatBlendVertexGroup := ST(name="Preserve Volume Vertex Group", bl_idname="StringSocket", is_input=True)
     # ^ TODO figure out the right UX for automatic dual-quat blending
-    PreserveVolume := ST(name="Preserve Volume", bl_idname="BooleanSocket", is_input=True),
+    PreserveVolume := ST(name="Preserve Volume", bl_idname="BooleanSocket", is_input=True,
+                           blender_property='use_deform_preserve_volume'),
     # ^ TODO: make the above controlled by a vertex group instead.
-    UseMultiModifier := ST(name="Use Multi Modifier", bl_idname="BooleanSocket", is_input=True), # might just set this auto
-    UseEnvelopes := ST(name="Use Envelopes", bl_idname="BooleanSocket", is_input=True, default_value=False),
-    UseVertexGroups := ST(name="Use Vertex Groups", bl_idname="BooleanSocket", is_input=True, default_value=True),
+    # might just set this below to auto (I don't evern understand it)
+    UseMultiModifier := ST(name="Use Multi Modifier", bl_idname="BooleanSocket", is_input=True,
+                           blender_property='use_multi_modifier'),
+    UseEnvelopes := ST(name="Use Envelopes", bl_idname="BooleanSocket", is_input=True, default_value=False,
+                           blender_property='use_bone_envelopes'),
+    UseVertexGroups := ST(name="Use Vertex Groups", bl_idname="BooleanSocket", is_input=True, default_value=True,
+                           blender_property='use_vertex_groups'),
     DeformerInput := ST(name="Deformer", bl_idname="DeformerSocket", is_input=True),
     CopySkinWeightsFrom := ST(name="Copy Skin Weights From", bl_idname="xFormSocket", is_input=True, hide=True),
     SkinningMethod := ST(name="Skinning Method", bl_idname="EnumSkinning", is_input=True),