Преглед на файлове

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 преди 11 месеца
родител
ревизия
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