浏览代码

Fix: UI for Choose Node

this commit also ensures the link callback is run for the super class of the nodes that override it.
Joseph Brandenburg 8 月之前
父节点
当前提交
a41f514cd3
共有 1 个文件被更改,包括 23 次插入19 次删除
  1. 23 19
      nodes_generic.py

+ 23 - 19
nodes_generic.py

@@ -899,6 +899,7 @@ class UtilityArrayGet(Node, MantisNode):
             self.outputs['Output'].color = wildcard_color
 
     def insert_link(self, link):
+        super().insert_link(link)
         prGreen(link.from_node.name, link.from_socket.identifier, link.to_node.name, link.to_socket.identifier)
         if link.to_socket.identifier == self.inputs['Array'].identifier:
             from_socket = link.from_socket
@@ -929,6 +930,7 @@ class UtilityCompare(Node, MantisNode):
             self.inputs['B'].color = wildcard_color
 
     def insert_link(self, link):
+        super().insert_link(link)
         if link.to_socket.identifier == self.inputs['A'].identifier:
             self.inputs['A'].color = link.from_socket.color_simple
             if hasattr(link.from_socket, "color"):
@@ -953,34 +955,36 @@ class UtilityChoose(Node, MantisNode):
         self.outputs.new("WildcardSocket", "Result")
         self.initialized = True
     
-    def update(self):
+    def display_update(self, parsed_tree, context):
         wildcard_color = (0.0,0.0,0.0,0.0)
-        if self.inputs['A'].is_linked == False:
+        if not self.inputs['A'].is_linked:
             self.inputs['A'].color = wildcard_color
-            self.outputs['Result'].color = (1.0,0.0,0.0,0.0) # red for Error
-        if self.inputs['B'].is_linked == False:
+        if not self.inputs['B'].is_linked:
             self.inputs['B'].color = wildcard_color
-            self.outputs['Result'].color = (1.0,0.0,0.0,0.0)
+        self.outputs['Result'].color = wildcard_color
         # if both inputs are the same color, then use that color for the result
-        if self.inputs['A'].is_linked and self.inputs['A'].color == self.inputs['B'].color:
+        if self.inputs['Condition'].is_linked:
+            from .base_definitions import get_signature_from_edited_tree
+            nc = parsed_tree.get(get_signature_from_edited_tree(self, context))
+            if nc:
+                condition = nc.evaluate_input('Condition')
+        else:
+            condition = self.inputs['Condition'].default_value
+        if condition == True:
+            self.outputs['Result'].color = self.inputs['B'].color
+        else:
             self.outputs['Result'].color = self.inputs['A'].color
-        #
-        if ((self.inputs['A'].is_linked and self.inputs['B'].is_linked) and
-            (self.inputs['A'].links[0].from_socket.bl_idname != self.inputs['B'].links[0].from_socket.bl_idname)):
-            self.inputs['A'].color = (1.0,0.0,0.0,0.0)
-            self.inputs['B'].color = (1.0,0.0,0.0,0.0)
-            self.outputs['Result'].color = (1.0,0.0,0.0,0.0)
 
     def insert_link(self, link):
+        super().insert_link(link)
         if link.to_socket.identifier == self.inputs['A'].identifier:
-            self.inputs['A'].color = from_socket.color_simple
-            if hasattr(from_socket, "color"):
-                self.inputs['A'].color = from_socket.color
+            self.inputs['A'].color = link.from_socket.color_simple
+            if hasattr(link.from_socket, "color"):
+                self.inputs['A'].color = link.from_socket.color
         if link.to_socket.identifier == self.inputs['B'].identifier:
-            self.inputs['B'].color = from_socket.color_simple
-            if hasattr(from_socket, "color"):
-                self.inputs['B'].color = from_socket.color
-
+            self.inputs['B'].color = link.from_socket.color_simple
+            if hasattr(link.from_socket, "color"):
+                self.inputs['B'].color = link.from_socket.color