Cleanup: Add built-in check for an attribute ID

This commit is contained in:
Hans Goudey 2021-09-16 11:56:31 -05:00
parent 58043c0637
commit 31a0708cb1
2 changed files with 8 additions and 1 deletions

View File

@ -103,6 +103,7 @@ class GeometryComponent {
virtual int attribute_domain_size(const AttributeDomain domain) const;
bool attribute_is_builtin(const blender::StringRef attribute_name) const;
bool attribute_is_builtin(const blender::bke::AttributeIDRef &attribute_id) const;
/* Get read-only access to the highest priority attribute with the given name.
* Returns null if the attribute does not exist. */

View File

@ -817,6 +817,12 @@ bool GeometryComponent::attribute_is_builtin(const blender::StringRef attribute_
return providers->builtin_attribute_providers().contains_as(attribute_name);
}
bool GeometryComponent::attribute_is_builtin(const AttributeIDRef &attribute_id) const
{
/* Anonymous attributes cannot be built-in. */
return attribute_id.is_named() && this->attribute_is_builtin(attribute_id.name());
}
blender::bke::ReadAttributeLookup GeometryComponent::attribute_try_get_for_read(
const AttributeIDRef &attribute_id) const
{
@ -1210,7 +1216,7 @@ static OutputAttribute create_output_attribute(GeometryComponent &component,
BLI_assert(cpp_type != nullptr);
const nodes::DataTypeConversions &conversions = nodes::get_implicit_type_conversions();
if (attribute_id.is_named() && component.attribute_is_builtin(attribute_id.name())) {
if (component.attribute_is_builtin(attribute_id)) {
const StringRef attribute_name = attribute_id.name();
WriteAttributeLookup attribute = component.attribute_try_get_for_write(attribute_name);
if (!attribute) {