Skip to content

Commit 056aa52

Browse files
Merge pull request #133 from atticus-lv/fix-node-socket-interface-menu
fix: node socket interface menu is now correctly handle
2 parents 0b74b8b + 623c7c2 commit 056aa52

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

NodeToPython/ntp_operator.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import datetime
1313
import os
1414
import shutil
15-
from typing import TextIO
15+
from typing import TextIO, Callable
1616

1717
from .license_templates import license_templates
1818
from .ntp_node_tree import NTP_NodeTree
@@ -66,6 +66,9 @@ class NTP_Operator(Operator):
6666
def __init__(self):
6767
super().__init__()
6868

69+
# Call function after all the writes, such as the menu switch node and the menu socket
70+
self._write_after_link: list[Callable] | None = None
71+
6972
# File (TextIO) or string (StringIO) the add-on/script is generated into
7073
self._file: TextIO = None
7174

@@ -538,6 +541,15 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket,
538541

539542
dv = socket_interface.default_value
540543

544+
# notice that the Node Socket Menu should be assign value after link to a menu switch node
545+
if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu:
546+
if not self._write_after_link:
547+
self._write_after_link = []
548+
549+
self._write_after_link.append(
550+
lambda _var=socket_var, _dv=dv: self._write(f"{_var}.default_value = '{_dv}'"))
551+
return
552+
541553
if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor:
542554
dv = vec4_to_py_str(dv)
543555
elif type(dv) in {mathutils.Vector, mathutils.Euler}:
@@ -1329,6 +1341,10 @@ def _init_links(self, node_tree: NodeTree) -> None:
13291341
f".outputs[{input_idx}], "
13301342
f"{out_node_var}.inputs[{output_idx}])")
13311343

1344+
if self._write_after_link:
1345+
for _func in self._write_after_link:
1346+
_func()
1347+
13321348
def _set_node_tree_properties(self, node_tree: NodeTree) -> None:
13331349
nt_var = self._node_tree_vars[node_tree]
13341350

0 commit comments

Comments
 (0)