[Bf-blender-cvs] [fe2c73d] object_nodes: Make sure invalid node connections are rejected at the basic level.

Lukas Tönne noreply at git.blender.org
Wed Dec 2 12:05:58 CET 2015


Commit: fe2c73db6174918885c3144cf2f2855607a334db
Author: Lukas Tönne
Date:   Wed Dec 2 11:48:39 2015 +0100
Branches: object_nodes
https://developer.blender.org/rBfe2c73db6174918885c3144cf2f2855607a334db

Make sure invalid node connections are rejected at the basic level.

The internal bvm nodes require strict type matching. Any implicit
automatic type conversions should be added on the level of DNA->bvm
conversion. This keeps the bvm nodes simple, and also allows for
semantics on the DNA node level that could not be properly implemented
in bvm.

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

M	source/blender/blenvm/compile/bvm_nodegraph.cc

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

diff --git a/source/blender/blenvm/compile/bvm_nodegraph.cc b/source/blender/blenvm/compile/bvm_nodegraph.cc
index 8316a2b..34072f3 100644
--- a/source/blender/blenvm/compile/bvm_nodegraph.cc
+++ b/source/blender/blenvm/compile/bvm_nodegraph.cc
@@ -341,13 +341,16 @@ bool NodeInstance::set_input_value(const string &name, Value *value)
 
 bool NodeInstance::set_input_link(const string &name, NodeInstance *from_node, const NodeSocket *from_socket)
 {
+	const NodeSocket *socket = type->find_input(name);
 	InputInstance &input = inputs[name];
-	if (input.link_node && input.link_socket)
-		return false;
 	
-	input.link_node = from_node;
-	input.link_socket = from_socket;
-	return true;
+	if (socket->typedesc.assignable(from_socket->typedesc)) {
+		input.link_node = from_node;
+		input.link_socket = from_socket;
+		return true;
+	}
+	else
+		return false;
 }
 
 bool NodeInstance::has_input_link(const string &name) const




More information about the Bf-blender-cvs mailing list