[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