Blender  V3.3
Public Types | Public Member Functions | Friends | List of all members
GeometrySet Struct Reference

#include <BKE_geometry_set.hh>

Public Types

using AttributeForeachCallback = blender::FunctionRef< void(const blender::bke::AttributeIDRef &attribute_id, const blender::bke::AttributeMetaData &meta_data, const GeometryComponent &component)>
 
using ForeachSubGeometryCallback = blender::FunctionRef< void(GeometrySet &geometry_set)>
 

Public Member Functions

template<typename Component >
Component & get_component_for_write ()
 
template<typename Component >
const Component * get_component_for_read () const
 
template<typename Component >
bool has () const
 
template<typename Component >
void remove ()
 

Friends

std::ostream & operator<< (std::ostream &stream, const GeometrySet &geometry_set)
 

Geometry Set

 GeometrySet ()
 
 GeometrySet (const GeometrySet &other)
 
 GeometrySet (GeometrySet &&other)
 
 ~GeometrySet ()
 
GeometrySetoperator= (const GeometrySet &other)
 
GeometrySetoperator= (GeometrySet &&other)
 
GeometryComponentget_component_for_write (GeometryComponentType component_type)
 
const GeometryComponentget_component_for_read (GeometryComponentType component_type) const
 
bool has (const GeometryComponentType component_type) const
 
void remove (const GeometryComponentType component_type)
 
void keep_only (const blender::Span< GeometryComponentType > component_types)
 
void keep_only_during_modify (const blender::Span< GeometryComponentType > component_types)
 
void remove_geometry_during_modify ()
 
void add (const GeometryComponent &component)
 
blender::Vector< const GeometryComponent * > get_components_for_read () const
 
bool compute_boundbox_without_instances (blender::float3 *r_min, blender::float3 *r_max) const
 
void clear ()
 
bool owns_direct_data () const
 
void ensure_owns_direct_data ()
 
void attribute_foreach (blender::Span< GeometryComponentType > component_types, bool include_instances, AttributeForeachCallback callback) const
 
void gather_attributes_for_propagation (blender::Span< GeometryComponentType > component_types, GeometryComponentType dst_component_type, bool include_instances, blender::Map< blender::bke::AttributeIDRef, blender::bke::AttributeKind > &r_attributes) const
 
blender::Vector< GeometryComponentTypegather_component_types (bool include_instances, bool ignore_empty) const
 
void modify_geometry_sets (ForeachSubGeometryCallback callback)
 
bool has_mesh () const
 
bool has_pointcloud () const
 
bool has_instances () const
 
bool has_volume () const
 
bool has_curves () const
 
bool has_realized_data () const
 
bool is_empty () const
 
const Meshget_mesh_for_read () const
 
const PointCloudget_pointcloud_for_read () const
 
const Volumeget_volume_for_read () const
 
const Curvesget_curves_for_read () const
 
const blender::bke::CurvesEditHintsget_curve_edit_hints_for_read () const
 
Meshget_mesh_for_write ()
 
PointCloudget_pointcloud_for_write ()
 
Volumeget_volume_for_write ()
 
Curvesget_curves_for_write ()
 
blender::bke::CurvesEditHintsget_curve_edit_hints_for_write ()
 
void replace_mesh (Mesh *mesh, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
void replace_pointcloud (PointCloud *pointcloud, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
void replace_volume (Volume *volume, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
void replace_curves (Curves *curves, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
static GeometrySet create_with_mesh (Mesh *mesh, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
static GeometrySet create_with_volume (Volume *volume, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
static GeometrySet create_with_pointcloud (PointCloud *pointcloud, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 
static GeometrySet create_with_curves (Curves *curves, GeometryOwnershipType ownership=GeometryOwnershipType::Owned)
 

Detailed Description

A geometry set is a container for multiple kinds of geometry. It does not own geometry directly itself, instead geometry is owned by multiple #GeometryComponents, and the geometry set increases the user count of each component, so they avoid losing the data. This means individual components might be shared between multiple geometries and other code. Shared components are copied automatically when write access is requested.

The components usually do not store data directly, but keep a reference to a data structure defined elsewhere. There is at most one component of each type:

Copying a geometry set is a relatively cheap operation, because it does not copy the referenced geometry components, so GeometrySet can often be passed or moved by value.

Definition at line 116 of file BKE_geometry_set.hh.

Member Typedef Documentation

◆ AttributeForeachCallback

Definition at line 203 of file BKE_geometry_set.hh.

◆ ForeachSubGeometryCallback

Definition at line 221 of file BKE_geometry_set.hh.

Constructor & Destructor Documentation

◆ GeometrySet() [1/3]

GeometrySet::GeometrySet ( )
default

The methods are defaulted here so that they are not instantiated in every translation unit.

◆ GeometrySet() [2/3]

GeometrySet::GeometrySet ( const GeometrySet other)
default

◆ GeometrySet() [3/3]

GeometrySet::GeometrySet ( GeometrySet &&  other)
default

◆ ~GeometrySet()

GeometrySet::~GeometrySet ( )
default

Member Function Documentation

◆ add()

void GeometrySet::add ( const GeometryComponent component)

◆ attribute_foreach()

void GeometrySet::attribute_foreach ( blender::Span< GeometryComponentType component_types,
bool  include_instances,
AttributeForeachCallback  callback 
) const

◆ clear()

void GeometrySet::clear ( )

Remove all geometry components from the geometry set.

Definition at line 246 of file geometry_set.cc.

Referenced by compute_geometry(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_instances(), and modifyGeometry().

◆ compute_boundbox_without_instances()

bool GeometrySet::compute_boundbox_without_instances ( blender::float3 r_min,
blender::float3 r_max 
) const

◆ create_with_curves()

GeometrySet GeometrySet::create_with_curves ( Curves curves,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)
static

◆ create_with_mesh()

GeometrySet GeometrySet::create_with_mesh ( Mesh mesh,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)
static

◆ create_with_pointcloud()

GeometrySet GeometrySet::create_with_pointcloud ( PointCloud pointcloud,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)
static

Create a new geometry set that only contains the given point cloud.

Definition at line 378 of file geometry_set.cc.

References component(), and get_component_for_write().

Referenced by BKE_pointcloud_data_update(), and blender::nodes::node_geo_points_cc::node_geo_exec().

◆ create_with_volume()

GeometrySet GeometrySet::create_with_volume ( Volume volume,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)
static

Create a new geometry set that only contains the given volume.

Definition at line 368 of file geometry_set.cc.

References component(), and get_component_for_write().

◆ ensure_owns_direct_data()

void GeometrySet::ensure_owns_direct_data ( )

Make sure that the geometry can be cached. This does not ensure ownership of object/collection instances. This is necessary because sometimes components only have read-only or editing access to their data, which might be freed later if this geometry set outlasts the data.

Definition at line 253 of file geometry_set.cc.

References GeometryComponent::ensure_owns_direct_data(), and get_component_for_write().

Referenced by blender::nodes::node_geo_transfer_attribute_cc::IndexTransferFunction::IndexTransferFunction(), blender::nodes::node_geo_transfer_attribute_cc::NearestInterpolatedTransferFunction::NearestInterpolatedTransferFunction(), blender::nodes::node_geo_transfer_attribute_cc::NearestTransferFunction::NearestTransferFunction(), blender::nodes::node_geo_proximity_cc::node_geo_exec(), and blender::nodes::node_geo_raycast_cc::RaycastFunction::RaycastFunction().

◆ gather_attributes_for_propagation()

void GeometrySet::gather_attributes_for_propagation ( blender::Span< GeometryComponentType component_types,
GeometryComponentType  dst_component_type,
bool  include_instances,
blender::Map< blender::bke::AttributeIDRef, blender::bke::AttributeKind > &  r_attributes 
) const

◆ gather_component_types()

blender::Vector< GeometryComponentType > GeometrySet::gather_component_types ( bool  include_instances,
bool  ignore_empty 
) const

◆ get_component_for_read() [1/2]

template<typename Component >
const Component* GeometrySet::get_component_for_read ( ) const
inline

Definition at line 148 of file BKE_geometry_set.hh.

References BLI_STATIC_ASSERT.

Referenced by attribute_foreach().

◆ get_component_for_read() [2/2]

const GeometryComponent * GeometrySet::get_component_for_read ( GeometryComponentType  component_type) const

Get the component of the given type. Might return null if the component does not exist yet.

Definition at line 153 of file geometry_set.cc.

Referenced by blender::nodes::node_geo_transfer_attribute_cc::NearestInterpolatedTransferFunction::call(), blender::nodes::node_geo_transfer_attribute_cc::component_is_available(), compute_attributes_to_store(), blender::nodes::node_geo_instances_to_points_cc::convert_instances_to_points(), blender::ed::spreadsheet::data_source_from_geometry(), blender::nodes::node_geo_delete_geometry_cc::delete_curves_selection(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_curves(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_edges(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_faces(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_instances(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_curve(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_mesh(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_pointcloud(), blender::nodes::node_geo_transfer_attribute_cc::find_source_component(), gather_component_types_recursive(), blender::geometry::gather_curves_to_realize(), blender::geometry::gather_meshes_to_realize(), blender::geometry::gather_pointclouds_to_realize(), blender::bke::geometry_set_collect_recursive(), blender::nodes::node_geo_mesh_to_points_cc::geometry_set_mesh_to_points(), blender::nodes::node_geo_points_to_vertices_cc::geometry_set_points_to_vertices(), blender::bke::crazyspace::get_evaluated_curves_deformation(), make_duplis_geometry_set_impl(), blender::nodes::node_geo_attribute_domain_size_cc::node_geo_exec(), blender::nodes::node_geo_curve_fillet_cc::node_geo_exec(), blender::nodes::node_geo_curve_resample_cc::node_geo_exec(), blender::nodes::node_geo_curve_reverse_cc::node_geo_exec(), blender::nodes::node_geo_curve_set_handle_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_spline_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_subdivide_cc::node_geo_exec(), blender::nodes::node_geo_dual_mesh_cc::node_geo_exec(), blender::nodes::node_geo_edge_paths_to_curves_cc::node_geo_exec(), blender::nodes::node_geo_edge_split_cc::node_geo_exec(), blender::nodes::node_geo_instance_on_points_cc::node_geo_exec(), blender::nodes::node_geo_merge_by_distance_cc::node_geo_exec(), blender::nodes::node_geo_mesh_to_curve_cc::node_geo_exec(), blender::nodes::node_geo_remove_attribute_cc::node_geo_exec(), blender::nodes::node_geo_separate_components_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_handles_cc::node_geo_exec(), blender::nodes::node_geo_subdivision_surface_cc::node_geo_exec(), object_convert_exec(), blender::nodes::node_geo_distribute_points_on_faces_cc::point_distribution_calculate(), blender::nodes::node_geo_delete_geometry_cc::separate_mesh_selection(), and blender::nodes::node_geo_delete_geometry_cc::separate_point_cloud_selection().

◆ get_component_for_write() [1/2]

template<typename Component >
Component& GeometrySet::get_component_for_write ( )
inline

Definition at line 138 of file BKE_geometry_set.hh.

References BLI_STATIC_ASSERT.

Referenced by ensure_owns_direct_data().

◆ get_component_for_write() [2/2]

GeometryComponent & GeometrySet::get_component_for_write ( GeometryComponentType  component_type)

This method can only be used when the geometry set is mutable. It returns a mutable geometry component of the given type.

Definition at line 127 of file geometry_set.cc.

References GeometryComponent::create().

Referenced by BKE_curves_data_update(), create_with_curves(), create_with_mesh(), create_with_pointcloud(), create_with_volume(), blender::nodes::node_geo_delete_geometry_cc::delete_curves_selection(), blender::nodes::node_geo_delete_geometry_cc::delete_selected_instances(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_instances(), InstancesComponent::ensure_geometry_instances(), blender::geometry::execute_realize_curve_tasks(), blender::geometry::execute_realize_mesh_tasks(), blender::geometry::execute_realize_pointcloud_tasks(), gather_mutable_geometry_sets(), blender::nodes::node_geo_curve_trim_cc::geometry_set_curve_trim(), blender::nodes::node_geo_mesh_subdivide_cc::geometry_set_mesh_subdivide(), blender::nodes::node_geo_points_to_vertices_cc::geometry_set_points_to_vertices(), blender::nodes::node_geo_join_geometry_cc::join_component_type(), mesh_build_data(), modifier_apply_obdata(), modifier_modify_mesh_and_geometry_set(), modifyMesh(), blender::nodes::node_geo_attribute_capture_cc::node_geo_exec(), blender::nodes::node_geo_collection_info_cc::node_geo_exec(), blender::nodes::node_geo_curve_set_handle_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_to_points_cc::node_geo_exec(), blender::nodes::node_geo_extrude_mesh_cc::node_geo_exec(), blender::nodes::node_geo_flip_faces_cc::node_geo_exec(), blender::nodes::node_geo_instance_on_points_cc::node_geo_exec(), blender::nodes::node_geo_object_info_cc::node_geo_exec(), blender::nodes::node_geo_points_cc::node_geo_exec(), blender::nodes::node_geo_remove_attribute_cc::node_geo_exec(), blender::nodes::node_geo_rotate_instances_cc::node_geo_exec(), blender::nodes::node_geo_scale_elements_cc::node_geo_exec(), blender::nodes::node_geo_scale_instances_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_handles_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_radius_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_tilt_cc::node_geo_exec(), blender::nodes::node_geo_set_id_cc::node_geo_exec(), blender::nodes::node_geo_set_material_index_cc::node_geo_exec(), blender::nodes::node_geo_set_point_radius_cc::node_geo_exec(), blender::nodes::node_geo_set_position_cc::node_geo_exec(), blender::nodes::node_geo_set_shade_smooth_cc::node_geo_exec(), blender::nodes::node_geo_set_spline_cyclic_cc::node_geo_exec(), blender::nodes::node_geo_set_spline_resolution_cc::node_geo_exec(), blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec(), blender::nodes::node_geo_string_to_curves_cc::node_geo_exec(), blender::nodes::node_geo_subdivision_surface_cc::node_geo_exec(), blender::nodes::node_geo_translate_instances_cc::node_geo_exec(), blender::nodes::node_geo_triangulate_cc::node_geo_exec(), blender::bke::object_get_evaluated_geometry_set(), blender::nodes::node_geo_distribute_points_on_faces_cc::point_distribution_calculate(), GeometryComponentEditData::remember_deformed_curve_positions_if_necessary(), blender::ed::spreadsheet::spreadsheet_get_display_geometry_set(), store_computed_output_attributes(), take_pointcloud_ownership_from_geometry_set(), take_volume_ownership_from_geometry_set(), blender::nodes::transform_geometry_set(), and blender::nodes::translate_geometry_set().

◆ get_components_for_read()

Vector< const GeometryComponent * > GeometrySet::get_components_for_read ( ) const

◆ get_curve_edit_hints_for_read()

const blender::bke::CurvesEditHints * GeometrySet::get_curve_edit_hints_for_read ( ) const

Returns read-only curve edit hints or null.

Definition at line 309 of file geometry_set.cc.

References component().

Referenced by blender::nodes::GeoNodeExecParams::check_output_geometry_set().

◆ get_curve_edit_hints_for_write()

blender::bke::CurvesEditHints * GeometrySet::get_curve_edit_hints_for_write ( )

◆ get_curves_for_read()

const Curves * GeometrySet::get_curves_for_read ( ) const

◆ get_curves_for_write()

Curves * GeometrySet::get_curves_for_write ( )

◆ get_mesh_for_read()

const Mesh * GeometrySet::get_mesh_for_read ( ) const

◆ get_mesh_for_write()

Mesh * GeometrySet::get_mesh_for_write ( )

◆ get_pointcloud_for_read()

const PointCloud * GeometrySet::get_pointcloud_for_read ( ) const

◆ get_pointcloud_for_write()

PointCloud * GeometrySet::get_pointcloud_for_write ( )

Returns a mutable point cloud or null. No ownership is transferred.

Definition at line 461 of file geometry_set.cc.

References component().

Referenced by blender::nodes::transform_geometry_set(), and blender::nodes::translate_geometry_set().

◆ get_volume_for_read()

const Volume * GeometrySet::get_volume_for_read ( ) const

Returns a read-only volume or null.

Definition at line 297 of file geometry_set.cc.

References component().

Referenced by compute_boundbox_without_instances(), make_duplis_geometry_set_impl(), and replace_volume().

◆ get_volume_for_write()

Volume * GeometrySet::get_volume_for_write ( )

Returns a mutable volume or null. No ownership is transferred.

Definition at line 467 of file geometry_set.cc.

References component().

Referenced by modifyGeometrySet(), blender::nodes::transform_geometry_set(), and blender::nodes::translate_geometry_set().

◆ has() [1/2]

template<typename Component >
bool GeometrySet::has ( ) const
inline

Definition at line 155 of file BKE_geometry_set.hh.

References BLI_STATIC_ASSERT.

Referenced by attribute_foreach().

◆ has() [2/2]

bool GeometrySet::has ( const GeometryComponentType  component_type) const

◆ has_curves()

bool GeometrySet::has_curves ( ) const

Returns true when the geometry set has a curves component that has a curves data-block.

Definition at line 334 of file geometry_set.cc.

References component().

Referenced by BKE_displist_make_curveTypes(), blender::nodes::node_geo_curve_sample_cc::SampleCurveFunction::call(), blender::nodes::node_geo_curve_fill_cc::curve_fill_calculate(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_curves(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points(), blender::nodes::node_geo_curve_trim_cc::geometry_set_curve_trim(), is_empty(), modifier_apply_obdata(), blender::nodes::node_geo_curve_fillet_cc::node_geo_exec(), blender::nodes::node_geo_curve_length_cc::node_geo_exec(), blender::nodes::node_geo_curve_reverse_cc::node_geo_exec(), blender::nodes::node_geo_curve_sample_cc::node_geo_exec(), blender::nodes::node_geo_curve_set_handle_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_spline_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_subdivide_cc::node_geo_exec(), blender::nodes::node_geo_curve_to_mesh_cc::node_geo_exec(), blender::nodes::node_geo_curve_to_points_cc::node_geo_exec(), blender::nodes::node_geo_deform_curves_on_surface_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_handles_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_radius_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_tilt_cc::node_geo_exec(), blender::nodes::node_geo_set_spline_cyclic_cc::node_geo_exec(), blender::nodes::node_geo_transfer_attribute_cc::node_geo_exec(), object_convert_exec(), and blender::nodes::separate_geometry().

◆ has_instances()

bool GeometrySet::has_instances ( ) const

◆ has_mesh()

bool GeometrySet::has_mesh ( ) const

Returns true when the geometry set has a mesh component that has a mesh.

Definition at line 285 of file geometry_set.cc.

References component().

Referenced by blender::nodes::node_geo_proximity_cc::ProximityFunction::call(), blender::nodes::node_geo_raycast_cc::RaycastFunction::call(), curve_calc_modifiers_post(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_edges(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_faces(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points(), evaluate_surface_object(), blender::nodes::node_geo_mesh_subdivide_cc::geometry_set_mesh_subdivide(), is_empty(), modifyGeometry(), blender::nodes::node_geo_dual_mesh_cc::node_geo_exec(), blender::nodes::node_geo_edge_paths_to_curves_cc::node_geo_exec(), blender::nodes::node_geo_edge_split_cc::node_geo_exec(), blender::nodes::node_geo_extrude_mesh_cc::node_geo_exec(), blender::nodes::node_geo_flip_faces_cc::node_geo_exec(), blender::nodes::node_geo_merge_by_distance_cc::node_geo_exec(), blender::nodes::node_geo_mesh_to_volume_cc::node_geo_exec(), blender::nodes::node_geo_proximity_cc::node_geo_exec(), blender::nodes::node_geo_raycast_cc::node_geo_exec(), blender::nodes::node_geo_scale_elements_cc::node_geo_exec(), blender::nodes::node_geo_set_material_index_cc::node_geo_exec(), blender::nodes::node_geo_set_shade_smooth_cc::node_geo_exec(), blender::nodes::node_geo_subdivision_surface_cc::node_geo_exec(), blender::nodes::node_geo_transfer_attribute_cc::node_geo_exec(), blender::nodes::node_geo_triangulate_cc::node_geo_exec(), blender::bke::object_get_evaluated_geometry_set(), blender::nodes::node_geo_distribute_points_on_faces_cc::point_distribution_calculate(), and blender::nodes::separate_geometry().

◆ has_pointcloud()

bool GeometrySet::has_pointcloud ( ) const

◆ has_realized_data()

bool GeometrySet::has_realized_data ( ) const

Returns true when the geometry set has any data that is not an instance.

Definition at line 340 of file geometry_set.cc.

References GEO_COMPONENT_TYPE_INSTANCES.

Referenced by blender::nodes::GeoNodeExecParams::check_input_geometry_set(), and blender::nodes::separate_geometry().

◆ has_volume()

bool GeometrySet::has_volume ( ) const

Returns true when the geometry set has a volume component that has a volume.

Definition at line 328 of file geometry_set.cc.

References component().

Referenced by is_empty().

◆ is_empty()

bool GeometrySet::is_empty ( ) const

◆ keep_only()

void GeometrySet::keep_only ( const blender::Span< GeometryComponentType component_types)

Remove all geometry components with types that are not in the provided list.

Definition at line 169 of file geometry_set.cc.

References blender::Span< T >::contains().

Referenced by keep_only_during_modify(), blender::nodes::node_geo_edge_paths_to_curves_cc::node_geo_exec(), and blender::nodes::node_geo_instances_to_points_cc::node_geo_exec().

◆ keep_only_during_modify()

void GeometrySet::keep_only_during_modify ( const blender::Span< GeometryComponentType component_types)

◆ modify_geometry_sets()

void GeometrySet::modify_geometry_sets ( ForeachSubGeometryCallback  callback)

Modify every (recursive) instance separately. This is often more efficient than realizing all instances just to change the same thing on all of them.

Definition at line 620 of file geometry_set.cc.

References callback, blender::Vector< T, InlineBufferCapacity, Allocator >::first(), gather_mutable_geometry_sets(), blender::threading::parallel_for_each(), and blender::Vector< T, InlineBufferCapacity, Allocator >::size().

Referenced by blender::nodes::node_geo_attribute_capture_cc::node_geo_exec(), blender::nodes::node_geo_bounding_box_cc::node_geo_exec(), blender::nodes::node_geo_convex_hull_cc::node_geo_exec(), blender::nodes::node_geo_curve_fill_cc::node_geo_exec(), blender::nodes::node_geo_curve_fillet_cc::node_geo_exec(), blender::nodes::node_geo_curve_resample_cc::node_geo_exec(), blender::nodes::node_geo_curve_reverse_cc::node_geo_exec(), blender::nodes::node_geo_curve_set_handle_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_spline_type_cc::node_geo_exec(), blender::nodes::node_geo_curve_subdivide_cc::node_geo_exec(), blender::nodes::node_geo_curve_to_mesh_cc::node_geo_exec(), blender::nodes::node_geo_delete_geometry_cc::node_geo_exec(), blender::nodes::node_geo_distribute_points_on_faces_cc::node_geo_exec(), blender::nodes::node_geo_dual_mesh_cc::node_geo_exec(), blender::nodes::node_geo_duplicate_elements_cc::node_geo_exec(), blender::nodes::node_geo_edge_paths_to_curves_cc::node_geo_exec(), blender::nodes::node_geo_edge_split_cc::node_geo_exec(), blender::nodes::node_geo_extrude_mesh_cc::node_geo_exec(), blender::nodes::node_geo_flip_faces_cc::node_geo_exec(), blender::nodes::node_geo_instance_on_points_cc::node_geo_exec(), blender::nodes::node_geo_material_replace_cc::node_geo_exec(), blender::nodes::node_geo_mesh_subdivide_cc::node_geo_exec(), blender::nodes::node_geo_mesh_to_curve_cc::node_geo_exec(), blender::nodes::node_geo_mesh_to_points_cc::node_geo_exec(), blender::nodes::node_geo_mesh_to_volume_cc::node_geo_exec(), blender::nodes::node_geo_points_to_vertices_cc::node_geo_exec(), blender::nodes::node_geo_points_to_volume_cc::node_geo_exec(), blender::nodes::node_geo_remove_attribute_cc::node_geo_exec(), blender::nodes::node_geo_scale_elements_cc::node_geo_exec(), blender::nodes::node_geo_separate_geometry_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_radius_cc::node_geo_exec(), blender::nodes::node_geo_set_curve_tilt_cc::node_geo_exec(), blender::nodes::node_geo_set_material_index_cc::node_geo_exec(), blender::nodes::node_geo_set_point_radius_cc::node_geo_exec(), blender::nodes::node_geo_set_shade_smooth_cc::node_geo_exec(), blender::nodes::node_geo_set_spline_cyclic_cc::node_geo_exec(), blender::nodes::node_geo_set_spline_resolution_cc::node_geo_exec(), blender::nodes::node_geo_store_named_attribute_cc::node_geo_exec(), blender::nodes::node_geo_subdivision_surface_cc::node_geo_exec(), blender::nodes::node_geo_triangulate_cc::node_geo_exec(), blender::nodes::node_geo_volume_to_mesh_cc::node_geo_exec(), and blender::geometry::remove_id_attribute_from_instances().

◆ operator=() [1/2]

GeometrySet & GeometrySet::operator= ( const GeometrySet other)
default

◆ operator=() [2/2]

GeometrySet & GeometrySet::operator= ( GeometrySet &&  other)
default

◆ owns_direct_data()

bool GeometrySet::owns_direct_data ( ) const

Definition at line 267 of file geometry_set.cc.

◆ remove() [1/2]

template<typename Component >
void GeometrySet::remove ( )
inline

Definition at line 162 of file BKE_geometry_set.hh.

References BLI_STATIC_ASSERT.

◆ remove() [2/2]

void GeometrySet::remove ( const GeometryComponentType  component_type)

◆ remove_geometry_during_modify()

void GeometrySet::remove_geometry_during_modify ( )

◆ replace_curves()

void GeometrySet::replace_curves ( Curves curves,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)

◆ replace_mesh()

void GeometrySet::replace_mesh ( Mesh mesh,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)

◆ replace_pointcloud()

void GeometrySet::replace_pointcloud ( PointCloud pointcloud,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)

◆ replace_volume()

void GeometrySet::replace_volume ( Volume volume,
GeometryOwnershipType  ownership = GeometryOwnershipType::Owned 
)

Clear the existing volume and replace with the given one.

Definition at line 441 of file geometry_set.cc.

References component(), and get_volume_for_read().

Referenced by BKE_volume_data_update(), and modifyGeometrySet().

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  stream,
const GeometrySet geometry_set 
)
friend

Definition at line 239 of file geometry_set.cc.


The documentation for this struct was generated from the following files: