diff options
author | Hans Goudey <h.goudey@me.com> | 2020-12-10 19:50:37 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2020-12-10 19:50:37 +0300 |
commit | 8bdd996cd0de794f21d5f201a3af0a9cca9e8e5e (patch) | |
tree | 20031b69a7fdc185097d7d087c8e177fe6d25dd5 /source/blender | |
parent | 3d25312617019178455dc6f68166c65c687a7041 (diff) |
Geometry Nodes: Add helper function to check if attribute exists
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_geometry_set.hh | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/attribute_access.cc | 9 |
2 files changed, 12 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_geometry_set.hh b/source/blender/blenkernel/BKE_geometry_set.hh index 3398da9896b..b7cb9320086 100644 --- a/source/blender/blenkernel/BKE_geometry_set.hh +++ b/source/blender/blenkernel/BKE_geometry_set.hh @@ -88,6 +88,9 @@ class GeometryComponent { GeometryComponentType type() const; + /* Return true when any attribute with this name exists, including built in attributes. */ + bool attribute_exists(const blender::StringRef attribute_name) const; + /* Returns true when the geometry component supports this attribute domain. */ virtual bool attribute_domain_supported(const AttributeDomain domain) const; /* Returns true when the given data type is supported in the given domain. */ diff --git a/source/blender/blenkernel/intern/attribute_access.cc b/source/blender/blenkernel/intern/attribute_access.cc index d79168d5443..282e9bc2962 100644 --- a/source/blender/blenkernel/intern/attribute_access.cc +++ b/source/blender/blenkernel/intern/attribute_access.cc @@ -590,6 +590,15 @@ Set<std::string> GeometryComponent::attribute_names() const return {}; } +bool GeometryComponent::attribute_exists(const blender::StringRef attribute_name) const +{ + ReadAttributePtr attribute = this->attribute_try_get_for_read(attribute_name); + if (attribute) { + return true; + } + return false; +} + static ReadAttributePtr try_adapt_data_type(ReadAttributePtr attribute, const blender::fn::CPPType &to_type) { |