xForm_socket_templates.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. from .mantis_dataclasses import MantisSocketTemplate as SockTemplate
  2. from .misc_nodes_socket_templates import SplineIndexTemplate
  3. from dataclasses import replace
  4. xFormArmatureSockets=[
  5. NameTemplate := SockTemplate(
  6. name="Name", is_input=True, bl_idname='StringSocket',
  7. default_value='Armature', blender_property='name' ),
  8. RotationOrderTemplate := SockTemplate(
  9. name="Rotation Order", is_input=True, bl_idname='RotationOrderSocket',
  10. default_value='XYZ', blender_property='rotation_mode' ),
  11. ObjectMatrixTemplate := SockTemplate(
  12. name="Matrix", is_input=True, bl_idname='MatrixSocket',
  13. blender_property='matrix_world' ),
  14. RelationshipInTemplate := SockTemplate(
  15. name="Relationship", is_input=True, bl_idname='RelationshipSocket', ),
  16. CustomPropsTemplate := SockTemplate(
  17. name="Custom Properties", is_input=True, bl_idname='CustomPropSocket',
  18. use_multi_input=True, ),
  19. xFormOutTemplate := SockTemplate(
  20. name="xForm Out", is_input=False, bl_idname='xFormSocket', ),
  21. ]
  22. xFormGeometryObjectSockets=[
  23. replace(NameTemplate, default_value='Object'),
  24. GeometryTemplate := SockTemplate(
  25. name="Geometry", is_input=True, bl_idname='GeometrySocket', ),
  26. ObjectMatrixTemplate,
  27. RelationshipInTemplate,
  28. DeformerInTemplate := SockTemplate(name="Deformer", is_input=True,
  29. bl_idname='DeformerSocket', ),
  30. HideTemplate := SockTemplate(name="Hide in Viewport",
  31. is_input=True, bl_idname='HideSocket', default_value=False,
  32. blender_property='hide_viewport' ),
  33. HideRenderTemplate := SockTemplate(name="Hide in Render",
  34. is_input=True, bl_idname='BooleanSocket', default_value=False,
  35. blender_property='hide_render' ),
  36. CustomPropsTemplate,
  37. xFormOutTemplate,
  38. ]
  39. xFormGeometryObjectInstanceSockets=[
  40. replace(NameTemplate, default_value='Object Instance'),
  41. SourcexFormTemplate := SockTemplate(
  42. name="Source Object", is_input=True, bl_idname='xFormSocket', ),
  43. AsInstanceTemplate := SockTemplate( name="As Instance", is_input=True,
  44. bl_idname='BooleanSocket', default_value=True,),
  45. ObjectMatrixTemplate,
  46. RelationshipInTemplate,
  47. DeformerInTemplate,
  48. HideTemplate,
  49. HideRenderTemplate,
  50. CustomPropsTemplate,
  51. xFormOutTemplate,
  52. ]
  53. xFormCurvePinSockets = [
  54. replace(NameTemplate, default_value='Curve Pin'),
  55. ParentCurveTemplate := SockTemplate(
  56. name="Parent Curve", is_input=True, bl_idname='xFormSocket', ),
  57. SplineIndexTemplate,
  58. FactorTemplate := SockTemplate(
  59. name="Curve Pin Factor", is_input=True, bl_idname='FloatFactorSocket',
  60. default_value=0.0, blender_property='offset_factor' ),
  61. ForwardAxisTemplate := SockTemplate(
  62. name="Forward Axis", is_input=True, bl_idname='EnumFollowPathForwardAxis',
  63. default_value="FORWARD_Y", blender_property='forward_axis' ),
  64. UpAxisTemplate := SockTemplate(
  65. name="Up Axis", is_input=True, bl_idname='EnumUpAxis',
  66. default_value="UP_Z", blender_property='up_axis' ),
  67. CurvePinDisplaySize := SockTemplate(
  68. name="Display Size", is_input=True, bl_idname='FloatPositiveSocket',
  69. default_value=0.05, blender_property='empty_display_size'),
  70. CustomPropsTemplate,
  71. xFormOutTemplate,
  72. ]
  73. xFormGetBoneSockets = [
  74. ParentArmatureTemplate := SockTemplate(
  75. name="Parent Armature", is_input=True, bl_idname='EnumArmature', ),
  76. ExistingBoneNameTemplate := replace(NameTemplate, name='Bone',
  77. default_value='', bl_idname="EnumExistingBoneSocket"),
  78. xFormOutTemplate,
  79. ]
  80. # and bones! this one is a bit much...
  81. from math import pi
  82. xFormBoneSockets = [
  83. replace(NameTemplate, default_value='Bone', category='always_show'),
  84. replace(RotationOrderTemplate, category='always_show'),
  85. BoneMatrixTemplate := replace(ObjectMatrixTemplate,
  86. blender_property='matrix', category='always_show'),
  87. replace(RelationshipInTemplate, category='always_show'),
  88. # IK
  89. IKStretch := SockTemplate(
  90. name="IK Stretch", is_input=True, bl_idname='FloatFactorSocket',
  91. default_value=0, blender_property='ik_stretch', category='IK'),
  92. IKLock := SockTemplate(
  93. name="Lock IK", is_input=True, bl_idname='BooleanThreeTupleSocket',
  94. default_value=(False, False, False), category='IK',
  95. blender_property=('lock_ik_x', 'lock_ik_y', 'lock_ik_z'),),
  96. IKStiffness := SockTemplate(
  97. name="IK Stiffness", is_input=True, bl_idname='BooleanThreeTupleSocket',
  98. default_value=(0, 0, 0), category='IK',
  99. blender_property=('ik_stiffness_x', 'ik_stiffness_y', 'ik_stiffness_z')),
  100. IKLimit := SockTemplate(
  101. name="Limit IK", is_input=True, bl_idname='BooleanThreeTupleSocket',
  102. default_value=(False, False, False), category='IK',
  103. blender_property=('use_ik_limit_x', 'use_ik_limit_y', 'use_ik_limit_z')),
  104. IKXMin := SockTemplate(
  105. name="X Min", is_input=True, bl_idname='NodeSocketFloatAngle',
  106. default_value=-pi, blender_property='ik_min_x', category='IK'),
  107. IKXMax := replace(IKXMin, name="X Max", default_value=pi,
  108. blender_property='ik_max_x'),
  109. IKYMax := replace(IKXMin, name="Y Min", blender_property='ik_min_y'),
  110. IKYMax := replace(IKXMax, name="Y Max", blender_property='ik_max_y'),
  111. IKZMax := replace(IKXMin, name="Z Min", blender_property='ik_min_z'),
  112. IKZMax := replace(IKXMax, name="Z Max", blender_property='ik_max_z'),
  113. # Visual Stuff
  114. BoneCollectionTemplate := SockTemplate(name="Bone Collection", is_input=True,
  115. bl_idname='BoneCollectionSocket', category='Display', use_multi_input=True),
  116. CustomObjectTemplate := replace(SourcexFormTemplate, name='Custom Object',
  117. category='Display'),
  118. OverrideXFormTemplate := replace(SourcexFormTemplate,
  119. name='Custom Object xForm Override', category='Display'),
  120. CustomObjectScaleToBoneTemplate := replace(HideRenderTemplate,
  121. name='Custom Object Scale to Bone Length', category='Display',
  122. blender_property='use_custom_shape_bone_size',
  123. default_value=True,),
  124. CustomObjectWireframeTemplate := replace(HideRenderTemplate,
  125. name='Custom Object Wireframe', category='Display',
  126. blender_property='show_wire', default_value=True,),
  127. CustomObjectScaleTemplate := SockTemplate(name="Custom Object Scale",
  128. is_input=True, bl_idname='VectorScaleSocket',
  129. category='Display', default_value=(1.0,1.0,1.0),),
  130. CustomObjectScaleTemplate := SockTemplate(name="Custom Object Translation",
  131. is_input=True, bl_idname='VectorSocket',
  132. category='Display', default_value=(0.0,0.0,0.0),),
  133. CustomObjectScaleTemplate := SockTemplate(name="Custom Object Rotation",
  134. is_input=True, bl_idname='VectorEulerSocket',
  135. category='Display', default_value=(0.0,0.0,0.0),),
  136. CustomColor := SockTemplate(name="Color",
  137. is_input=True, bl_idname='ColorSetSocket',
  138. category='Display',),
  139. InheritColor := SockTemplate(name="Inherit Color",
  140. is_input=True, bl_idname='BooleanSocket',
  141. category='Display', default_value=True),
  142. # Deform Stuff
  143. BoneDeformTemplate := replace(HideRenderTemplate, name='Deform',
  144. category='Deform', blender_property='use_deform', default_value=False,),
  145. EnvelopeDistanceTemplate := SockTemplate( name='Envelope Distance',
  146. bl_idname='FloatPositiveSocket', category='Deform',
  147. blender_property='envelope_distance', default_value=0,),
  148. EnvelopeWeightTemplate := replace(EnvelopeDistanceTemplate,
  149. name='Envelope Weight', bl_idname = 'FloatFactorSocket',
  150. blender_property='envelope_weight', default_value=1.0,),
  151. EnvelopeWeightTemplate := replace(EnvelopeDistanceTemplate,
  152. name='Envelope Multiply', bl_idname = 'BooleanSocket',
  153. blender_property='use_envelope_multiply', default_value=False,),
  154. EnvelopeWeightTemplate := replace(EnvelopeDistanceTemplate,
  155. name='Envelope Head Radius', blender_property='head_radius', default_value=0.0,),
  156. EnvelopeWeightTemplate := replace(EnvelopeDistanceTemplate,
  157. name='Envelope Tail Radius', blender_property='tail_radius', default_value=0.0,),
  158. # BBone Stuff
  159. BBoneSegmentsTemplate := SockTemplate(name="BBone Segments", is_input=True,
  160. bl_idname='UnsignedIntSocket', category = 'bbone',
  161. blender_property='bbone_segments', default_value=1 ),
  162. BBoneXSizeTemplate := replace(BBoneSegmentsTemplate, name='BBone X Size',
  163. bl_idname='FloatSocket', blender_property='bbone_x', default_value=0.0025, ),
  164. BBoneYSizeTemplate := replace(BBoneXSizeTemplate, name='BBone Z Size',
  165. blender_property='bbone_y', ),
  166. BBoneHQDeformation := replace(BBoneSegmentsTemplate, name='BBone HQ Deformation',
  167. bl_idname='BooleanSocket', blender_property='', default_value=None ),
  168. BBoneXCurveInTemplate := replace( BBoneXSizeTemplate, name="BBone X Curve-In",
  169. bl_idname='FloatSocket', blender_property='bbone_curveinx', default_value=0.0, ),
  170. BBoneZCurveInTemplate := replace(BBoneXCurveInTemplate, name="BBone Z Curve-In",
  171. blender_property='bbone_curveinz', ),
  172. BBoneXCurveOutTemplate := replace(BBoneXCurveInTemplate, name="BBone X Curve-Out",
  173. blender_property='bbone_curveoutx', ),
  174. BBoneZCurveOutTemplate := replace(BBoneXCurveInTemplate, name="BBone Z Curve-Out",
  175. blender_property='bbone_curveoutz', ), # I'm tired of assigning variables, not gonna bother anymore lol
  176. # it's just a conincidence that a lot of these are also unimplemented
  177. replace(BBoneXCurveInTemplate, name="BBone Roll-In", blender_property='bbone_rollin', ), # CURRENTLY UNIMPLEMENTED
  178. replace(BBoneXCurveInTemplate, name="BBone Roll-Out", blender_property='bbone_rollout', ), # CURRENTLY UNIMPLEMENTED
  179. replace(BBoneXCurveInTemplate, name="BBone Inherit End Roll",
  180. bl_idname='BooleanSocket',), # CURRENTLY UNIMPLEMENTED
  181. replace(BBoneXCurveInTemplate, name="BBone Scale-In",
  182. bl_idname='VectorSocket',), # CURRENTLY DOESN'T WORK
  183. replace(BBoneXCurveInTemplate, name="BBone Scale-Out",
  184. bl_idname='VectorSocket',), # CURRENTLY DOESN'T WORK
  185. replace(BBoneXCurveInTemplate, name="BBone Ease-In",), # CURRENTLY DOESN'T WORK
  186. replace(BBoneXCurveInTemplate, name="BBone Ease-Out",), # CURRENTLY DOESN'T WORK
  187. replace(BBoneXCurveInTemplate, name="BBone Easing",
  188. bl_idname='BooleanSocket',), # CURRENTLY DOESN'T WORK
  189. replace(BBoneXCurveInTemplate, name="BBone Start Handle Type",
  190. bl_idname="EnumBBoneHandleType",
  191. blender_property='bbone_handle_type_start',),
  192. replace(BBoneXCurveInTemplate, name="BBone Custom Start Handle",
  193. bl_idname="StringSocket",
  194. blender_property='bbone_custom_handle_start',),
  195. replace(BBoneXCurveInTemplate, name="BBone Start Handle Scale",
  196. bl_idname="BooleanThreeTupleSocket",
  197. blender_property='bbone_handle_use_scale_start',),
  198. replace(BBoneXCurveInTemplate, name="BBone Start Handle Ease",
  199. bl_idname='BooleanSocket',),# CURRENTLY DOESN'T WORK),
  200. replace(BBoneXCurveInTemplate, name="BBone End Handle Type",
  201. bl_idname="EnumBBoneHandleType",
  202. blender_property='bbone_handle_type_end',),
  203. replace(BBoneXCurveInTemplate, name="BBone Custom End Handle",
  204. bl_idname="StringSocket",
  205. blender_property='bbone_custom_handle_end',),
  206. replace(BBoneXCurveInTemplate, name="BBone End Handle Scale",
  207. bl_idname="BooleanThreeTupleSocket",
  208. blender_property='bbone_handle_use_scale_end',),
  209. replace(BBoneXCurveInTemplate, name="BBone End Handle Ease",
  210. bl_idname='BooleanSocket',),# CURRENTLY DOESN'T WORK),
  211. # locks
  212. LockLocationTemplate := SockTemplate(name="Lock Location",
  213. is_input=True, bl_idname='BooleanThreeTupleSocket', category = 'lock',
  214. blender_property='lock_location', default_value=[True, True, True] ),
  215. LockRotationTemplate := replace(LockLocationTemplate, name="Lock Rotation",
  216. blender_property='lock_rotation',),
  217. LockRotationTemplate := replace(LockLocationTemplate, name="Lock Scale",
  218. blender_property='lock_scale',),
  219. # hide
  220. replace(HideTemplate, name='Hide', category='always_show',
  221. blender_property='hide', default_value=False,),
  222. CustomPropsTemplate,
  223. # Output
  224. xFormOutTemplate,
  225. ]