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:
-rw-r--r--source/blender/editors/space_node/node_draw.cc34
-rw-r--r--source/blender/nodes/NOD_node_declaration.hh11
-rw-r--r--source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc18
3 files changed, 56 insertions, 7 deletions
diff --git a/source/blender/editors/space_node/node_draw.cc b/source/blender/editors/space_node/node_draw.cc
index b57696cb676..499ccb8a889 100644
--- a/source/blender/editors/space_node/node_draw.cc
+++ b/source/blender/editors/space_node/node_draw.cc
@@ -79,6 +79,7 @@
#include "RNA_access.h"
#include "NOD_geometry_nodes_eval_log.hh"
+#include "NOD_node_declaration.hh"
#include "FN_field_cpp_type.hh"
@@ -1085,12 +1086,37 @@ static void node_socket_draw_nested(const bContext *C,
but,
[](bContext *C, void *argN, const char *UNUSED(tip)) {
SocketTooltipData *data = (SocketTooltipData *)argN;
- std::optional<std::string> str = create_socket_inspection_string(
+ std::optional<std::string> socket_inspection_str = create_socket_inspection_string(
C, *data->ntree, *data->node, *data->socket);
- if (str.has_value()) {
- return BLI_strdup(str->c_str());
+
+ std::stringstream output;
+ if (data->node->declaration != nullptr) {
+ ListBase *list;
+ Span<blender::nodes::SocketDeclarationPtr> decl_list;
+
+ if (data->socket->in_out == SOCK_IN) {
+ list = &data->node->inputs;
+ decl_list = data->node->declaration->inputs();
+ }
+ else {
+ list = &data->node->outputs;
+ decl_list = data->node->declaration->outputs();
+ }
+
+ const int socket_index = BLI_findindex(list, data->socket);
+ const blender::nodes::SocketDeclaration &socket_decl = *decl_list[socket_index];
+ blender::StringRef description = socket_decl.description();
+ if (!description.is_empty()) {
+ output << TIP_(description.data()) << ".\n\n";
+ }
+
+ if (socket_inspection_str.has_value()) {
+ output << *socket_inspection_str;
+ return BLI_strdup(output.str().c_str());
+ }
}
- return BLI_strdup(TIP_("The socket value has not been computed yet"));
+ output << TIP_("The socket value has not been computed yet");
+ return BLI_strdup(output.str().c_str());
},
data,
MEM_freeN);
diff --git a/source/blender/nodes/NOD_node_declaration.hh b/source/blender/nodes/NOD_node_declaration.hh
index 6780dfcad59..8c7d343c001 100644
--- a/source/blender/nodes/NOD_node_declaration.hh
+++ b/source/blender/nodes/NOD_node_declaration.hh
@@ -119,6 +119,7 @@ class SocketDeclaration {
protected:
std::string name_;
std::string identifier_;
+ std::string description_;
bool hide_label_ = false;
bool hide_value_ = false;
bool is_multi_input_ = false;
@@ -138,6 +139,7 @@ class SocketDeclaration {
virtual bNodeSocket &update_or_build(bNodeTree &ntree, bNode &node, bNodeSocket &socket) const;
StringRefNull name() const;
+ StringRefNull description() const;
StringRefNull identifier() const;
InputSocketFieldType input_field_type() const;
@@ -186,6 +188,11 @@ class SocketDeclarationBuilder : public BaseSocketDeclarationBuilder {
return *(Self *)this;
}
+ Self &description(std::string value = "")
+ {
+ decl_->description_ = std::move(value);
+ return *(Self *)this;
+ }
Self &no_muted_links(bool value = true)
{
decl_->no_mute_links_ = value;
@@ -297,6 +304,10 @@ inline StringRefNull SocketDeclaration::identifier() const
return identifier_;
}
+inline StringRefNull SocketDeclaration::description() const
+{
+ return description_;
+}
inline InputSocketFieldType SocketDeclaration::input_field_type() const
{
return input_field_type_;
diff --git a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
index ed701c921ca..8c4defc3ca3 100644
--- a/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
+++ b/source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_cylinder.cc
@@ -29,9 +29,21 @@ namespace blender::nodes {
static void geo_node_mesh_primitive_cylinder_declare(NodeDeclarationBuilder &b)
{
- b.add_input<decl::Int>("Vertices").default_value(32).min(3).max(4096);
- b.add_input<decl::Float>("Radius").default_value(1.0f).min(0.0f).subtype(PROP_DISTANCE);
- b.add_input<decl::Float>("Depth").default_value(2.0f).min(0.0f).subtype(PROP_DISTANCE);
+ b.add_input<decl::Int>("Vertices")
+ .default_value(32)
+ .min(3)
+ .max(4096)
+ .description("The number of vertices around the circumference");
+ b.add_input<decl::Float>("Radius")
+ .default_value(1.0f)
+ .min(0.0f)
+ .subtype(PROP_DISTANCE)
+ .description("The radius of the cylinder");
+ b.add_input<decl::Float>("Depth")
+ .default_value(2.0f)
+ .min(0.0f)
+ .subtype(PROP_DISTANCE)
+ .description("The height of the cylinder on the Z axis");
b.add_output<decl::Geometry>("Geometry");
}