Nodes: add default value to string socket declaration

Differential Revision: https://developer.blender.org/D12758
This commit is contained in:
Erik Abrahamsson
2021-10-18 11:59:49 +02:00
committed by Jacques Lucke
parent eb0d216dc1
commit f9fe755dba
2 changed files with 26 additions and 1 deletions

View File

@@ -145,14 +145,26 @@ class ColorBuilder : public SocketDeclarationBuilder<Color> {
ColorBuilder &default_value(const ColorGeometry4f value); ColorBuilder &default_value(const ColorGeometry4f value);
}; };
class StringBuilder;
class String : public SocketDeclaration { class String : public SocketDeclaration {
private:
std::string default_value_;
friend StringBuilder;
public: public:
using Builder = SocketDeclarationBuilder<String>; using Builder = StringBuilder;
bNodeSocket &build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) const override; bNodeSocket &build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_out) const override;
bool matches(const bNodeSocket &socket) const override; bool matches(const bNodeSocket &socket) const override;
}; };
class StringBuilder : public SocketDeclarationBuilder<String> {
public:
StringBuilder &default_value(const std::string value);
};
class IDSocketDeclaration : public SocketDeclaration { class IDSocketDeclaration : public SocketDeclaration {
private: private:
const char *idname_; const char *idname_;
@@ -322,6 +334,18 @@ inline ColorBuilder &ColorBuilder::default_value(const ColorGeometry4f value)
/** \} */ /** \} */
/* -------------------------------------------------------------------- */
/** \name #StringBuilder Inline Methods
* \{ */
inline StringBuilder &StringBuilder::default_value(std::string value)
{
decl_->default_value_ = std::move(value);
return *this;
}
/** \} */
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/** \name #IDSocketDeclaration and Children Inline Methods /** \name #IDSocketDeclaration and Children Inline Methods
* \{ */ * \{ */

View File

@@ -254,6 +254,7 @@ bNodeSocket &String::build(bNodeTree &ntree, bNode &node, eNodeSocketInOut in_ou
{ {
bNodeSocket &socket = *nodeAddStaticSocket( bNodeSocket &socket = *nodeAddStaticSocket(
&ntree, &node, in_out, SOCK_STRING, PROP_NONE, identifier_.c_str(), name_.c_str()); &ntree, &node, in_out, SOCK_STRING, PROP_NONE, identifier_.c_str(), name_.c_str());
STRNCPY(((bNodeSocketValueString *)socket.default_value)->value, default_value_.c_str());
this->set_common_flags(socket); this->set_common_flags(socket);
return socket; return socket;
} }