[Bf-blender-cvs] [c73a5604b79] soc-2019-cycles-procedural: Add a function for setting socket availability

OmarSquircleArt noreply at git.blender.org
Wed Jun 26 13:41:03 CEST 2019


Commit: c73a5604b79540e7b989b0fb8dfe0a8c8d3df8ff
Author: OmarSquircleArt
Date:   Wed Jun 26 13:41:54 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rBc73a5604b79540e7b989b0fb8dfe0a8c8d3df8ff

Add a function for setting socket availability

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

M	source/blender/blenkernel/BKE_node.h
M	source/blender/blenkernel/intern/node.c
M	source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
M	source/blender/nodes/shader/nodes/node_shader_tex_white_noise.c

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

diff --git a/source/blender/blenkernel/BKE_node.h b/source/blender/blenkernel/BKE_node.h
index c2704caf6ef..f44b58cd4f4 100644
--- a/source/blender/blenkernel/BKE_node.h
+++ b/source/blender/blenkernel/BKE_node.h
@@ -616,6 +616,7 @@ void nodeUpdateInternalLinks(struct bNodeTree *ntree, struct bNode *node);
 
 int nodeSocketIsHidden(struct bNodeSocket *sock);
 void ntreeTagUsedSockets(struct bNodeTree *ntree);
+void nodeSetSocketAvailability(struct bNodeSocket *sock, bool condition);
 
 /* Node Clipboard */
 void BKE_node_clipboard_init(struct bNodeTree *ntree);
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index f15503eb2c8..e8b76464081 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -2799,6 +2799,16 @@ int nodeSocketIsHidden(bNodeSocket *sock)
   return ((sock->flag & (SOCK_HIDDEN | SOCK_UNAVAIL)) != 0);
 }
 
+void nodeSetSocketAvailability(bNodeSocket *sock, bool condition)
+{
+  if (condition) {
+    sock->flag &= ~SOCK_UNAVAIL;
+  }
+  else {
+    sock->flag |= SOCK_UNAVAIL;
+  }
+}
+
 /* ************** Node Clipboard *********** */
 
 #define USE_NODE_CB_VALIDATE
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
index 697bc5727e0..e3e93c8dab4 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_voronoi.c
@@ -208,72 +208,23 @@ static void node_shader_update_tex_voronoi(bNodeTree *UNUSED(ntree), bNode *node
   bNodeSocket *outWSock = BLI_findlink(&node->outputs, 3);
   bNodeSocket *outRadiusSock = BLI_findlink(&node->outputs, 4);
 
-  if (tex->dimensions == 1 || tex->dimensions == 4) {
-    inWSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    inWSock->flag |= SOCK_UNAVAIL;
-  }
-
-  if (tex->dimensions == 1) {
-    inVecSock->flag |= SOCK_UNAVAIL;
-  }
-  else {
-    inVecSock->flag &= ~SOCK_UNAVAIL;
-  }
-
-  if (tex->distance == SHD_VORONOI_MINKOWSKI) {
-    inExponentSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    inExponentSock->flag |= SOCK_UNAVAIL;
-  }
-
-  if (tex->feature == SHD_VORONOI_SMOOTH_F1) {
-    inSmoothnessSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    inSmoothnessSock->flag |= SOCK_UNAVAIL;
-  }
-
-  if (tex->feature == SHD_VORONOI_N_SPHERE_RADIUS) {
-    outDistanceSock->flag |= SOCK_UNAVAIL;
-  }
-  else {
-    outDistanceSock->flag &= ~SOCK_UNAVAIL;
-  }
-
-  if (tex->feature != SHD_VORONOI_DISTANCE_TO_EDGE &&
-      tex->feature != SHD_VORONOI_N_SPHERE_RADIUS) {
-    outColorSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    outColorSock->flag |= SOCK_UNAVAIL;
-  }
-
-  if (tex->feature != SHD_VORONOI_DISTANCE_TO_EDGE &&
-      tex->feature != SHD_VORONOI_N_SPHERE_RADIUS && tex->dimensions != 1) {
-    outPositionSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    outPositionSock->flag |= SOCK_UNAVAIL;
-  }
-
-  if (tex->feature != SHD_VORONOI_DISTANCE_TO_EDGE &&
-      tex->feature != SHD_VORONOI_N_SPHERE_RADIUS &&
-      (tex->dimensions == 1 || tex->dimensions == 4)) {
-    outWSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    outWSock->flag |= SOCK_UNAVAIL;
-  }
-
-  if (tex->feature == SHD_VORONOI_N_SPHERE_RADIUS) {
-    outRadiusSock->flag &= ~SOCK_UNAVAIL;
-  }
-  else {
-    outRadiusSock->flag |= SOCK_UNAVAIL;
-  }
+  nodeSetSocketAvailability(inWSock, tex->dimensions == 1 || tex->dimensions == 4);
+  nodeSetSocketAvailability(inVecSock, tex->dimensions != 1);
+  nodeSetSocketAvailability(inExponentSock, tex->distance == SHD_VORONOI_MINKOWSKI);
+  nodeSetSocketAvailability(inSmoothnessSock, tex->feature == SHD_VORONOI_SMOOTH_F1);
+  nodeSetSocketAvailability(outDistanceSock, tex->feature != SHD_VORONOI_N_SPHERE_RADIUS);
+  nodeSetSocketAvailability(outColorSock,
+                            tex->feature != SHD_VORONOI_DISTANCE_TO_EDGE &&
+                                tex->feature != SHD_VORONOI_N_SPHERE_RADIUS);
+  nodeSetSocketAvailability(outPositionSock,
+                            tex->feature != SHD_VORONOI_DISTANCE_TO_EDGE &&
+                                tex->feature != SHD_VORONOI_N_SPHERE_RADIUS &&
+                                tex->dimensions != 1);
+  nodeSetSocketAvailability(outWSock,
+                            tex->feature != SHD_VORONOI_DISTANCE_TO_EDGE &&
+                                tex->feature != SHD_VORONOI_N_SPHERE_RADIUS &&
+                                (tex->dimensions == 1 || tex->dimensions == 4));
+  nodeSetSocketAvailability(outRadiusSock, tex->feature == SHD_VORONOI_N_SPHERE_RADIUS);
 }
 
 void register_node_type_sh_tex_voronoi(void)
diff --git a/source/blender/nodes/shader/nodes/node_shader_tex_white_noise.c b/source/blender/nodes/shader/nodes/node_shader_tex_white_noise.c
index d4dae5d7939..b86cf00165e 100644
--- a/source/blender/nodes/shader/nodes/node_shader_tex_white_noise.c
+++ b/source/blender/nodes/shader/nodes/node_shader_tex_white_noise.c
@@ -57,21 +57,10 @@ static int gpu_shader_tex_white_noise(GPUMaterial *mat,
 static void node_shader_update_tex_white_noise(bNodeTree *UNUSED(ntree), bNode *node)
 {
   bNodeSocket *inVecSock = BLI_findlink(&node->inputs, 0);
-  bNodeSocket *inFacSock = BLI_findlink(&node->inputs, 1);
+  bNodeSocket *inWSock = BLI_findlink(&node->inputs, 1);
 
-  switch (node->custom1) {
-    case 1:
-      inVecSock->flag |= SOCK_UNAVAIL;
-      inFacSock->flag &= ~SOCK_UNAVAIL;
-      break;
-    case 4:
-      inVecSock->flag &= ~SOCK_UNAVAIL;
-      inFacSock->flag &= ~SOCK_UNAVAIL;
-      break;
-    default:
-      inVecSock->flag &= ~SOCK_UNAVAIL;
-      inFacSock->flag |= SOCK_UNAVAIL;
-  }
+  nodeSetSocketAvailability(inVecSock, node->custom1 != 1);
+  nodeSetSocketAvailability(inWSock, node->custom1 == 1 || node->custom1 == 4);
 }
 
 void register_node_type_sh_tex_white_noise(void)



More information about the Bf-blender-cvs mailing list