diff --git a/source/blender/blenkernel/BKE_anonymous_attribute_id.hh b/source/blender/blenkernel/BKE_anonymous_attribute_id.hh index b738ff50604..7e4ca4b7afd 100644 --- a/source/blender/blenkernel/BKE_anonymous_attribute_id.hh +++ b/source/blender/blenkernel/BKE_anonymous_attribute_id.hh @@ -47,6 +47,8 @@ class AnonymousAttributeID { return name_; } + virtual std::string user_name() const; + void user_add() const { users_.fetch_add(1); diff --git a/source/blender/blenkernel/BKE_geometry_fields.hh b/source/blender/blenkernel/BKE_geometry_fields.hh index 967bb912cc6..085bade618c 100644 --- a/source/blender/blenkernel/BKE_geometry_fields.hh +++ b/source/blender/blenkernel/BKE_geometry_fields.hh @@ -268,7 +268,7 @@ class AnonymousAttributeFieldInput : public GeometryFieldInput { AnonymousAttributeFieldInput(AutoAnonymousAttributeID anonymous_id, const CPPType &type, std::string producer_name) - : GeometryFieldInput(type, anonymous_id->name()), + : GeometryFieldInput(type, anonymous_id->user_name()), anonymous_id_(std::move(anonymous_id)), producer_name_(producer_name) { diff --git a/source/blender/blenkernel/intern/anonymous_attribute_id.cc b/source/blender/blenkernel/intern/anonymous_attribute_id.cc index e15ea6b643c..38f9c3df772 100644 --- a/source/blender/blenkernel/intern/anonymous_attribute_id.cc +++ b/source/blender/blenkernel/intern/anonymous_attribute_id.cc @@ -4,6 +4,11 @@ namespace blender::bke { +std::string AnonymousAttributeID::user_name() const +{ + return this->name(); +} + bool AnonymousAttributePropagationInfo::propagate(const AnonymousAttributeID &anonymous_id) const { if (this->propagate_all) { diff --git a/source/blender/nodes/NOD_geometry_exec.hh b/source/blender/nodes/NOD_geometry_exec.hh index ed0ba4105fd..088e076be35 100644 --- a/source/blender/nodes/NOD_geometry_exec.hh +++ b/source/blender/nodes/NOD_geometry_exec.hh @@ -49,12 +49,16 @@ using geo_eval_log::NodeWarningType; */ class NodeAnonymousAttributeID : public AnonymousAttributeID { std::string long_name_; + std::string socket_name_; public: NodeAnonymousAttributeID(const Object &object, const ComputeContext &compute_context, const bNode &bnode, - const StringRef identifier); + const StringRef identifier, + const StringRef name); + + std::string user_name() const override; }; class GeoNodeExecParams { @@ -288,13 +292,15 @@ class GeoNodeExecParams { if (!this->anonymous_attribute_output_is_required(output_identifier) && !force_create) { return {}; } + const bNodeSocket &output_socket = node_.output_by_identifier(output_identifier); const GeoNodesLFUserData &user_data = *this->user_data(); const ComputeContext &compute_context = *user_data.compute_context; return MEM_new(__func__, *user_data.modifier_data->self_object, compute_context, node_, - output_identifier); + output_identifier, + output_socket.name); } /** diff --git a/source/blender/nodes/intern/node_geometry_exec.cc b/source/blender/nodes/intern/node_geometry_exec.cc index c338ecacbc9..1824ff965ea 100644 --- a/source/blender/nodes/intern/node_geometry_exec.cc +++ b/source/blender/nodes/intern/node_geometry_exec.cc @@ -18,7 +18,9 @@ namespace blender::nodes { NodeAnonymousAttributeID::NodeAnonymousAttributeID(const Object &object, const ComputeContext &compute_context, const bNode &bnode, - const StringRef identifier) + const StringRef identifier, + const StringRef name) + : socket_name_(name) { const ComputeContextHash &hash = compute_context.hash(); { @@ -36,6 +38,11 @@ NodeAnonymousAttributeID::NodeAnonymousAttributeID(const Object &object, } } +std::string NodeAnonymousAttributeID::user_name() const +{ + return socket_name_; +} + void GeoNodeExecParams::error_message_add(const NodeWarningType type, const StringRef message) const {