22 r_real_geometries.lookup_or_add_default(std::move(real_geometry)).append(path);
47 const bool allow_merging_instance_references =
false;
51 {
geometry, geometry_to_insert}, {}, {}, allow_merging_instance_references);
56 const int reference_i = path.
first();
83 for (
auto &&item : real_geometries.
items()) {
84 geometries_with_paths.
append({item.key, std::move(item.value)});
87 real_geometries.
clear();
91 for (const int i : range) {
92 bke::GeometrySet &geometry_to_modify = geometries_with_paths[i].geometry;
93 fn(geometry_to_modify);
98 for (GeometryWithPaths &geometry_with_paths : geometries_with_paths) {
99 for (
const Span<int> path : geometry_with_paths.paths) {
ItemIterator items() const &
constexpr int64_t size() const
constexpr IndexRange index_range() const
constexpr Span drop_front(int64_t n) const
constexpr const T & first() const
constexpr bool is_empty() const
void append(const T &value)
IndexRange index_range() const
GeometrySet & geometry_set()
MutableSpan< InstanceReference > references_for_write()
void ensure_geometry_instances()
bke::GeometrySet join_geometries(Span< bke::GeometrySet > geometries, const bke::AttributeFilter &attribute_filter, const std::optional< Span< bke::GeometryComponent::Type > > &component_types_to_join=std::nullopt, bool allow_merging_instance_references=true)
void foreach_real_geometry(bke::GeometrySet &geometry, FunctionRef< void(bke::GeometrySet &geometry_set)> fn)
static void reinsert_modified_geometry_recursive(bke::GeometrySet &geometry, const bke::GeometrySet &geometry_to_insert, const Span< int > path)
static void extract_real_geometries_recursive(bke::GeometrySet &geometry, Vector< int > &path, Map< bke::GeometrySet, Vector< Vector< int > > > &r_real_geometries)
void parallel_for(const IndexRange range, const int64_t grain_size, const Function &function, const TaskSizeHints &size_hints=detail::TaskSizeHints_Static(1))
void remove(const GeometryComponent::Type component_type)
bke::GeometrySet geometry
Vector< Vector< int > > paths