nodebpy 0.3.0__py3-none-any.whl → 0.3.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,7 +24,9 @@ from ..types import (
24
24
 
25
25
 
26
26
  class AlignRotationToVector(NodeBuilder):
27
- """Orient a rotation along the given direction"""
27
+ """
28
+ Orient a rotation along the given direction
29
+ """
28
30
 
29
31
  _bl_idname = "FunctionNodeAlignRotationToVector"
30
32
  node: bpy.types.FunctionNodeAlignRotationToVector
@@ -82,7 +84,9 @@ class AlignRotationToVector(NodeBuilder):
82
84
 
83
85
 
84
86
  class AxesToRotation(NodeBuilder):
85
- """Create a rotation from a primary and (ideally orthogonal) secondary axis"""
87
+ """
88
+ Create a rotation from a primary and (ideally orthogonal) secondary axis
89
+ """
86
90
 
87
91
  _bl_idname = "FunctionNodeAxesToRotation"
88
92
  node: bpy.types.FunctionNodeAxesToRotation
@@ -134,7 +138,9 @@ class AxesToRotation(NodeBuilder):
134
138
 
135
139
 
136
140
  class AxisAngleToRotation(NodeBuilder):
137
- """Build a rotation from an axis and a rotation around that axis"""
141
+ """
142
+ Build a rotation from an axis and a rotation around that axis
143
+ """
138
144
 
139
145
  _bl_idname = "FunctionNodeAxisAngleToRotation"
140
146
  node: bpy.types.FunctionNodeAxisAngleToRotation
@@ -166,7 +172,9 @@ class AxisAngleToRotation(NodeBuilder):
166
172
 
167
173
 
168
174
  class BitMath(NodeBuilder):
169
- """Perform bitwise operations on 32-bit integers"""
175
+ """
176
+ Perform bitwise operations on 32-bit integers
177
+ """
170
178
 
171
179
  _bl_idname = "FunctionNodeBitMath"
172
180
  node: bpy.types.FunctionNodeBitMath
@@ -194,6 +202,11 @@ class BitMath(NodeBuilder):
194
202
  """Create Bit Math with operation 'Or'."""
195
203
  return cls(operation="OR", a=a, b=b)
196
204
 
205
+ @classmethod
206
+ def exclusive_or(cls, a: TYPE_INPUT_INT = 0, b: TYPE_INPUT_INT = 0) -> "BitMath":
207
+ """Create Bit Math with operation 'Exclusive Or'."""
208
+ return cls(operation="XOR", a=a, b=b)
209
+
197
210
  @classmethod
198
211
  def l_not(cls, a: TYPE_INPUT_INT = 0) -> "BitMath":
199
212
  """Create Bit Math with operation 'Not'."""
@@ -239,7 +252,9 @@ class BitMath(NodeBuilder):
239
252
 
240
253
 
241
254
  class Blackbody(NodeBuilder):
242
- """Convert a blackbody temperature to an RGB value"""
255
+ """
256
+ Convert a blackbody temperature to an RGB value
257
+ """
243
258
 
244
259
  _bl_idname = "ShaderNodeBlackbody"
245
260
  node: bpy.types.ShaderNodeBlackbody
@@ -262,7 +277,9 @@ class Blackbody(NodeBuilder):
262
277
 
263
278
 
264
279
  class BooleanMath(NodeBuilder):
265
- """Perform a logical operation on the given boolean inputs"""
280
+ """
281
+ Perform a logical operation on the given boolean inputs
282
+ """
266
283
 
267
284
  _bl_idname = "FunctionNodeBooleanMath"
268
285
  node: bpy.types.FunctionNodeBooleanMath
@@ -304,6 +321,15 @@ class BooleanMath(NodeBuilder):
304
321
  """Create Boolean Math with operation 'Not'."""
305
322
  return cls(operation="NOT", boolean=boolean)
306
323
 
324
+ @classmethod
325
+ def not_and(
326
+ cls,
327
+ boolean: TYPE_INPUT_BOOLEAN = False,
328
+ boolean_001: TYPE_INPUT_BOOLEAN = False,
329
+ ) -> "BooleanMath":
330
+ """Create Boolean Math with operation 'Not And'."""
331
+ return cls(operation="NAND", boolean=boolean, boolean_001=boolean_001)
332
+
307
333
  @classmethod
308
334
  def nor(
309
335
  cls,
@@ -322,6 +348,15 @@ class BooleanMath(NodeBuilder):
322
348
  """Create Boolean Math with operation 'Equal'."""
323
349
  return cls(operation="XNOR", boolean=boolean, boolean_001=boolean_001)
324
350
 
351
+ @classmethod
352
+ def not_equal(
353
+ cls,
354
+ boolean: TYPE_INPUT_BOOLEAN = False,
355
+ boolean_001: TYPE_INPUT_BOOLEAN = False,
356
+ ) -> "BooleanMath":
357
+ """Create Boolean Math with operation 'Not Equal'."""
358
+ return cls(operation="XOR", boolean=boolean, boolean_001=boolean_001)
359
+
325
360
  @classmethod
326
361
  def imply(
327
362
  cls,
@@ -372,7 +407,9 @@ class BooleanMath(NodeBuilder):
372
407
 
373
408
 
374
409
  class Clamp(NodeBuilder):
375
- """Clamp a value between a minimum and a maximum"""
410
+ """
411
+ Clamp a value between a minimum and a maximum
412
+ """
376
413
 
377
414
  _bl_idname = "ShaderNodeClamp"
378
415
  node: bpy.types.ShaderNodeClamp
@@ -420,7 +457,9 @@ class Clamp(NodeBuilder):
420
457
 
421
458
 
422
459
  class ColorRamp(NodeBuilder):
423
- """Map values to colors with the use of a gradient"""
460
+ """
461
+ Map values to colors with the use of a gradient
462
+ """
424
463
 
425
464
  _bl_idname = "ShaderNodeValToRGB"
426
465
  node: bpy.types.ShaderNodeValToRGB
@@ -448,7 +487,9 @@ class ColorRamp(NodeBuilder):
448
487
 
449
488
 
450
489
  class CombineBundle(NodeBuilder):
451
- """Combine multiple socket values into one."""
490
+ """
491
+ Combine multiple socket values into one.
492
+ """
452
493
 
453
494
  _bl_idname = "NodeCombineBundle"
454
495
  node: bpy.types.Node
@@ -474,7 +515,9 @@ class CombineBundle(NodeBuilder):
474
515
 
475
516
 
476
517
  class CombineColor(NodeBuilder):
477
- """Combine four channels into a single color, based on a particular color model"""
518
+ """
519
+ Combine four channels into a single color, based on a particular color model
520
+ """
478
521
 
479
522
  _bl_idname = "FunctionNodeCombineColor"
480
523
  node: bpy.types.FunctionNodeCombineColor
@@ -528,7 +571,9 @@ class CombineColor(NodeBuilder):
528
571
 
529
572
 
530
573
  class CombineMatrix(NodeBuilder):
531
- """Construct a 4x4 matrix from its individual values"""
574
+ """
575
+ Construct a 4x4 matrix from its individual values
576
+ """
532
577
 
533
578
  _bl_idname = "FunctionNodeCombineMatrix"
534
579
  node: bpy.types.FunctionNodeCombineMatrix
@@ -661,7 +706,9 @@ class CombineMatrix(NodeBuilder):
661
706
 
662
707
 
663
708
  class CombineTransform(NodeBuilder):
664
- """Combine a translation vector, a rotation, and a scale vector into a transformation matrix"""
709
+ """
710
+ Combine a translation vector, a rotation, and a scale vector into a transformation matrix
711
+ """
665
712
 
666
713
  _bl_idname = "FunctionNodeCombineTransform"
667
714
  node: bpy.types.FunctionNodeCombineTransform
@@ -699,7 +746,9 @@ class CombineTransform(NodeBuilder):
699
746
 
700
747
 
701
748
  class CombineXYZ(NodeBuilder):
702
- """Create a vector from X, Y, and Z components"""
749
+ """
750
+ Create a vector from X, Y, and Z components
751
+ """
703
752
 
704
753
  _bl_idname = "ShaderNodeCombineXYZ"
705
754
  node: bpy.types.ShaderNodeCombineXYZ
@@ -737,7 +786,9 @@ class CombineXYZ(NodeBuilder):
737
786
 
738
787
 
739
788
  class EulerToRotation(NodeBuilder):
740
- """Build a rotation from separate angles around each axis"""
789
+ """
790
+ Build a rotation from separate angles around each axis
791
+ """
741
792
 
742
793
  _bl_idname = "FunctionNodeEulerToRotation"
743
794
  node: bpy.types.FunctionNodeEulerToRotation
@@ -760,7 +811,9 @@ class EulerToRotation(NodeBuilder):
760
811
 
761
812
 
762
813
  class FindInString(NodeBuilder):
763
- """Find the number of times a given string occurs in another string and the position of the first match"""
814
+ """
815
+ Find the number of times a given string occurs in another string and the position of the first match
816
+ """
764
817
 
765
818
  _bl_idname = "FunctionNodeFindInString"
766
819
  node: bpy.types.FunctionNodeFindInString
@@ -797,7 +850,9 @@ class FindInString(NodeBuilder):
797
850
 
798
851
 
799
852
  class FloatCurve(NodeBuilder):
800
- """Map an input float to a curve and outputs a float value"""
853
+ """
854
+ Map an input float to a curve and outputs a float value
855
+ """
801
856
 
802
857
  _bl_idname = "ShaderNodeFloatCurve"
803
858
  node: bpy.types.ShaderNodeFloatCurve
@@ -829,7 +884,9 @@ class FloatCurve(NodeBuilder):
829
884
 
830
885
 
831
886
  class FloatToInteger(NodeBuilder):
832
- """Convert the given floating-point number to an integer, with a choice of methods"""
887
+ """
888
+ Convert the given floating-point number to an integer, with a choice of methods
889
+ """
833
890
 
834
891
  _bl_idname = "FunctionNodeFloatToInt"
835
892
  node: bpy.types.FunctionNodeFloatToInt
@@ -865,7 +922,9 @@ class FloatToInteger(NodeBuilder):
865
922
 
866
923
 
867
924
  class HashValue(NodeBuilder):
868
- """Generate a randomized integer using the given input value as a seed"""
925
+ """
926
+ Generate a randomized integer using the given input value as a seed
927
+ """
869
928
 
870
929
  _bl_idname = "FunctionNodeHashValue"
871
930
  node: bpy.types.FunctionNodeHashValue
@@ -965,7 +1024,9 @@ class HashValue(NodeBuilder):
965
1024
 
966
1025
 
967
1026
  class IndexOfNearest(NodeBuilder):
968
- """Find the nearest element in a group. Similar to the "Sample Nearest" node"""
1027
+ """
1028
+ Find the nearest element in a group. Similar to the "Sample Nearest" node
1029
+ """
969
1030
 
970
1031
  _bl_idname = "GeometryNodeIndexOfNearest"
971
1032
  node: bpy.types.GeometryNodeIndexOfNearest
@@ -1002,7 +1063,9 @@ class IndexOfNearest(NodeBuilder):
1002
1063
 
1003
1064
 
1004
1065
  class IntegerMath(NodeBuilder):
1005
- """Perform various math operations on the given integer inputs"""
1066
+ """
1067
+ Perform various math operations on the given integer inputs
1068
+ """
1006
1069
 
1007
1070
  _bl_idname = "FunctionNodeIntegerMath"
1008
1071
  node: bpy.types.FunctionNodeIntegerMath
@@ -1067,6 +1130,21 @@ class IntegerMath(NodeBuilder):
1067
1130
  """Create Integer Math with operation 'Divide'."""
1068
1131
  return cls(operation="DIVIDE", value=value, value_001=value_001)
1069
1132
 
1133
+ @classmethod
1134
+ def multiply_add(
1135
+ cls,
1136
+ value: TYPE_INPUT_INT = 0,
1137
+ value_001: TYPE_INPUT_INT = 0,
1138
+ value_002: TYPE_INPUT_INT = 0,
1139
+ ) -> "IntegerMath":
1140
+ """Create Integer Math with operation 'Multiply Add'."""
1141
+ return cls(
1142
+ operation="MULTIPLY_ADD",
1143
+ value=value,
1144
+ value_001=value_001,
1145
+ value_002=value_002,
1146
+ )
1147
+
1070
1148
  @classmethod
1071
1149
  def absolute(cls, value: TYPE_INPUT_INT = 0) -> "IntegerMath":
1072
1150
  """Create Integer Math with operation 'Absolute'."""
@@ -1103,6 +1181,34 @@ class IntegerMath(NodeBuilder):
1103
1181
  """Create Integer Math with operation 'Sign'."""
1104
1182
  return cls(operation="SIGN", value=value)
1105
1183
 
1184
+ @classmethod
1185
+ def divide_round(
1186
+ cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
1187
+ ) -> "IntegerMath":
1188
+ """Create Integer Math with operation 'Divide Round'."""
1189
+ return cls(operation="DIVIDE_ROUND", value=value, value_001=value_001)
1190
+
1191
+ @classmethod
1192
+ def divide_floor(
1193
+ cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
1194
+ ) -> "IntegerMath":
1195
+ """Create Integer Math with operation 'Divide Floor'."""
1196
+ return cls(operation="DIVIDE_FLOOR", value=value, value_001=value_001)
1197
+
1198
+ @classmethod
1199
+ def divide_ceiling(
1200
+ cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
1201
+ ) -> "IntegerMath":
1202
+ """Create Integer Math with operation 'Divide Ceiling'."""
1203
+ return cls(operation="DIVIDE_CEIL", value=value, value_001=value_001)
1204
+
1205
+ @classmethod
1206
+ def floored_modulo(
1207
+ cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
1208
+ ) -> "IntegerMath":
1209
+ """Create Integer Math with operation 'Floored Modulo'."""
1210
+ return cls(operation="FLOORED_MODULO", value=value, value_001=value_001)
1211
+
1106
1212
  @classmethod
1107
1213
  def modulo(
1108
1214
  cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
@@ -1110,6 +1216,20 @@ class IntegerMath(NodeBuilder):
1110
1216
  """Create Integer Math with operation 'Modulo'."""
1111
1217
  return cls(operation="MODULO", value=value, value_001=value_001)
1112
1218
 
1219
+ @classmethod
1220
+ def greatest_common_divisor(
1221
+ cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
1222
+ ) -> "IntegerMath":
1223
+ """Create Integer Math with operation 'Greatest Common Divisor'."""
1224
+ return cls(operation="GCD", value=value, value_001=value_001)
1225
+
1226
+ @classmethod
1227
+ def least_common_multiple(
1228
+ cls, value: TYPE_INPUT_INT = 0, value_001: TYPE_INPUT_INT = 0
1229
+ ) -> "IntegerMath":
1230
+ """Create Integer Math with operation 'Least Common Multiple'."""
1231
+ return cls(operation="LCM", value=value, value_001=value_001)
1232
+
1113
1233
  @property
1114
1234
  def i_value(self) -> SocketLinker:
1115
1235
  """Input socket: Value"""
@@ -1183,7 +1303,9 @@ class IntegerMath(NodeBuilder):
1183
1303
 
1184
1304
 
1185
1305
  class InvertMatrix(NodeBuilder):
1186
- """Compute the inverse of the given matrix, if one exists"""
1306
+ """
1307
+ Compute the inverse of the given matrix, if one exists
1308
+ """
1187
1309
 
1188
1310
  _bl_idname = "FunctionNodeInvertMatrix"
1189
1311
  node: bpy.types.FunctionNodeInvertMatrix
@@ -1211,7 +1333,9 @@ class InvertMatrix(NodeBuilder):
1211
1333
 
1212
1334
 
1213
1335
  class InvertRotation(NodeBuilder):
1214
- """Compute the inverse of the given rotation"""
1336
+ """
1337
+ Compute the inverse of the given rotation
1338
+ """
1215
1339
 
1216
1340
  _bl_idname = "FunctionNodeInvertRotation"
1217
1341
  node: bpy.types.FunctionNodeInvertRotation
@@ -1234,7 +1358,9 @@ class InvertRotation(NodeBuilder):
1234
1358
 
1235
1359
 
1236
1360
  class JoinBundle(NodeBuilder):
1237
- """Join multiple bundles together"""
1361
+ """
1362
+ Join multiple bundles together
1363
+ """
1238
1364
 
1239
1365
  _bl_idname = "NodeJoinBundle"
1240
1366
  node: bpy.types.Node
@@ -1257,7 +1383,9 @@ class JoinBundle(NodeBuilder):
1257
1383
 
1258
1384
 
1259
1385
  class MapRange(NodeBuilder):
1260
- """Remap a value from a range to a target range"""
1386
+ """
1387
+ Remap a value from a range to a target range
1388
+ """
1261
1389
 
1262
1390
  _bl_idname = "ShaderNodeMapRange"
1263
1391
  node: bpy.types.ShaderNodeMapRange
@@ -1441,7 +1569,9 @@ class MapRange(NodeBuilder):
1441
1569
 
1442
1570
 
1443
1571
  class MatchString(NodeBuilder):
1444
- """Check if a given string exists within another string"""
1572
+ """
1573
+ Check if a given string exists within another string
1574
+ """
1445
1575
 
1446
1576
  _bl_idname = "FunctionNodeMatchString"
1447
1577
  node: bpy.types.FunctionNodeMatchString
@@ -1479,7 +1609,9 @@ class MatchString(NodeBuilder):
1479
1609
 
1480
1610
 
1481
1611
  class Math(NodeBuilder):
1482
- """Perform math operations"""
1612
+ """
1613
+ Perform math operations
1614
+ """
1483
1615
 
1484
1616
  _bl_idname = "ShaderNodeMath"
1485
1617
  node: bpy.types.ShaderNodeMath
@@ -1569,6 +1701,21 @@ class Math(NodeBuilder):
1569
1701
  """Create Math with operation 'Divide'."""
1570
1702
  return cls(operation="DIVIDE", value=value, value_001=value_001)
1571
1703
 
1704
+ @classmethod
1705
+ def multiply_add(
1706
+ cls,
1707
+ value: TYPE_INPUT_VALUE = 0.5,
1708
+ value_001: TYPE_INPUT_VALUE = 0.5,
1709
+ value_002: TYPE_INPUT_VALUE = 0.5,
1710
+ ) -> "Math":
1711
+ """Create Math with operation 'Multiply Add'."""
1712
+ return cls(
1713
+ operation="MULTIPLY_ADD",
1714
+ value=value,
1715
+ value_001=value_001,
1716
+ value_002=value_002,
1717
+ )
1718
+
1572
1719
  @classmethod
1573
1720
  def power(
1574
1721
  cls, value: TYPE_INPUT_VALUE = 0.5, value_001: TYPE_INPUT_VALUE = 0.5
@@ -1583,6 +1730,16 @@ class Math(NodeBuilder):
1583
1730
  """Create Math with operation 'Logarithm'."""
1584
1731
  return cls(operation="LOGARITHM", value=value, value_001=value_001)
1585
1732
 
1733
+ @classmethod
1734
+ def square_root(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1735
+ """Create Math with operation 'Square Root'."""
1736
+ return cls(operation="SQRT", value=value)
1737
+
1738
+ @classmethod
1739
+ def inverse_square_root(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1740
+ """Create Math with operation 'Inverse Square Root'."""
1741
+ return cls(operation="INVERSE_SQRT", value=value)
1742
+
1586
1743
  @classmethod
1587
1744
  def absolute(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1588
1745
  """Create Math with operation 'Absolute'."""
@@ -1607,6 +1764,20 @@ class Math(NodeBuilder):
1607
1764
  """Create Math with operation 'Maximum'."""
1608
1765
  return cls(operation="MAXIMUM", value=value, value_001=value_001)
1609
1766
 
1767
+ @classmethod
1768
+ def less_than(
1769
+ cls, value: TYPE_INPUT_VALUE = 0.5, value_001: TYPE_INPUT_VALUE = 0.5
1770
+ ) -> "Math":
1771
+ """Create Math with operation 'Less Than'."""
1772
+ return cls(operation="LESS_THAN", value=value, value_001=value_001)
1773
+
1774
+ @classmethod
1775
+ def greater_than(
1776
+ cls, value: TYPE_INPUT_VALUE = 0.5, value_001: TYPE_INPUT_VALUE = 0.5
1777
+ ) -> "Math":
1778
+ """Create Math with operation 'Greater Than'."""
1779
+ return cls(operation="GREATER_THAN", value=value, value_001=value_001)
1780
+
1610
1781
  @classmethod
1611
1782
  def sign(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1612
1783
  """Create Math with operation 'Sign'."""
@@ -1624,6 +1795,36 @@ class Math(NodeBuilder):
1624
1795
  operation="COMPARE", value=value, value_001=value_001, value_002=value_002
1625
1796
  )
1626
1797
 
1798
+ @classmethod
1799
+ def smooth_minimum(
1800
+ cls,
1801
+ value: TYPE_INPUT_VALUE = 0.5,
1802
+ value_001: TYPE_INPUT_VALUE = 0.5,
1803
+ value_002: TYPE_INPUT_VALUE = 0.5,
1804
+ ) -> "Math":
1805
+ """Create Math with operation 'Smooth Minimum'."""
1806
+ return cls(
1807
+ operation="SMOOTH_MIN",
1808
+ value=value,
1809
+ value_001=value_001,
1810
+ value_002=value_002,
1811
+ )
1812
+
1813
+ @classmethod
1814
+ def smooth_maximum(
1815
+ cls,
1816
+ value: TYPE_INPUT_VALUE = 0.5,
1817
+ value_001: TYPE_INPUT_VALUE = 0.5,
1818
+ value_002: TYPE_INPUT_VALUE = 0.5,
1819
+ ) -> "Math":
1820
+ """Create Math with operation 'Smooth Maximum'."""
1821
+ return cls(
1822
+ operation="SMOOTH_MAX",
1823
+ value=value,
1824
+ value_001=value_001,
1825
+ value_002=value_002,
1826
+ )
1827
+
1627
1828
  @classmethod
1628
1829
  def round(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1629
1830
  """Create Math with operation 'Round'."""
@@ -1649,6 +1850,20 @@ class Math(NodeBuilder):
1649
1850
  """Create Math with operation 'Fraction'."""
1650
1851
  return cls(operation="FRACT", value=value)
1651
1852
 
1853
+ @classmethod
1854
+ def truncated_modulo(
1855
+ cls, value: TYPE_INPUT_VALUE = 0.5, value_001: TYPE_INPUT_VALUE = 0.5
1856
+ ) -> "Math":
1857
+ """Create Math with operation 'Truncated Modulo'."""
1858
+ return cls(operation="MODULO", value=value, value_001=value_001)
1859
+
1860
+ @classmethod
1861
+ def floored_modulo(
1862
+ cls, value: TYPE_INPUT_VALUE = 0.5, value_001: TYPE_INPUT_VALUE = 0.5
1863
+ ) -> "Math":
1864
+ """Create Math with operation 'Floored Modulo'."""
1865
+ return cls(operation="FLOORED_MODULO", value=value, value_001=value_001)
1866
+
1652
1867
  @classmethod
1653
1868
  def wrap(
1654
1869
  cls,
@@ -1668,6 +1883,13 @@ class Math(NodeBuilder):
1668
1883
  """Create Math with operation 'Snap'."""
1669
1884
  return cls(operation="SNAP", value=value, value_001=value_001)
1670
1885
 
1886
+ @classmethod
1887
+ def ping_pong(
1888
+ cls, value: TYPE_INPUT_VALUE = 0.5, value_001: TYPE_INPUT_VALUE = 0.5
1889
+ ) -> "Math":
1890
+ """Create Math with operation 'Ping-Pong'."""
1891
+ return cls(operation="PINGPONG", value=value, value_001=value_001)
1892
+
1671
1893
  @classmethod
1672
1894
  def sine(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1673
1895
  """Create Math with operation 'Sine'."""
@@ -1705,6 +1927,31 @@ class Math(NodeBuilder):
1705
1927
  """Create Math with operation 'Arctan2'."""
1706
1928
  return cls(operation="ARCTAN2", value=value, value_001=value_001)
1707
1929
 
1930
+ @classmethod
1931
+ def hyperbolic_sine(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1932
+ """Create Math with operation 'Hyperbolic Sine'."""
1933
+ return cls(operation="SINH", value=value)
1934
+
1935
+ @classmethod
1936
+ def hyperbolic_cosine(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1937
+ """Create Math with operation 'Hyperbolic Cosine'."""
1938
+ return cls(operation="COSH", value=value)
1939
+
1940
+ @classmethod
1941
+ def hyperbolic_tangent(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1942
+ """Create Math with operation 'Hyperbolic Tangent'."""
1943
+ return cls(operation="TANH", value=value)
1944
+
1945
+ @classmethod
1946
+ def to_radians(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1947
+ """Create Math with operation 'To Radians'."""
1948
+ return cls(operation="RADIANS", value=value)
1949
+
1950
+ @classmethod
1951
+ def to_degrees(cls, value: TYPE_INPUT_VALUE = 0.5) -> "Math":
1952
+ """Create Math with operation 'To Degrees'."""
1953
+ return cls(operation="DEGREES", value=value)
1954
+
1708
1955
  @property
1709
1956
  def i_value(self) -> SocketLinker:
1710
1957
  """Input socket: Value"""
@@ -1832,7 +2079,9 @@ class Math(NodeBuilder):
1832
2079
 
1833
2080
 
1834
2081
  class MatrixDeterminant(NodeBuilder):
1835
- """Compute the determinant of the given matrix"""
2082
+ """
2083
+ Compute the determinant of the given matrix
2084
+ """
1836
2085
 
1837
2086
  _bl_idname = "FunctionNodeMatrixDeterminant"
1838
2087
  node: bpy.types.FunctionNodeMatrixDeterminant
@@ -1855,7 +2104,9 @@ class MatrixDeterminant(NodeBuilder):
1855
2104
 
1856
2105
 
1857
2106
  class Mix(NodeBuilder):
1858
- """Mix values by a factor"""
2107
+ """
2108
+ Mix values by a factor
2109
+ """
1859
2110
 
1860
2111
  _bl_idname = "ShaderNodeMix"
1861
2112
  node: bpy.types.ShaderNodeMix
@@ -2123,7 +2374,9 @@ class Mix(NodeBuilder):
2123
2374
 
2124
2375
 
2125
2376
  class MultiplyMatrices(NodeBuilder):
2126
- """Perform a matrix multiplication on two input matrices"""
2377
+ """
2378
+ Perform a matrix multiplication on two input matrices
2379
+ """
2127
2380
 
2128
2381
  _bl_idname = "FunctionNodeMatrixMultiply"
2129
2382
  node: bpy.types.FunctionNodeMatrixMultiply
@@ -2155,7 +2408,9 @@ class MultiplyMatrices(NodeBuilder):
2155
2408
 
2156
2409
 
2157
2410
  class PackUVIslands(NodeBuilder):
2158
- """Scale islands of a UV map and move them so they fill the UV space as much as possible"""
2411
+ """
2412
+ Scale islands of a UV map and move them so they fill the UV space as much as possible
2413
+ """
2159
2414
 
2160
2415
  _bl_idname = "GeometryNodeUVPackIslands"
2161
2416
  node: bpy.types.GeometryNodeUVPackIslands
@@ -2211,7 +2466,9 @@ class PackUVIslands(NodeBuilder):
2211
2466
 
2212
2467
 
2213
2468
  class ProjectPoint(NodeBuilder):
2214
- """Project a point using a matrix, using location, rotation, scale, and perspective divide"""
2469
+ """
2470
+ Project a point using a matrix, using location, rotation, scale, and perspective divide
2471
+ """
2215
2472
 
2216
2473
  _bl_idname = "FunctionNodeProjectPoint"
2217
2474
  node: bpy.types.FunctionNodeProjectPoint
@@ -2243,7 +2500,9 @@ class ProjectPoint(NodeBuilder):
2243
2500
 
2244
2501
 
2245
2502
  class QuaternionToRotation(NodeBuilder):
2246
- """Build a rotation from quaternion components"""
2503
+ """
2504
+ Build a rotation from quaternion components
2505
+ """
2247
2506
 
2248
2507
  _bl_idname = "FunctionNodeQuaternionToRotation"
2249
2508
  node: bpy.types.FunctionNodeQuaternionToRotation
@@ -2287,7 +2546,9 @@ class QuaternionToRotation(NodeBuilder):
2287
2546
 
2288
2547
 
2289
2548
  class RandomValue(NodeBuilder):
2290
- """Output a randomized value"""
2549
+ """
2550
+ Output a randomized value
2551
+ """
2291
2552
 
2292
2553
  _bl_idname = "FunctionNodeRandomValue"
2293
2554
  node: bpy.types.FunctionNodeRandomValue
@@ -2439,7 +2700,9 @@ class RandomValue(NodeBuilder):
2439
2700
 
2440
2701
 
2441
2702
  class ReplaceString(NodeBuilder):
2442
- """Replace a given string segment with another"""
2703
+ """
2704
+ Replace a given string segment with another
2705
+ """
2443
2706
 
2444
2707
  _bl_idname = "FunctionNodeReplaceString"
2445
2708
  node: bpy.types.FunctionNodeReplaceString
@@ -2477,7 +2740,9 @@ class ReplaceString(NodeBuilder):
2477
2740
 
2478
2741
 
2479
2742
  class RotateEuler(NodeBuilder):
2480
- """Apply a secondary Euler rotation to a given Euler rotation"""
2743
+ """
2744
+ Apply a secondary Euler rotation to a given Euler rotation
2745
+ """
2481
2746
 
2482
2747
  _bl_idname = "FunctionNodeRotateEuler"
2483
2748
  node: bpy.types.FunctionNodeRotateEuler
@@ -2546,7 +2811,9 @@ class RotateEuler(NodeBuilder):
2546
2811
 
2547
2812
 
2548
2813
  class RotateRotation(NodeBuilder):
2549
- """Apply a secondary rotation to a given rotation value"""
2814
+ """
2815
+ Apply a secondary rotation to a given rotation value
2816
+ """
2550
2817
 
2551
2818
  _bl_idname = "FunctionNodeRotateRotation"
2552
2819
  node: bpy.types.FunctionNodeRotateRotation
@@ -2588,7 +2855,9 @@ class RotateRotation(NodeBuilder):
2588
2855
 
2589
2856
 
2590
2857
  class RotateVector(NodeBuilder):
2591
- """Apply a rotation to a given vector"""
2858
+ """
2859
+ Apply a rotation to a given vector
2860
+ """
2592
2861
 
2593
2862
  _bl_idname = "FunctionNodeRotateVector"
2594
2863
  node: bpy.types.FunctionNodeRotateVector
@@ -2620,7 +2889,9 @@ class RotateVector(NodeBuilder):
2620
2889
 
2621
2890
 
2622
2891
  class RotationToAxisAngle(NodeBuilder):
2623
- """Convert a rotation to axis angle components"""
2892
+ """
2893
+ Convert a rotation to axis angle components
2894
+ """
2624
2895
 
2625
2896
  _bl_idname = "FunctionNodeRotationToAxisAngle"
2626
2897
  node: bpy.types.FunctionNodeRotationToAxisAngle
@@ -2648,7 +2919,9 @@ class RotationToAxisAngle(NodeBuilder):
2648
2919
 
2649
2920
 
2650
2921
  class RotationToEuler(NodeBuilder):
2651
- """Convert a standard rotation value to an Euler rotation"""
2922
+ """
2923
+ Convert a standard rotation value to an Euler rotation
2924
+ """
2652
2925
 
2653
2926
  _bl_idname = "FunctionNodeRotationToEuler"
2654
2927
  node: bpy.types.FunctionNodeRotationToEuler
@@ -2671,7 +2944,9 @@ class RotationToEuler(NodeBuilder):
2671
2944
 
2672
2945
 
2673
2946
  class RotationToQuaternion(NodeBuilder):
2674
- """Retrieve the quaternion components representing a rotation"""
2947
+ """
2948
+ Retrieve the quaternion components representing a rotation
2949
+ """
2675
2950
 
2676
2951
  _bl_idname = "FunctionNodeRotationToQuaternion"
2677
2952
  node: bpy.types.FunctionNodeRotationToQuaternion
@@ -2709,7 +2984,9 @@ class RotationToQuaternion(NodeBuilder):
2709
2984
 
2710
2985
 
2711
2986
  class SeparateBundle(NodeBuilder):
2712
- """Split a bundle into multiple sockets."""
2987
+ """
2988
+ Split a bundle into multiple sockets.
2989
+ """
2713
2990
 
2714
2991
  _bl_idname = "NodeSeparateBundle"
2715
2992
  node: bpy.types.Node
@@ -2740,7 +3017,9 @@ class SeparateBundle(NodeBuilder):
2740
3017
 
2741
3018
 
2742
3019
  class SeparateColor(NodeBuilder):
2743
- """Split a color into separate channels, based on a particular color model"""
3020
+ """
3021
+ Split a color into separate channels, based on a particular color model
3022
+ """
2744
3023
 
2745
3024
  _bl_idname = "FunctionNodeSeparateColor"
2746
3025
  node: bpy.types.FunctionNodeSeparateColor
@@ -2791,7 +3070,9 @@ class SeparateColor(NodeBuilder):
2791
3070
 
2792
3071
 
2793
3072
  class SeparateMatrix(NodeBuilder):
2794
- """Split a 4x4 matrix into its individual values"""
3073
+ """
3074
+ Split a 4x4 matrix into its individual values
3075
+ """
2795
3076
 
2796
3077
  _bl_idname = "FunctionNodeSeparateMatrix"
2797
3078
  node: bpy.types.FunctionNodeSeparateMatrix
@@ -2889,7 +3170,9 @@ class SeparateMatrix(NodeBuilder):
2889
3170
 
2890
3171
 
2891
3172
  class SeparateTransform(NodeBuilder):
2892
- """Split a transformation matrix into a translation vector, a rotation, and a scale vector"""
3173
+ """
3174
+ Split a transformation matrix into a translation vector, a rotation, and a scale vector
3175
+ """
2893
3176
 
2894
3177
  _bl_idname = "FunctionNodeSeparateTransform"
2895
3178
  node: bpy.types.FunctionNodeSeparateTransform
@@ -2922,7 +3205,9 @@ class SeparateTransform(NodeBuilder):
2922
3205
 
2923
3206
 
2924
3207
  class SeparateXYZ(NodeBuilder):
2925
- """Split a vector into its X, Y, and Z components"""
3208
+ """
3209
+ Split a vector into its X, Y, and Z components
3210
+ """
2926
3211
 
2927
3212
  _bl_idname = "ShaderNodeSeparateXYZ"
2928
3213
  node: bpy.types.ShaderNodeSeparateXYZ
@@ -2955,7 +3240,9 @@ class SeparateXYZ(NodeBuilder):
2955
3240
 
2956
3241
 
2957
3242
  class SliceString(NodeBuilder):
2958
- """Extract a string segment from a larger string"""
3243
+ """
3244
+ Extract a string segment from a larger string
3245
+ """
2959
3246
 
2960
3247
  _bl_idname = "FunctionNodeSliceString"
2961
3248
  node: bpy.types.FunctionNodeSliceString
@@ -2993,7 +3280,9 @@ class SliceString(NodeBuilder):
2993
3280
 
2994
3281
 
2995
3282
  class StringLength(NodeBuilder):
2996
- """Output the number of characters in the given string"""
3283
+ """
3284
+ Output the number of characters in the given string
3285
+ """
2997
3286
 
2998
3287
  _bl_idname = "FunctionNodeStringLength"
2999
3288
  node: bpy.types.FunctionNodeStringLength
@@ -3016,7 +3305,9 @@ class StringLength(NodeBuilder):
3016
3305
 
3017
3306
 
3018
3307
  class StringToValue(NodeBuilder):
3019
- """Derive a numeric value from a given string representation"""
3308
+ """
3309
+ Derive a numeric value from a given string representation
3310
+ """
3020
3311
 
3021
3312
  _bl_idname = "FunctionNodeStringToValue"
3022
3313
  node: bpy.types.FunctionNodeStringToValue
@@ -3067,7 +3358,9 @@ class StringToValue(NodeBuilder):
3067
3358
 
3068
3359
 
3069
3360
  class Switch(NodeBuilder):
3070
- """Switch between two inputs"""
3361
+ """
3362
+ Switch between two inputs
3363
+ """
3071
3364
 
3072
3365
  _bl_idname = "GeometryNodeSwitch"
3073
3366
  node: bpy.types.GeometryNodeSwitch
@@ -3331,7 +3624,9 @@ class Switch(NodeBuilder):
3331
3624
 
3332
3625
 
3333
3626
  class TransformDirection(NodeBuilder):
3334
- """Apply a transformation matrix (excluding translation) to the given vector"""
3627
+ """
3628
+ Apply a transformation matrix (excluding translation) to the given vector
3629
+ """
3335
3630
 
3336
3631
  _bl_idname = "FunctionNodeTransformDirection"
3337
3632
  node: bpy.types.FunctionNodeTransformDirection
@@ -3363,7 +3658,9 @@ class TransformDirection(NodeBuilder):
3363
3658
 
3364
3659
 
3365
3660
  class TransformPoint(NodeBuilder):
3366
- """Apply a transformation matrix to the given vector"""
3661
+ """
3662
+ Apply a transformation matrix to the given vector
3663
+ """
3367
3664
 
3368
3665
  _bl_idname = "FunctionNodeTransformPoint"
3369
3666
  node: bpy.types.FunctionNodeTransformPoint
@@ -3395,7 +3692,9 @@ class TransformPoint(NodeBuilder):
3395
3692
 
3396
3693
 
3397
3694
  class TransposeMatrix(NodeBuilder):
3398
- """Flip a matrix over its diagonal, turning columns into rows and vice-versa"""
3695
+ """
3696
+ Flip a matrix over its diagonal, turning columns into rows and vice-versa
3697
+ """
3399
3698
 
3400
3699
  _bl_idname = "FunctionNodeTransposeMatrix"
3401
3700
  node: bpy.types.FunctionNodeTransposeMatrix
@@ -3418,7 +3717,9 @@ class TransposeMatrix(NodeBuilder):
3418
3717
 
3419
3718
 
3420
3719
  class UVUnwrap(NodeBuilder):
3421
- """Generate a UV map based on seam edges"""
3720
+ """
3721
+ Generate a UV map based on seam edges
3722
+ """
3422
3723
 
3423
3724
  _bl_idname = "GeometryNodeUVUnwrap"
3424
3725
  node: bpy.types.GeometryNodeUVUnwrap
@@ -3474,7 +3775,9 @@ class UVUnwrap(NodeBuilder):
3474
3775
 
3475
3776
 
3476
3777
  class ValueToString(NodeBuilder):
3477
- """Generate a string representation of the given input value"""
3778
+ """
3779
+ Generate a string representation of the given input value
3780
+ """
3478
3781
 
3479
3782
  _bl_idname = "FunctionNodeValueToString"
3480
3783
  node: bpy.types.FunctionNodeValueToString