[Bf-blender-cvs] [3f8b45d8d1f] master: Fix: Builtin curve attributes unavailable
Hans Goudey
noreply at git.blender.org
Wed Oct 20 23:54:12 CEST 2021
Commit: 3f8b45d8d1fff8a082e3d35221d39854484e8551
Author: Hans Goudey
Date: Wed Oct 20 16:54:04 2021 -0500
Branches: master
https://developer.blender.org/rB3f8b45d8d1fff8a082e3d35221d39854484e8551
Fix: Builtin curve attributes unavailable
After the addition of the `id` attribute in rB40c3b8836b7a, the `exists`
function assumed that all attributes were stored in the custom data.
===================================================================
M source/blender/blenkernel/intern/geometry_component_curve.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/geometry_component_curve.cc b/source/blender/blenkernel/intern/geometry_component_curve.cc
index c3d7eff4e6f..2f2851b4fd4 100644
--- a/source/blender/blenkernel/intern/geometry_component_curve.cc
+++ b/source/blender/blenkernel/intern/geometry_component_curve.cc
@@ -1074,6 +1074,7 @@ template<typename T> class BuiltinPointAttributeProvider : public BuiltinAttribu
const GetSpan get_span_;
const GetMutableSpan get_mutable_span_;
const UpdateOnWrite update_on_write_;
+ bool stored_in_custom_data_;
public:
BuiltinPointAttributeProvider(std::string attribute_name,
@@ -1081,7 +1082,8 @@ template<typename T> class BuiltinPointAttributeProvider : public BuiltinAttribu
const DeletableEnum deletable,
const GetSpan get_span,
const GetMutableSpan get_mutable_span,
- const UpdateOnWrite update_on_write)
+ const UpdateOnWrite update_on_write,
+ const bool stored_in_custom_data)
: BuiltinAttributeProvider(std::move(attribute_name),
ATTR_DOMAIN_POINT,
bke::cpp_type_to_custom_data_type(CPPType::get<T>()),
@@ -1090,7 +1092,8 @@ template<typename T> class BuiltinPointAttributeProvider : public BuiltinAttribu
deletable),
get_span_(get_span),
get_mutable_span_(get_mutable_span),
- update_on_write_(update_on_write)
+ update_on_write_(update_on_write),
+ stored_in_custom_data_(stored_in_custom_data)
{
}
@@ -1168,8 +1171,10 @@ template<typename T> class BuiltinPointAttributeProvider : public BuiltinAttribu
return false;
}
- if (!curve->splines().first()->attributes.get_for_read(name_)) {
- return false;
+ if (stored_in_custom_data_) {
+ if (!curve->splines().first()->attributes.get_for_read(name_)) {
+ return false;
+ }
}
bool has_point = false;
@@ -1202,7 +1207,8 @@ class PositionAttributeProvider final : public BuiltinPointAttributeProvider<flo
BuiltinAttributeProvider::NonDeletable,
[](const Spline &spline) { return spline.positions(); },
[](Spline &spline) { return spline.positions(); },
- [](Spline &spline) { spline.mark_cache_invalid(); })
+ [](Spline &spline) { spline.mark_cache_invalid(); },
+ false)
{
}
@@ -1529,7 +1535,8 @@ static ComponentAttributeProviders create_attribute_providers_for_curve()
std::optional<GMutableSpan> span = spline.attributes.get_for_write("id");
return span ? span->typed<int>() : MutableSpan<int>();
},
- {});
+ {},
+ true);
static BuiltinPointAttributeProvider<float> radius(
"radius",
@@ -1537,7 +1544,8 @@ static ComponentAttributeProviders create_attribute_providers_for_curve()
BuiltinAttributeProvider::NonDeletable,
[](const Spline &spline) { return spline.radii(); },
[](Spline &spline) { return spline.radii(); },
- nullptr);
+ nullptr,
+ false);
static BuiltinPointAttributeProvider<float> tilt(
"tilt",
@@ -1545,7 +1553,8 @@ static ComponentAttributeProviders create_attribute_providers_for_curve()
BuiltinAttributeProvider::NonDeletable,
[](const Spline &spline) { return spline.tilts(); },
[](Spline &spline) { return spline.tilts(); },
- [](Spline &spline) { spline.mark_cache_invalid(); });
+ [](Spline &spline) { spline.mark_cache_invalid(); },
+ false);
static DynamicPointAttributeProvider point_custom_data;
More information about the Bf-blender-cvs
mailing list