Blender  V3.3
Public Member Functions | Public Attributes | List of all members
blender::ed::sculpt_paint::SlideOperationExecutor Struct Reference

Public Member Functions

 SlideOperationExecutor (const bContext &C)
 
void execute (SlideOperation &self, const bContext &C, const StrokeExtension &stroke_extension)
 
void find_curves_to_slide_with_symmetry ()
 
void find_curves_to_slide (const float3 &brush_pos_cu, const float brush_radius_cu, const ReverseUVSampler &reverse_uv_sampler_orig, Vector< SlideCurveInfo > &r_curves_to_slide)
 
void slide_with_symmetry ()
 
void slide (const Span< SlideCurveInfo > slide_curves, const ReverseUVSampler &reverse_uv_sampler_orig, const float4x4 &brush_transform)
 
bool find_closest_ray_hit (const float3 &ray_start_su, const float3 &ray_direction_su, const float3 &point_su, int &r_looptri_index, float3 &r_hit_pos)
 
float4x4 get_slide_transform (const float3 &old_root_pos, const float3 &new_root_pos, const float3 &old_normal, const float3 &new_normal)
 

Public Attributes

SlideOperationself_ = nullptr
 
CurvesSculptCommonContext ctx_
 
const CurvesSculptcurves_sculpt_ = nullptr
 
const Brushbrush_ = nullptr
 
float brush_radius_base_re_
 
float brush_radius_factor_
 
float brush_strength_
 
Objectcurves_ob_orig_ = nullptr
 
Curvescurves_id_orig_ = nullptr
 
CurvesGeometrycurves_orig_ = nullptr
 
Objectsurface_ob_orig_ = nullptr
 
Meshsurface_orig_ = nullptr
 
Span< MLoopTrisurface_looptris_orig_
 
VArraySpan< float2surface_uv_map_orig_
 
Span< float3corner_normals_orig_su_
 
Objectsurface_ob_eval_ = nullptr
 
Meshsurface_eval_ = nullptr
 
Span< MLoopTrisurface_looptris_eval_
 
VArraySpan< float2surface_uv_map_eval_
 
BVHTreeFromMesh surface_bvh_eval_
 
VArray< floatcurve_factors_
 
Vector< int64_tselected_curve_indices_
 
IndexMask curve_selection_
 
float2 brush_pos_re_
 
CurvesSurfaceTransforms transforms_
 
std::atomic< boolfound_invalid_uv_mapping_ {false}
 

Detailed Description

Utility class that actually executes the update when the stroke is updated. That's useful because it avoids passing a very large number of parameters between functions.

Definition at line 93 of file curves_sculpt_slide.cc.

Constructor & Destructor Documentation

◆ SlideOperationExecutor()

blender::ed::sculpt_paint::SlideOperationExecutor::SlideOperationExecutor ( const bContext C)
inline

Definition at line 129 of file curves_sculpt_slide.cc.

References C.

Member Function Documentation

◆ execute()

void blender::ed::sculpt_paint::SlideOperationExecutor::execute ( SlideOperation self,
const bContext C,
const StrokeExtension stroke_extension 
)
inline

Definition at line 133 of file curves_sculpt_slide.cc.

References ATTR_DOMAIN_CORNER, BKE_brush_size_get(), BKE_bvhtree_from_mesh_get(), BKE_mesh_calc_normals_split(), BKE_mesh_runtime_looptri_ensure(), BKE_mesh_runtime_looptri_len(), BKE_object_get_evaluated_mesh(), BKE_paint_brush_for_read(), BKE_report(), BLI_SCOPED_DEFER, brush_, brush_pos_re_, brush_radius_base_re_, blender::ed::sculpt_paint::brush_radius_factor(), brush_radius_factor_, brush_strength_, blender::ed::sculpt_paint::brush_strength_get(), BVHTREE_FROM_LOOPTRI, C, CD_NORMAL, corner_normals_orig_su_, ctx_, CTX_data_active_object(), curve_factors_, curve_selection_, curves_id_orig_, blender::bke::CurvesGeometry::curves_num(), curves_ob_orig_, curves_orig_, ToolSettings::curves_sculpt, curves_sculpt_, CustomData_get_layer(), CustomData_has_layer(), Object::data, DEG_get_evaluated_object(), DEG_id_tag_update(), blender::ed::sculpt_paint::CurvesSculptCommonContext::depsgraph, ED_region_tag_redraw(), find_curves_to_slide_with_symmetry(), found_invalid_uv_mapping_, free_bvhtree_from_mesh(), Curves::geometry, blender::ed::sculpt_paint::get_curves_selection(), blender::bke::crazyspace::get_evaluated_curves_deformation(), Curves::id, ID_RECALC_GEOMETRY, blender::ed::sculpt_paint::StrokeExtension::is_first, Mesh::ldata, blender::bke::AttributeAccessor::lookup(), blender::bke::mesh_attributes(), blender::ed::sculpt_paint::StrokeExtension::mouse_position, NC_GEOM, ND_DATA, OB_MESH, CurvesSculpt::paint, blender::bke::crazyspace::GeometryDeformation::positions, blender::bke::CurvesGeometry::positions(), blender::ed::sculpt_paint::CurvesSculptCommonContext::region, blender::ed::sculpt_paint::report_empty_evaluated_surface(), blender::ed::sculpt_paint::report_empty_original_surface(), blender::ed::sculpt_paint::report_missing_surface(), blender::ed::sculpt_paint::report_missing_uv_map_on_evaluated_surface(), blender::ed::sculpt_paint::report_missing_uv_map_on_original_surface(), blender::ed::sculpt_paint::StrokeExtension::reports, blender::ed::sculpt_paint::retrieve_selected_curves(), RPT_WARNING, blender::ed::sculpt_paint::CurvesSculptCommonContext::scene, selected_curve_indices_, self_, slide_with_symmetry(), Curves::surface, surface_bvh_eval_, surface_eval_, surface_looptris_eval_, surface_looptris_orig_, surface_ob_eval_, surface_ob_orig_, surface_orig_, blender::bke::CurvesGeometry::surface_uv_coords(), Curves::surface_uv_map, surface_uv_map_eval_, surface_uv_map_orig_, blender::bke::CurvesGeometry::tag_positions_changed(), TIP_, Scene::toolsettings, Mesh::totloop, Mesh::totpoly, transforms_, Object::type, UNUSED_VARS, WM_main_add_notifier(), and blender::bke::CurvesGeometry::wrap().

◆ find_closest_ray_hit()

bool blender::ed::sculpt_paint::SlideOperationExecutor::find_closest_ray_hit ( const float3 ray_start_su,
const float3 ray_direction_su,
const float3 point_su,
int &  r_looptri_index,
float3 r_hit_pos 
)
inline

◆ find_curves_to_slide()

void blender::ed::sculpt_paint::SlideOperationExecutor::find_curves_to_slide ( const float3 brush_pos_cu,
const float  brush_radius_cu,
const ReverseUVSampler reverse_uv_sampler_orig,
Vector< SlideCurveInfo > &  r_curves_to_slide 
)
inline

◆ find_curves_to_slide_with_symmetry()

void blender::ed::sculpt_paint::SlideOperationExecutor::find_curves_to_slide_with_symmetry ( )
inline

◆ get_slide_transform()

float4x4 blender::ed::sculpt_paint::SlideOperationExecutor::get_slide_transform ( const float3 old_root_pos,
const float3 new_root_pos,
const float3 old_normal,
const float3 new_normal 
)
inline

◆ slide()

void blender::ed::sculpt_paint::SlideOperationExecutor::slide ( const Span< SlideCurveInfo slide_curves,
const ReverseUVSampler reverse_uv_sampler_orig,
const float4x4 brush_transform 
)
inline

◆ slide_with_symmetry()

void blender::ed::sculpt_paint::SlideOperationExecutor::slide_with_symmetry ( )
inline

Member Data Documentation

◆ brush_

const Brush* blender::ed::sculpt_paint::SlideOperationExecutor::brush_ = nullptr

Definition at line 98 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide().

◆ brush_pos_re_

float2 blender::ed::sculpt_paint::SlideOperationExecutor::brush_pos_re_

Definition at line 123 of file curves_sculpt_slide.cc.

Referenced by execute(), find_curves_to_slide_with_symmetry(), and slide().

◆ brush_radius_base_re_

float blender::ed::sculpt_paint::SlideOperationExecutor::brush_radius_base_re_

Definition at line 99 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide_with_symmetry().

◆ brush_radius_factor_

float blender::ed::sculpt_paint::SlideOperationExecutor::brush_radius_factor_

Definition at line 100 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide_with_symmetry().

◆ brush_strength_

float blender::ed::sculpt_paint::SlideOperationExecutor::brush_strength_

Definition at line 101 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ corner_normals_orig_su_

Span<float3> blender::ed::sculpt_paint::SlideOperationExecutor::corner_normals_orig_su_

Definition at line 111 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide().

◆ ctx_

CurvesSculptCommonContext blender::ed::sculpt_paint::SlideOperationExecutor::ctx_

Definition at line 95 of file curves_sculpt_slide.cc.

Referenced by execute(), find_curves_to_slide_with_symmetry(), and slide().

◆ curve_factors_

VArray<float> blender::ed::sculpt_paint::SlideOperationExecutor::curve_factors_

Definition at line 119 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ curve_selection_

IndexMask blender::ed::sculpt_paint::SlideOperationExecutor::curve_selection_

Definition at line 121 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide().

◆ curves_id_orig_

Curves* blender::ed::sculpt_paint::SlideOperationExecutor::curves_id_orig_ = nullptr

Definition at line 104 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide_with_symmetry().

◆ curves_ob_orig_

Object* blender::ed::sculpt_paint::SlideOperationExecutor::curves_ob_orig_ = nullptr

Definition at line 103 of file curves_sculpt_slide.cc.

Referenced by execute(), and slide().

◆ curves_orig_

CurvesGeometry* blender::ed::sculpt_paint::SlideOperationExecutor::curves_orig_ = nullptr

Definition at line 105 of file curves_sculpt_slide.cc.

Referenced by execute(), find_curves_to_slide(), and slide().

◆ curves_sculpt_

const CurvesSculpt* blender::ed::sculpt_paint::SlideOperationExecutor::curves_sculpt_ = nullptr

Definition at line 97 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ found_invalid_uv_mapping_

std::atomic<bool> blender::ed::sculpt_paint::SlideOperationExecutor::found_invalid_uv_mapping_ {false}

Definition at line 127 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide().

◆ selected_curve_indices_

Vector<int64_t> blender::ed::sculpt_paint::SlideOperationExecutor::selected_curve_indices_

Definition at line 120 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ self_

SlideOperation* blender::ed::sculpt_paint::SlideOperationExecutor::self_ = nullptr

◆ surface_bvh_eval_

BVHTreeFromMesh blender::ed::sculpt_paint::SlideOperationExecutor::surface_bvh_eval_

Definition at line 117 of file curves_sculpt_slide.cc.

Referenced by execute(), and find_curves_to_slide_with_symmetry().

◆ surface_eval_

Mesh* blender::ed::sculpt_paint::SlideOperationExecutor::surface_eval_ = nullptr

Definition at line 114 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ surface_looptris_eval_

Span<MLoopTri> blender::ed::sculpt_paint::SlideOperationExecutor::surface_looptris_eval_

Definition at line 115 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ surface_looptris_orig_

Span<MLoopTri> blender::ed::sculpt_paint::SlideOperationExecutor::surface_looptris_orig_

◆ surface_ob_eval_

Object* blender::ed::sculpt_paint::SlideOperationExecutor::surface_ob_eval_ = nullptr

Definition at line 113 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ surface_ob_orig_

Object* blender::ed::sculpt_paint::SlideOperationExecutor::surface_ob_orig_ = nullptr

Definition at line 107 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ surface_orig_

Mesh* blender::ed::sculpt_paint::SlideOperationExecutor::surface_orig_ = nullptr

Definition at line 108 of file curves_sculpt_slide.cc.

Referenced by execute(), and slide().

◆ surface_uv_map_eval_

VArraySpan<float2> blender::ed::sculpt_paint::SlideOperationExecutor::surface_uv_map_eval_

Definition at line 116 of file curves_sculpt_slide.cc.

Referenced by execute().

◆ surface_uv_map_orig_

VArraySpan<float2> blender::ed::sculpt_paint::SlideOperationExecutor::surface_uv_map_orig_

◆ transforms_

CurvesSurfaceTransforms blender::ed::sculpt_paint::SlideOperationExecutor::transforms_

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