Blender
V3.3
|
#include <BKE_geometry_set.hh>
Public Member Functions | |
virtual | ~GeometryComponent ()=default |
virtual GeometryComponent * | copy () const =0 |
virtual bool | owns_direct_data () const =0 |
virtual void | ensure_owns_direct_data ()=0 |
Geometry Component | |
GeometryComponent (GeometryComponentType type) | |
int | attribute_domain_size (eAttrDomain domain) const |
virtual std::optional< blender::bke::AttributeAccessor > | attributes () const |
virtual std::optional< blender::bke::MutableAttributeAccessor > | attributes_for_write () |
void | user_add () const |
void | user_remove () const |
bool | is_mutable () const |
GeometryComponentType | type () const |
virtual bool | is_empty () const |
static GeometryComponent * | create (GeometryComponentType component_type) |
This is the base class for specialized geometry component types. A geometry component handles a user count to allow avoiding duplication when it is wrapped with #UserCounter. It also handles the attribute API, which generalizes storing and modifying generic information on a geometry.
Definition at line 56 of file BKE_geometry_set.hh.
GeometryComponent::GeometryComponent | ( | GeometryComponentType | type | ) |
Definition at line 39 of file geometry_set.cc.
|
virtualdefault |
int GeometryComponent::attribute_domain_size | ( | eAttrDomain | domain | ) | const |
Definition at line 63 of file geometry_set.cc.
References attributes(), and is_empty().
Referenced by blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), blender::nodes::node_geo_delete_geometry_cc::delete_curves_selection(), blender::nodes::node_geo_duplicate_elements_cc::duplicate_points_pointcloud(), 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::nodes::node_geo_edge_paths_to_selection_cc::PathToEdgeSelectionFieldInput::get_varray_for_context(), blender::nodes::node_geo_input_mesh_island_cc::IslandCountFieldInput::get_varray_for_context(), blender::nodes::node_geo_merge_by_distance_cc::mesh_merge_by_distance_all(), blender::nodes::node_geo_merge_by_distance_cc::mesh_merge_by_distance_connected(), blender::nodes::node_geo_edge_split_cc::node_geo_exec(), blender::nodes::node_geo_subdivision_surface_cc::node_geo_exec(), blender::nodes::node_geo_merge_by_distance_cc::pointcloud_merge_by_distance(), blender::nodes::node_geo_delete_geometry_cc::separate_mesh_selection(), and blender::nodes::node_geo_delete_geometry_cc::separate_point_cloud_selection().
|
virtual |
Get access to the attributes in this geometry component. May return none if the geometry does not support the attribute system.
Reimplemented in InstancesComponent, CurveComponent, CurveComponentLegacy, PointCloudComponent, and MeshComponent.
Definition at line 75 of file geometry_set.cc.
Referenced by blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), attribute_domain_size(), blender::ed::spreadsheet::GeometryDataSource::foreach_default_column_ids(), blender::ed::spreadsheet::GeometryDataSource::get_column_values(), blender::nodes::node_geo_remove_attribute_cc::node_geo_exec(), and blender::ed::spreadsheet::GeometryDataSource::tot_rows().
|
virtual |
Reimplemented in InstancesComponent, CurveComponent, CurveComponentLegacy, PointCloudComponent, and MeshComponent.
Definition at line 79 of file geometry_set.cc.
Referenced by blender::nodes::node_geo_distribute_points_on_faces_cc::propagate_existing_attributes().
|
pure virtual |
Implemented in VolumeComponent, InstancesComponent, CurveComponent, CurveComponentLegacy, PointCloudComponent, MeshComponent, and GeometryComponentEditData.
|
static |
Definition at line 43 of file geometry_set.cc.
References BLI_assert_unreachable, GEO_COMPONENT_TYPE_CURVE, GEO_COMPONENT_TYPE_EDIT, GEO_COMPONENT_TYPE_INSTANCES, GEO_COMPONENT_TYPE_MESH, GEO_COMPONENT_TYPE_POINT_CLOUD, and GEO_COMPONENT_TYPE_VOLUME.
Referenced by GeometrySet::gather_attributes_for_propagation(), and GeometrySet::get_component_for_write().
|
pure virtual |
Implemented in VolumeComponent, InstancesComponent, CurveComponent, CurveComponentLegacy, PointCloudComponent, MeshComponent, and GeometryComponentEditData.
Referenced by GeometrySet::ensure_owns_direct_data().
|
virtual |
Reimplemented in InstancesComponent, CurveComponent, CurveComponentLegacy, PointCloudComponent, and MeshComponent.
Definition at line 109 of file geometry_set.cc.
Referenced by attribute_domain_size().
bool GeometryComponent::is_mutable | ( | ) | const |
Definition at line 97 of file geometry_set.cc.
Referenced by MeshComponent::clear(), PointCloudComponent::clear(), CurveComponentLegacy::clear(), CurveComponent::clear(), VolumeComponent::clear(), MeshComponent::ensure_owns_direct_data(), PointCloudComponent::ensure_owns_direct_data(), CurveComponentLegacy::ensure_owns_direct_data(), CurveComponent::ensure_owns_direct_data(), InstancesComponent::ensure_owns_direct_data(), VolumeComponent::ensure_owns_direct_data(), MeshComponent::get_for_write(), PointCloudComponent::get_for_write(), CurveComponentLegacy::get_for_write(), CurveComponent::get_for_write(), VolumeComponent::get_for_write(), MeshComponent::release(), PointCloudComponent::release(), CurveComponentLegacy::release(), CurveComponent::release(), VolumeComponent::release(), CurveComponentLegacy::replace(), CurveComponent::replace(), MeshComponent::replace(), PointCloudComponent::replace(), and VolumeComponent::replace().
|
pure virtual |
Implemented in VolumeComponent, InstancesComponent, CurveComponent, CurveComponentLegacy, PointCloudComponent, MeshComponent, and GeometryComponentEditData.
GeometryComponentType GeometryComponent::type | ( | ) | const |
Definition at line 104 of file geometry_set.cc.
Referenced by blender::ed::spreadsheet::GeometryDataSource::apply_selection_filter(), blender::ed::spreadsheet::GeometryDataSource::foreach_default_column_ids(), InstancesComponent::geometry_set_from_reference(), blender::ed::spreadsheet::GeometryDataSource::get_column_values(), and blender::ed::spreadsheet::GeometryDataSource::has_selection_filter().
void GeometryComponent::user_add | ( | ) | const |
Definition at line 84 of file geometry_set.cc.
Referenced by blender::geometry::gather_realize_tasks_recursive().
void GeometryComponent::user_remove | ( | ) | const |
Definition at line 89 of file geometry_set.cc.