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
This commit is contained in:
Aaron Carlisle 2021-12-06 13:39:19 -05:00 committed by Aaron Carlisle
parent 2d4c7fa896
commit 9792994311
3 changed files with 12 additions and 0 deletions

View File

@ -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;

View File

@ -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;
}
/** \} */
/* -------------------------------------------------------------------- */

View File

@ -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;
}