diff options
Diffstat (limited to 'source/blender/nodes/intern/node_socket_declarations.cc')
-rw-r--r-- | source/blender/nodes/intern/node_socket_declarations.cc | 117 |
1 files changed, 54 insertions, 63 deletions
diff --git a/source/blender/nodes/intern/node_socket_declarations.cc b/source/blender/nodes/intern/node_socket_declarations.cc index 418fed146fb..4b0dbad3cff 100644 --- a/source/blender/nodes/intern/node_socket_declarations.cc +++ b/source/blender/nodes/intern/node_socket_declarations.cc @@ -38,6 +38,7 @@ bNodeSocket &Float::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out { bNodeSocket &socket = *nodeAddStaticSocket( &ntree, &node, in_out, SOCK_FLOAT, subtype_, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); bNodeSocketValueFloat &value = *(bNodeSocketValueFloat *)socket.default_value; value.min = soft_min_value_; value.max = soft_max_value_; @@ -47,16 +48,13 @@ bNodeSocket &Float::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out bool Float::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_FLOAT) { - return false; - } - if (socket.typeinfo->subtype != subtype_) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name_) { + if (socket.type != SOCK_FLOAT) { return false; } - if (socket.identifier != identifier_) { + if (socket.typeinfo->subtype != subtype_) { return false; } bNodeSocketValueFloat &value = *(bNodeSocketValueFloat *)socket.default_value; @@ -77,6 +75,7 @@ bNodeSocket &Float::update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket & if (socket.typeinfo->subtype != subtype_) { modify_subtype_except_for_storage(socket, subtype_); } + this->set_common_flags(socket); bNodeSocketValueFloat &value = *(bNodeSocketValueFloat *)socket.default_value; value.min = soft_min_value_; value.max = soft_max_value_; @@ -92,6 +91,7 @@ bNodeSocket &Int::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) { bNodeSocket &socket = *nodeAddStaticSocket( &ntree, &node, in_out, SOCK_INT, subtype_, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); bNodeSocketValueInt &value = *(bNodeSocketValueInt *)socket.default_value; value.min = soft_min_value_; value.max = soft_max_value_; @@ -101,16 +101,13 @@ bNodeSocket &Int::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) bool Int::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_INT) { - return false; - } - if (socket.typeinfo->subtype != subtype_) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name_) { + if (socket.type != SOCK_INT) { return false; } - if (socket.identifier != identifier_) { + if (socket.typeinfo->subtype != subtype_) { return false; } bNodeSocketValueInt &value = *(bNodeSocketValueInt *)socket.default_value; @@ -131,6 +128,7 @@ bNodeSocket &Int::update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket &so if (socket.typeinfo->subtype != subtype_) { modify_subtype_except_for_storage(socket, subtype_); } + this->set_common_flags(socket); bNodeSocketValueInt &value = *(bNodeSocketValueInt *)socket.default_value; value.min = soft_min_value_; value.max = soft_max_value_; @@ -146,23 +144,23 @@ bNodeSocket &Vector::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_ou { bNodeSocket &socket = *nodeAddStaticSocket( &ntree, &node, in_out, SOCK_VECTOR, subtype_, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); bNodeSocketValueVector &value = *(bNodeSocketValueVector *)socket.default_value; copy_v3_v3(value.value, default_value_); + value.min = soft_min_value_; + value.max = soft_max_value_; return socket; } bool Vector::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_VECTOR) { - return false; - } - if (socket.typeinfo->subtype != subtype_) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name_) { + if (socket.type != SOCK_VECTOR) { return false; } - if (socket.identifier != identifier_) { + if (socket.typeinfo->subtype != subtype_) { return false; } return true; @@ -176,6 +174,7 @@ bNodeSocket &Vector::update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket if (socket.typeinfo->subtype != subtype_) { modify_subtype_except_for_storage(socket, subtype_); } + this->set_common_flags(socket); bNodeSocketValueVector &value = *(bNodeSocketValueVector *)socket.default_value; value.subtype = subtype_; STRNCPY(socket.name, name_.c_str()); @@ -190,6 +189,7 @@ bNodeSocket &Bool::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) { bNodeSocket &socket = *nodeAddStaticSocket( &ntree, &node, in_out, SOCK_BOOLEAN, PROP_NONE, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); bNodeSocketValueBoolean &value = *(bNodeSocketValueBoolean *)socket.default_value; value.value = default_value_; return socket; @@ -197,13 +197,10 @@ bNodeSocket &Bool::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) bool Bool::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_BOOLEAN) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name_) { - return false; - } - if (socket.identifier != identifier_) { + if (socket.type != SOCK_BOOLEAN) { return false; } return true; @@ -217,6 +214,7 @@ bNodeSocket &Color::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out { bNodeSocket &socket = *nodeAddStaticSocket( &ntree, &node, in_out, SOCK_RGBA, PROP_NONE, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); bNodeSocketValueRGBA &value = *(bNodeSocketValueRGBA *)socket.default_value; copy_v4_v4(value.value, default_value_); return socket; @@ -224,13 +222,15 @@ bNodeSocket &Color::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out bool Color::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_RGBA) { - return false; - } - if (socket.name != name_) { - return false; + if (!this->matches_common_data(socket)) { + if (socket.name != name_) { + return false; + } + if (socket.identifier != identifier_) { + return false; + } } - if (socket.identifier != identifier_) { + if (socket.type != SOCK_RGBA) { return false; } return true; @@ -244,18 +244,16 @@ bNodeSocket &String::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_ou { bNodeSocket &socket = *nodeAddStaticSocket( &ntree, &node, in_out, SOCK_STRING, PROP_NONE, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); return socket; } bool String::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_STRING) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name_) { - return false; - } - if (socket.identifier != identifier_) { + if (socket.type != SOCK_STRING) { return false; } return true; @@ -265,42 +263,37 @@ bool String::matches(const bNodeSocket &socket) const * IDSocketDeclaration. */ -namespace detail { -bNodeSocket &build_id_socket(bNodeTree &ntree, - bNode &node, - eNodeSocketInOut in_out, - const CommonIDSocketData &data, - StringRefNull name, - StringRefNull identifier) +bNodeSocket &IDSocketDeclaration::build(bNodeTree &ntree, + bNode &node, + eNodeSocketInOut in_out) const { bNodeSocket &socket = *nodeAddSocket( - &ntree, &node, in_out, data.idname, name.c_str(), identifier.c_str()); - if (data.hide_label) { - socket.flag |= SOCK_HIDE_LABEL; - } + &ntree, &node, in_out, idname_, identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); return socket; } -bool matches_id_socket(const bNodeSocket &socket, - const CommonIDSocketData &data, - StringRefNull name, - StringRefNull identifier) +bool IDSocketDeclaration::matches(const bNodeSocket &socket) const { - if (!STREQ(socket.idname, data.idname)) { - return false; - } - if (data.hide_label != ((socket.flag & SOCK_HIDE_LABEL) != 0)) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name) { - return false; - } - if (socket.identifier != identifier) { + if (!STREQ(socket.idname, idname_)) { return false; } return true; } -} // namespace detail + +bNodeSocket &IDSocketDeclaration::update_or_build(bNodeTree &ntree, + bNode &node, + bNodeSocket &socket) const +{ + if (StringRef(socket.idname) != idname_) { + return this->build(ntree, node, (eNodeSocketInOut)socket.in_out); + } + this->set_common_flags(socket); + return socket; +} /* -------------------------------------------------------------------- * Geometry. @@ -310,18 +303,16 @@ bNodeSocket &Geometry::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_ { bNodeSocket &socket = *nodeAddSocket( &ntree, &node, in_out, "NodeSocketGeometry", identifier_.c_str(), name_.c_str()); + this->set_common_flags(socket); return socket; } bool Geometry::matches(const bNodeSocket &socket) const { - if (socket.type != SOCK_GEOMETRY) { + if (!this->matches_common_data(socket)) { return false; } - if (socket.name != name_) { - return false; - } - if (socket.identifier != identifier_) { + if (socket.type != SOCK_GEOMETRY) { return false; } return true; |