فهرست منبع

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