|
12 | 12 | import datetime
|
13 | 13 | import os
|
14 | 14 | import shutil
|
15 |
| -from typing import TextIO |
| 15 | +from typing import TextIO, Callable |
16 | 16 |
|
17 | 17 | from .license_templates import license_templates
|
18 | 18 | from .ntp_node_tree import NTP_NodeTree
|
@@ -66,6 +66,9 @@ class NTP_Operator(Operator):
|
66 | 66 | def __init__(self):
|
67 | 67 | super().__init__()
|
68 | 68 |
|
| 69 | + # Write functions after nodes are mostly initialized and linked up |
| 70 | + self._write_after_links: list[Callable] = [] |
| 71 | + |
69 | 72 | # File (TextIO) or string (StringIO) the add-on/script is generated into
|
70 | 73 | self._file: TextIO = None
|
71 | 74 |
|
@@ -538,7 +541,21 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket,
|
538 | 541 |
|
539 | 542 | dv = socket_interface.default_value
|
540 | 543 |
|
541 |
| - if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: |
| 544 | + if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu: |
| 545 | + if dv == "": |
| 546 | + self.report({'WARNING'}, |
| 547 | + "NodeToPython: No menu found for socket " |
| 548 | + f"{socket_interface.name}" |
| 549 | + ) |
| 550 | + return |
| 551 | + |
| 552 | + self._write_after_links.append( |
| 553 | + lambda _socket_var=socket_var, _dv=enum_to_py_str(dv): ( |
| 554 | + self._write(f"{_socket_var}.default_value = {_dv}") |
| 555 | + ) |
| 556 | + ) |
| 557 | + return |
| 558 | + elif type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor: |
542 | 559 | dv = vec4_to_py_str(dv)
|
543 | 560 | elif type(dv) in {mathutils.Vector, mathutils.Euler}:
|
544 | 561 | dv = vec3_to_py_str(dv)
|
@@ -784,6 +801,8 @@ def _set_input_defaults(self, node: Node) -> None:
|
784 | 801 |
|
785 | 802 | #menu
|
786 | 803 | elif input.bl_idname == 'NodeSocketMenu':
|
| 804 | + if input.default_value == '': |
| 805 | + continue |
787 | 806 | default_val = enum_to_py_str(input.default_value)
|
788 | 807 |
|
789 | 808 | # images
|
@@ -1329,6 +1348,11 @@ def _init_links(self, node_tree: NodeTree) -> None:
|
1329 | 1348 | f".outputs[{input_idx}], "
|
1330 | 1349 | f"{out_node_var}.inputs[{output_idx}])")
|
1331 | 1350 |
|
| 1351 | + for _func in self._write_after_links: |
| 1352 | + _func() |
| 1353 | + self._write_after_links = [] |
| 1354 | + |
| 1355 | + |
1332 | 1356 | def _set_node_tree_properties(self, node_tree: NodeTree) -> None:
|
1333 | 1357 | nt_var = self._node_tree_vars[node_tree]
|
1334 | 1358 |
|
|
0 commit comments