[Bf-blender-cvs] [cd264c0fbb8] soc-2019-cycles-procedural: Fix Math node backward compatibility. Clamp option.
OmarSquircleArt
noreply at git.blender.org
Fri Aug 2 11:14:52 CEST 2019
Commit: cd264c0fbb8a4ddf494b1a353ee65d712b85b37d
Author: OmarSquircleArt
Date: Fri Aug 2 11:15:43 2019 +0200
Branches: soc-2019-cycles-procedural
https://developer.blender.org/rBcd264c0fbb8a4ddf494b1a353ee65d712b85b37d
Fix Math node backward compatibility. Clamp option.
===================================================================
M source/blender/blenloader/intern/versioning_cycles.c
===================================================================
diff --git a/source/blender/blenloader/intern/versioning_cycles.c b/source/blender/blenloader/intern/versioning_cycles.c
index 36695a38b0a..c93db716fc4 100644
--- a/source/blender/blenloader/intern/versioning_cycles.c
+++ b/source/blender/blenloader/intern/versioning_cycles.c
@@ -450,6 +450,40 @@ static void update_single_operand_math_operators(bNodeTree *ntree)
}
}
+/* The clamp option of the Math node was removed. To correct this, we add a
+ * Clamp node if the clamp option was enabled.
+ */
+static void update_math_clamp_option(bNodeTree *ntree)
+{
+ bool need_update = false;
+
+ for (bNode *node = ntree->nodes.first; node; node = node->next) {
+ if (node->type == SH_NODE_MATH && node->custom2) {
+ bNode *clampNode = nodeAddStaticNode(NULL, ntree, SH_NODE_CLAMP);
+ clampNode->locx = node->locx + node->width + 20.0f;
+ clampNode->locy = node->locy;
+
+ bNodeSocket *sockMathResult = nodeFindSocket(node, SOCK_OUT, "Result");
+ bNodeSocket *sockClampValue = nodeFindSocket(clampNode, SOCK_IN, "Value");
+ bNodeSocket *sockClampResult = nodeFindSocket(clampNode, SOCK_OUT, "Value");
+
+ /* Iterate backwards from end so we don't encounter newly added links. */
+ for (bNodeLink *link = ntree->links.last; link; link = link->prev) {
+ if (link->fromsock == sockMathResult) {
+ nodeAddLink(ntree, clampNode, sockClampResult, link->tonode, link->tosock);
+ nodeRemLink(ntree, link);
+ }
+ }
+ nodeAddLink(ntree, node, sockMathResult, clampNode, sockClampValue);
+ need_update = true;
+ }
+ }
+
+ if (need_update) {
+ ntreeUpdateTree(NULL, ntree);
+ }
+}
+
void blo_do_versions_cycles(FileData *UNUSED(fd), Library *UNUSED(lib), Main *bmain)
{
/* Particle shape shared with Eevee. */
@@ -608,6 +642,7 @@ void do_versions_after_linking_cycles(Main *bmain)
continue;
}
update_single_operand_math_operators(ntree);
+ update_math_clamp_option(ntree);
}
FOREACH_NODETREE_END;
}
More information about the Bf-blender-cvs
mailing list