[Bf-blender-cvs] [2f4e55f0376] soc-2019-cycles-procedural: Refactor Vector Math update function.

OmarSquircleArt noreply at git.blender.org
Fri Aug 2 11:47:46 CEST 2019


Commit: 2f4e55f0376045240eb032a4f773883da18f8623
Author: OmarSquircleArt
Date:   Fri Aug 2 11:47:07 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rB2f4e55f0376045240eb032a4f773883da18f8623

Refactor Vector Math update function.

===================================================================

M	source/blender/nodes/shader/nodes/node_shader_vectMath.c

===================================================================

diff --git a/source/blender/nodes/shader/nodes/node_shader_vectMath.c b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
index acffd34c3ee..569ae7188ad 100644
--- a/source/blender/nodes/shader/nodes/node_shader_vectMath.c
+++ b/source/blender/nodes/shader/nodes/node_shader_vectMath.c
@@ -25,9 +25,9 @@
 
 /* **************** VECTOR MATH ******************** */
 static bNodeSocketTemplate sh_node_vect_math_in[] = {
-    {SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 1.0f, -10000.0f, 10000.0f, PROP_NONE},
-    {SOCK_VECTOR, 1, N_("Vector"), 0.0f, 0.0f, 0.0f, 1.0f, -10000.0f, 10000.0f, PROP_NONE},
-    {SOCK_FLOAT, 1, N_("Factor"), 1.0f, 1.0f, 1.0f, 1.0f, -10000.0f, 10000.0f, PROP_NONE},
+    {SOCK_VECTOR, 1, N_("A"), 0.0f, 0.0f, 0.0f, 1.0f, -10000.0f, 10000.0f, PROP_NONE},
+    {SOCK_VECTOR, 1, N_("B"), 0.0f, 0.0f, 0.0f, 1.0f, -10000.0f, 10000.0f, PROP_NONE},
+    {SOCK_FLOAT, 1, N_("Scale"), 1.0f, 1.0f, 1.0f, 1.0f, -10000.0f, 10000.0f, PROP_NONE},
     {-1, 0, ""}};
 
 static bNodeSocketTemplate sh_node_vect_math_out[] = {
@@ -170,50 +170,29 @@ static int gpu_shader_vect_math(GPUMaterial *mat,
 
 static void node_shader_update_vec_math(bNodeTree *UNUSED(ntree), bNode *node)
 {
-  bNodeSocket *inVecSock = BLI_findlink(&node->inputs, 1);
-  bNodeSocket *inFacSock = BLI_findlink(&node->inputs, 2);
-
-  bNodeSocket *outVecSock = BLI_findlink(&node->outputs, 0);
-  bNodeSocket *outValSock = BLI_findlink(&node->outputs, 1);
-
-  switch (node->custom1) {
-    case NODE_VECTOR_MATH_DOT_PRODUCT:
-    case NODE_VECTOR_MATH_DISTANCE:
-      inVecSock->flag &= ~SOCK_UNAVAIL;
-      inFacSock->flag |= SOCK_UNAVAIL;
-
-      outValSock->flag &= ~SOCK_UNAVAIL;
-      outVecSock->flag |= SOCK_UNAVAIL;
-      break;
-    case NODE_VECTOR_MATH_LENGTH:
-      inVecSock->flag |= SOCK_UNAVAIL;
-      inFacSock->flag |= SOCK_UNAVAIL;
-
-      outValSock->flag &= ~SOCK_UNAVAIL;
-      outVecSock->flag |= SOCK_UNAVAIL;
-      break;
-    case NODE_VECTOR_MATH_NORMALIZE:
-    case NODE_VECTOR_MATH_ABS:
-      inVecSock->flag |= SOCK_UNAVAIL;
-      inFacSock->flag |= SOCK_UNAVAIL;
-
-      outValSock->flag |= SOCK_UNAVAIL;
-      outVecSock->flag &= ~SOCK_UNAVAIL;
-      break;
-    case NODE_VECTOR_MATH_SCALE:
-      inVecSock->flag |= SOCK_UNAVAIL;
-      inFacSock->flag &= ~SOCK_UNAVAIL;
-
-      outValSock->flag |= SOCK_UNAVAIL;
-      outVecSock->flag &= ~SOCK_UNAVAIL;
-      break;
-    default:
-      inVecSock->flag &= ~SOCK_UNAVAIL;
-      inFacSock->flag |= SOCK_UNAVAIL;
-
-      outValSock->flag |= SOCK_UNAVAIL;
-      outVecSock->flag &= ~SOCK_UNAVAIL;
-  }
+  bNodeSocket *sockB = nodeFindSocket(node, SOCK_IN, "B");
+  bNodeSocket *sockScale = nodeFindSocket(node, SOCK_IN, "Scale");
+
+  bNodeSocket *sockVector = nodeFindSocket(node, SOCK_OUT, "Vector");
+  bNodeSocket *sockValue = nodeFindSocket(node, SOCK_OUT, "Value");
+
+  nodeSetSocketAvailability(sockB,
+                            !ELEM(node->custom1,
+                                  NODE_VECTOR_MATH_ABS,
+                                  NODE_VECTOR_MATH_SCALE,
+                                  NODE_VECTOR_MATH_LENGTH,
+                                  NODE_VECTOR_MATH_NORMALIZE));
+  nodeSetSocketAvailability(sockScale, node->custom1 == NODE_VECTOR_MATH_SCALE);
+  nodeSetSocketAvailability(sockVector,
+                            !ELEM(node->custom1,
+                                  NODE_VECTOR_MATH_LENGTH,
+                                  NODE_VECTOR_MATH_DISTANCE,
+                                  NODE_VECTOR_MATH_DOT_PRODUCT));
+  nodeSetSocketAvailability(sockValue,
+                            ELEM(node->custom1,
+                                 NODE_VECTOR_MATH_LENGTH,
+                                 NODE_VECTOR_MATH_DISTANCE,
+                                 NODE_VECTOR_MATH_DOT_PRODUCT));
 }
 
 void register_node_type_sh_vect_math(void)



More information about the Bf-blender-cvs mailing list