Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Carlisle <Blendify>2021-12-06 21:39:19 +0300
committerAaron Carlisle <carlisle.b3d@gmail.com>2021-12-06 21:40:02 +0300
commit9792994311d6268da52208e77d26a1a86c024534 (patch)
treeb3bdba5d0cceee259213222abd59025f7a514590 /source/blender/nodes
parent2d4c7fa896ab4a6de163cd33746b54e67c7f8bac (diff)
Nodes: Add function to set compact socket flag for vectors
This flag is currently only used for vector sockets so the function is limited to the vector builder. The flag is only used by two shader nodes at the moment and this is needed to port them over to the new socket declaration API. Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D13490
Diffstat (limited to 'source/blender/nodes')
-rw-r--r--source/blender/nodes/NOD_node_declaration.hh1
-rw-r--r--source/blender/nodes/NOD_socket_declarations.hh7
-rw-r--r--source/blender/nodes/intern/node_declaration.cc4
3 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/nodes/NOD_node_declaration.hh b/source/blender/nodes/NOD_node_declaration.hh
index 9b99026d6a7..cccaf93a7d7 100644
--- a/source/blender/nodes/NOD_node_declaration.hh
+++ b/source/blender/nodes/NOD_node_declaration.hh
@@ -86,6 +86,7 @@ class SocketDeclaration {
std::string description_;
bool hide_label_ = false;
bool hide_value_ = false;
+ bool compact_ = false;
bool is_multi_input_ = false;
bool no_mute_links_ = false;
bool is_attribute_name_ = false;
diff --git a/source/blender/nodes/NOD_socket_declarations.hh b/source/blender/nodes/NOD_socket_declarations.hh
index 7284accd1ec..98c8fa68876 100644
--- a/source/blender/nodes/NOD_socket_declarations.hh
+++ b/source/blender/nodes/NOD_socket_declarations.hh
@@ -104,6 +104,7 @@ class VectorBuilder : public SocketDeclarationBuilder<Vector> {
VectorBuilder &subtype(PropertySubType subtype);
VectorBuilder &min(const float min);
VectorBuilder &max(const float max);
+ VectorBuilder &compact();
};
class BoolBuilder;
@@ -315,6 +316,12 @@ inline VectorBuilder &VectorBuilder::max(const float max)
return *this;
}
+inline VectorBuilder &VectorBuilder::compact()
+{
+ decl_->compact_ = true;
+ return *this;
+}
+
/** \} */
/* -------------------------------------------------------------------- */
diff --git a/source/blender/nodes/intern/node_declaration.cc b/source/blender/nodes/intern/node_declaration.cc
index e804d10ad75..7a19acd2510 100644
--- a/source/blender/nodes/intern/node_declaration.cc
+++ b/source/blender/nodes/intern/node_declaration.cc
@@ -56,6 +56,7 @@ bNodeSocket &SocketDeclaration::update_or_build(bNodeTree &ntree,
void SocketDeclaration::set_common_flags(bNodeSocket &socket) const
{
+ SET_FLAG_FROM_TEST(socket.flag, compact_, SOCK_COMPACT);
SET_FLAG_FROM_TEST(socket.flag, hide_value_, SOCK_HIDE_VALUE);
SET_FLAG_FROM_TEST(socket.flag, hide_label_, SOCK_HIDE_LABEL);
SET_FLAG_FROM_TEST(socket.flag, is_multi_input_, SOCK_MULTI_INPUT);
@@ -70,6 +71,9 @@ bool SocketDeclaration::matches_common_data(const bNodeSocket &socket) const
if (socket.identifier != identifier_) {
return false;
}
+ if (((socket.flag & SOCK_COMPACT) != 0) != compact_) {
+ return false;
+ }
if (((socket.flag & SOCK_HIDE_VALUE) != 0) != hide_value_) {
return false;
}