|
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