Blender V5.0
selection.cc File Reference
#include "BLI_array_utils.hh"
#include "BLI_index_mask.hh"
#include "BLI_lasso_2d.hh"
#include "BLI_math_vector.hh"
#include "BLI_rect.h"
#include "BKE_attribute.hh"
#include "ED_pointcloud.hh"
#include "ED_select_utils.hh"
#include "ED_view3d.hh"
#include "DNA_pointcloud_types.h"

Go to the source code of this file.

Namespaces

namespace  blender
namespace  blender::ed
namespace  blender::ed::pointcloud

Functions

static void blender::ed::pointcloud::invert_selection (MutableSpan< float > selection, const IndexMask &mask)
static void blender::ed::pointcloud::invert_selection (GMutableSpan selection, const IndexMask &mask)
static void blender::ed::pointcloud::select_all (PointCloud &pointcloud, const IndexMask &mask, int action)
static bool blender::ed::pointcloud::apply_selection_operation (PointCloud &pointcloud, const IndexMask &mask, eSelectOp sel_op)
static FindClosestData blender::ed::pointcloud::closer_elem (const FindClosestData &a, const FindClosestData &b)
Selection

Selection on point cloud are stored per-point. It can be stored with a float or boolean data-type. The boolean data-type is faster, smaller, and corresponds better to edit-mode selections, but the float data type is useful for soft selection (like masking) in sculpt mode.

The attribute API is used to do the necessary type and domain conversions when necessary, and can handle most interaction with the selection attribute, but these functions implement some helpful utilities on top of that.

bool blender::ed::pointcloud::has_anything_selected (const PointCloud &pointcloud)
bke::GSpanAttributeWriter blender::ed::pointcloud::ensure_selection_attribute (PointCloud &pointcloud, bke::AttrType create_type)
void blender::ed::pointcloud::fill_selection_false (GMutableSpan selection, const IndexMask &mask)
void blender::ed::pointcloud::fill_selection_true (GMutableSpan span)
void blender::ed::pointcloud::fill_selection_true (GMutableSpan selection, const IndexMask &mask)
void blender::ed::pointcloud::select_all (PointCloud &pointcloud, int action)
bool blender::ed::pointcloud::select_box (PointCloud &pointcloud, const ARegion &region, const float4x4 &projection, const rcti &rect, const eSelectOp sel_op)
bool blender::ed::pointcloud::select_lasso (PointCloud &pointcloud, const ARegion &region, const float4x4 &projection, const Span< int2 > lasso_coords, const eSelectOp sel_op)
bool blender::ed::pointcloud::select_circle (PointCloud &pointcloud, const ARegion &region, const float4x4 &projection, const int2 coord, const float radius, const eSelectOp sel_op)
std::optional< FindClosestDatablender::ed::pointcloud::find_closest_point_to_screen_co (const ARegion &region, const Span< float3 > positions, const float4x4 &projection, const IndexMask &points_mask, const float2 mouse_pos, const float radius, const FindClosestData &initial_closest)
IndexMask blender::ed::pointcloud::retrieve_selected_points (const PointCloud &pointcloud, IndexMaskMemory &memory)