Blender V4.3
blender::ed::sculpt_paint::undo Namespace Reference

Classes

struct  Node
struct  NodeGeometry
struct  SculptAttrRef
struct  SculptUndoStep
struct  StepData

Enumerations

enum class  Type : int8_t {
  None , Position , HideVert , HideFace ,
  Mask , DyntopoBegin , DyntopoEnd , Geometry ,
  FaceSet , Color
}

Functions

static void restore_mask_from_undo_step (Object &object)
static void restore_color_from_undo_step (Object &object)
static void restore_face_set_from_undo_step (Object &object)
void restore_position_from_undo_step (const Depsgraph &depsgraph, Object &object)
static void restore_from_undo_step (const Depsgraph &depsgraph, const Sculpt &sd, Object &object)
static SculptUndoStepget_active_step ()
static StepDataget_step_data ()
static bool use_multires_undo (const StepData &step_data, const SculptSession &ss)
static bool topology_matches (const StepData &step_data, const Object &object)
static bool indices_contain_true (const Span< bool > data, const Span< int > indices)
static bool restore_active_shape_key (bContext &C, Depsgraph &depsgraph, const StepData &step_data, Object &object)
static void update_shapekeys (const Object &ob, KeyBlock *kb, const Span< float3 > new_positions)
static void restore_position_mesh (const Depsgraph &depsgraph, Object &object, const Span< std::unique_ptr< Node > > unodes, MutableSpan< bool > modified_verts)
static void restore_position_grids (MutableSpan< float3 > positions, const CCGKey &key, Node &unode, MutableSpan< bool > modified_grids)
static void restore_vert_visibility_mesh (Object &object, Node &unode, MutableSpan< bool > modified_vertices)
static void restore_vert_visibility_grids (SubdivCCG &subdiv_ccg, Node &unode, MutableSpan< bool > modified_grids)
static void restore_hidden_face (Object &object, Node &unode, MutableSpan< bool > modified_faces)
static void restore_color (Object &object, StepData &step_data, MutableSpan< bool > modified_vertices)
static void restore_mask_mesh (Object &object, Node &unode, MutableSpan< bool > modified_vertices)
static void restore_mask_grids (Object &object, Node &unode, MutableSpan< bool > modified_grids)
static bool restore_face_sets (Object &object, Node &unode, MutableSpan< bool > modified_face_set_faces)
static void bmesh_restore_generic (StepData &step_data, Object &object, SculptSession &ss)
static void bmesh_enable (Object &object, StepData &step_data)
static void bmesh_restore_begin (bContext *C, StepData &step_data, Object &object, SculptSession &ss)
static void bmesh_restore_end (bContext *C, StepData &step_data, Object &object, SculptSession &ss)
static void store_geometry_data (NodeGeometry *geometry, const Object &object)
static void restore_geometry_data (const NodeGeometry *geometry, Mesh *mesh)
static void geometry_free_data (NodeGeometry *geometry)
static void restore_geometry (StepData &step_data, Object &object)
static int bmesh_restore (bContext *C, Depsgraph &depsgraph, StepData &step_data, Object &object, SculptSession &ss)
void restore_from_bmesh_enter_geometry (const StepData &step_data, Mesh &mesh)
BMLogEntryget_bmesh_log_entry ()
static void refine_subdiv (Depsgraph *depsgraph, SculptSession &ss, Object &object, bke::subdiv::Subdiv *subdiv)
static void restore_list (bContext *C, Depsgraph *depsgraph, StepData &step_data)
static void free_step_data (StepData &step_data)
static const Nodeget_node (const bke::pbvh::Node *node, const Type type)
static void store_vert_visibility_grids (const SubdivCCG &subdiv_ccg, const bke::pbvh::GridsNode &node, Node &unode)
static void store_positions_mesh (const Depsgraph &depsgraph, const Object &object, Node &unode)
static void store_positions_grids (const SubdivCCG &subdiv_ccg, Node &unode)
static void store_vert_visibility_mesh (const Mesh &mesh, const bke::pbvh::Node &node, Node &unode)
static void store_face_visibility (const Mesh &mesh, Node &unode)
static void store_mask_mesh (const Mesh &mesh, Node &unode)
static void store_mask_grids (const SubdivCCG &subdiv_ccg, Node &unode)
static void store_color (const Mesh &mesh, const bke::pbvh::MeshNode &node, Node &unode)
static NodeGeometrygeometry_get (StepData &step_data)
static void geometry_push (const Object &object)
static void store_face_sets (const Mesh &mesh, Node &unode)
static void fill_node_data_mesh (const Depsgraph &depsgraph, const Object &object, const bke::pbvh::MeshNode &node, const Type type, Node &unode)
static void fill_node_data_grids (const Object &object, const bke::pbvh::GridsNode &node, const Type type, Node &unode)
static BLI_NOINLINE void bmesh_push (const Object &object, const bke::pbvh::BMeshNode *node, Type type)
static Nodeensure_node (StepData &step_data, const bke::pbvh::Node &node, bool &r_new)
void push_node (const Depsgraph &depsgraph, const Object &object, const bke::pbvh::Node *node, Type type)
void push_nodes (const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, const Type type)
static void save_active_attribute (Object &object, SculptAttrRef *attr)
static void save_common_data (Object &ob, SculptUndoStep *us)
void push_begin_ex (const Scene &, Object &ob, const char *name)
void push_begin (const Scene &scene, Object &ob, const wmOperator *op)
void push_enter_sculpt_mode (const Scene &, Object &ob, const wmOperator *op)
static size_t node_size_in_bytes (const Node &node)
void push_end_ex (Object &ob, const bool use_nested_undo)
void push_end (Object &ob)
Implements ED Undo System
void register_type (UndoType *ut)
void geometry_begin (const Scene &scene, Object &ob, const wmOperator *op)
void geometry_begin_ex (const Scene &scene, Object &ob, const char *name)
void geometry_end (Object &ob)
static void set_active_layer (bContext *C, SculptAttrRef *attr)
static void step_encode_init (bContext *, UndoStep *us_p)
static bool step_encode (bContext *, Main *bmain, UndoStep *us_p)
static void step_decode_undo_impl (bContext *C, Depsgraph *depsgraph, SculptUndoStep *us)
static void step_decode_redo_impl (bContext *C, Depsgraph *depsgraph, SculptUndoStep *us)
static void step_decode_undo (bContext *C, Depsgraph *depsgraph, SculptUndoStep *us, const bool is_final)
static void step_decode_redo (bContext *C, Depsgraph *depsgraph, SculptUndoStep *us)
static void step_decode (bContext *C, Main *bmain, UndoStep *us_p, const eUndoStepDir dir, bool is_final)
static void step_free (UndoStep *us_p)
Undo for changes happening on a base mesh for multires sculpting.

Use this for multires operators which changes base mesh and which are to be possible. Example of such operators is Apply Base.

Usage:

static int operator_exec((bContext *C, wmOperator *op) {

ED_sculpt_undo_push_mixed_begin(C, op->type->name); // Modify base mesh. ED_sculpt_undo_push_mixed_end(C, op->type->name);

return OPERATOR_FINISHED; }

If object is not in sculpt mode or sculpt does not happen on multires then regular ED_undo_push() is used.

void push_multires_mesh_begin (bContext *C, const char *str)
void push_multires_mesh_end (bContext *C, const char *str)
static bool use_multires_mesh (bContext *C)
static void push_all_grids (const Depsgraph &depsgraph, Object *object)

Enumeration Type Documentation

◆ Type

Enumerator
None 
Position 
HideVert 
HideFace 
Mask 
DyntopoBegin 
DyntopoEnd 
Geometry 
FaceSet 
Color 

Definition at line 28 of file sculpt_undo.hh.

Function Documentation

◆ bmesh_enable()

◆ bmesh_push()

◆ bmesh_restore()

int blender::ed::sculpt_paint::undo::bmesh_restore ( bContext * C,
Depsgraph & depsgraph,
StepData & step_data,
Object & object,
SculptSession & ss )
static

◆ bmesh_restore_begin()

void blender::ed::sculpt_paint::undo::bmesh_restore_begin ( bContext * C,
StepData & step_data,
Object & object,
SculptSession & ss )
static

◆ bmesh_restore_end()

void blender::ed::sculpt_paint::undo::bmesh_restore_end ( bContext * C,
StepData & step_data,
Object & object,
SculptSession & ss )
static

◆ bmesh_restore_generic()

◆ ensure_node()

Node * blender::ed::sculpt_paint::undo::ensure_node ( StepData & step_data,
const bke::pbvh::Node & node,
bool & r_new )
static

Add an undo node for the bke::pbvh::Tree node to the step's storage. If the node was newly created and needs to be filled with data, set r_new to true.

Definition at line 1597 of file sculpt_undo.cc.

References ensure_node(), lock, blender::ed::sculpt_paint::undo::StepData::nodes_mutex, and blender::ed::sculpt_paint::undo::StepData::undo_nodes_by_pbvh_node.

Referenced by ensure_node(), push_node(), and push_nodes().

◆ fill_node_data_grids()

◆ fill_node_data_mesh()

◆ free_step_data()

◆ geometry_begin()

void blender::ed::sculpt_paint::undo::geometry_begin ( const Scene & scene,
Object & ob,
const wmOperator * op )

◆ geometry_begin_ex()

void blender::ed::sculpt_paint::undo::geometry_begin_ex ( const Scene & scene,
Object & ob,
const char * name )

Definition at line 2126 of file sculpt_undo.cc.

References geometry_begin_ex(), geometry_push(), and push_begin_ex().

Referenced by geometry_begin_ex().

◆ geometry_end()

◆ geometry_free_data()

void blender::ed::sculpt_paint::undo::geometry_free_data ( NodeGeometry * geometry)
static

◆ geometry_get()

◆ geometry_push()

◆ get_active_step()

SculptUndoStep * blender::ed::sculpt_paint::undo::get_active_step ( )
static

◆ get_bmesh_log_entry()

BMLogEntry * blender::ed::sculpt_paint::undo::get_bmesh_log_entry ( )

◆ get_node()

◆ get_step_data()

StepData * blender::ed::sculpt_paint::undo::get_step_data ( )
static

◆ indices_contain_true()

bool blender::ed::sculpt_paint::undo::indices_contain_true ( const Span< bool > data,
const Span< int > indices )
static

Definition at line 299 of file sculpt_undo.cc.

References data, and indices.

Referenced by restore_list().

◆ node_size_in_bytes()

◆ push_all_grids()

void blender::ed::sculpt_paint::undo::push_all_grids ( const Depsgraph & depsgraph,
Object * object )
static

◆ push_begin()

void blender::ed::sculpt_paint::undo::push_begin ( const Scene & scene,
Object & ob,
const wmOperator * op )

Pushes an undo step using the operator name. This is necessary for redo panels to work; operators that do not support that may use push_begin_ex instead if so desired.

Definition at line 1821 of file sculpt_undo.cc.

References wmOperatorType::name, push_begin(), push_begin_ex(), and wmOperator::type.

Referenced by blender::ed::sculpt_paint::face_set::change_visibility_exec(), blender::ed::sculpt_paint::face_set::create_op_exec(), blender::ed::sculpt_paint::face_set::edit_grow_shrink(), blender::ed::sculpt_paint::face_set::edit_modify_coordinates(), geometry_begin(), blender::ed::sculpt_paint::face_set::gesture_begin(), blender::ed::sculpt_paint::mask::gesture_begin(), blender::ed::sculpt_paint::project::gesture_begin(), blender::ed::sculpt_paint::hide::hide_show_begin(), blender::ed::sculpt_paint::face_set::init_op_exec(), blender::ed::sculpt_paint::mask::mask_by_color_invoke(), blender::ed::sculpt_paint::mask::mask_flood_fill_exec(), blender::ed::sculpt_paint::mask::mask_from_boundary_exec(), blender::ed::sculpt_paint::mask::mask_from_cavity_exec(), push_begin(), blender::ed::sculpt_paint::cloth::sculpt_cloth_filter_invoke(), blender::ed::sculpt_paint::color::sculpt_color_filter_init(), blender::ed::sculpt_paint::dyntopo::sculpt_detail_flood_fill_exec(), blender::ed::sculpt_paint::expand::sculpt_expand_invoke(), blender::ed::sculpt_paint::mask::sculpt_mask_filter_exec(), blender::ed::sculpt_paint::mask::sculpt_mask_init_exec(), blender::ed::sculpt_paint::filter::sculpt_mesh_filter_start(), blender::ed::sculpt_paint::symmetrize_exec(), transform_active_color(), vertex_color_set_exec(), blender::ed::sculpt_paint::hide::visibility_filter_exec(), and blender::ed::sculpt_paint::hide::visibility_invert_exec().

◆ push_begin_ex()

void blender::ed::sculpt_paint::undo::push_begin_ex ( const Scene & scene,
Object & ob,
const char * name )

NOTE: push_begin is preferred since name must match operator name for redo panels to work.

Definition at line 1764 of file sculpt_undo.cc.

References blender::ed::sculpt_paint::undo::SculptUndoStep::active_color_end, blender::ed::sculpt_paint::undo::SculptUndoStep::active_color_start, blender::ed::sculpt_paint::undo::StepData::active_shape_key_name, BKE_keyblock_from_object(), BKE_undosys_step_push_init_with_type(), BKE_UNDOSYS_TYPE_SCULPT, blender::bke::pbvh::BMesh, C, blender::ed::sculpt_paint::undo::SculptUndoStep::data, Object::data, ED_undo_stack_get(), ED_undosys_stack_memfile_id_changed_tag(), blender::ed::sculpt_paint::undo::StepData::grid_size, SubdivCCG::grid_size, blender::bke::pbvh::Grids, SubdivCCG::grids_num, Object::id, blender::bke::pbvh::Mesh, blender::ed::sculpt_paint::undo::StepData::mesh_corners_num, blender::ed::sculpt_paint::undo::StepData::mesh_grids_num, blender::ed::sculpt_paint::undo::StepData::mesh_verts_num, ID::name, blender::ed::sculpt_paint::undo::StepData::object_name, blender::bke::object::pbvh_get(), blender::ed::sculpt_paint::undo::StepData::pivot_pos, SculptSession::pivot_pos, blender::ed::sculpt_paint::undo::StepData::pivot_rot, SculptSession::pivot_rot, push_begin_ex(), save_active_attribute(), Object::sculpt, SculptSession::subdiv_ccg, blender::bke::pbvh::Tree::type(), and blender::ed::sculpt_paint::undo::SculptAttrRef::was_set.

Referenced by blender::ed::sculpt_paint::dyntopo::disable_with_undo(), blender::ed::sculpt_paint::dyntopo::enable_with_undo(), geometry_begin_ex(), blender::ed::sculpt_paint::hide::hide_show_all_exec(), blender::ed::sculpt_paint::hide::hide_show_masked_exec(), blender::ed::sculpt_paint::init_transform(), blender::ed::sculpt_paint::object_sculpt_mode_enter(), push_begin(), push_begin_ex(), push_multires_mesh_begin(), stroke_undo_begin(), and vpaint_invoke().

◆ push_end()

void blender::ed::sculpt_paint::undo::push_end ( Object & ob)

Definition at line 1909 of file sculpt_undo.cc.

References push_end(), and push_end_ex().

Referenced by blender::ed::sculpt_paint::face_set::change_visibility_exec(), blender::ed::sculpt_paint::face_set::create_op_exec(), blender::ed::sculpt_paint::dyntopo::disable_with_undo(), blender::ed::sculpt_paint::face_set::edit_grow_shrink(), blender::ed::sculpt_paint::face_set::edit_modify_coordinates(), blender::ed::sculpt_paint::dyntopo::enable_with_undo(), blender::ed::sculpt_paint::end_transform(), blender::ed::sculpt_paint::expand::finish(), geometry_end(), blender::ed::sculpt_paint::face_set::gesture_end(), blender::ed::sculpt_paint::mask::gesture_end(), blender::ed::sculpt_paint::project::gesture_end(), blender::ed::sculpt_paint::hide::hide_show_all_exec(), blender::ed::sculpt_paint::hide::hide_show_end(), blender::ed::sculpt_paint::hide::hide_show_masked_exec(), blender::ed::sculpt_paint::face_set::init_op_exec(), blender::ed::sculpt_paint::mask::mask_by_color_invoke(), blender::ed::sculpt_paint::mask::mask_flood_fill_exec(), blender::ed::sculpt_paint::mask::mask_from_boundary_exec(), blender::ed::sculpt_paint::mask::mask_from_cavity_exec(), blender::ed::sculpt_paint::object_sculpt_mode_enter(), push_end(), push_multires_mesh_end(), blender::ed::sculpt_paint::cloth::sculpt_cloth_filter_modal(), blender::ed::sculpt_paint::color::sculpt_color_filter_end(), blender::ed::sculpt_paint::dyntopo::sculpt_detail_flood_fill_exec(), blender::ed::sculpt_paint::expand::sculpt_expand_cancel(), blender::ed::sculpt_paint::mask::sculpt_mask_filter_exec(), blender::ed::sculpt_paint::mask::sculpt_mask_init_exec(), blender::ed::sculpt_paint::filter::sculpt_mesh_filter_exec(), blender::ed::sculpt_paint::sculpt_mode_toggle_exec(), stroke_undo_end(), blender::ed::sculpt_paint::symmetrize_exec(), transform_active_color(), vertex_color_set_exec(), blender::ed::sculpt_paint::hide::visibility_filter_exec(), blender::ed::sculpt_paint::hide::visibility_invert_exec(), and vpaint_stroke_done().

◆ push_end_ex()

◆ push_enter_sculpt_mode()

void blender::ed::sculpt_paint::undo::push_enter_sculpt_mode ( const Scene & scene,
Object & ob,
const wmOperator * op )

◆ push_multires_mesh_begin()

void blender::ed::sculpt_paint::undo::push_multires_mesh_begin ( bContext * C,
const char * str )

Undo for changes happening on a base mesh for multires sculpting. if there is no multi-res sculpt active regular undo is used.

Definition at line 2208 of file sculpt_undo.cc.

References C, CTX_data_active_object(), CTX_data_depsgraph_pointer(), CTX_data_scene(), depsgraph, geometry_push(), get_step_data(), push_all_grids(), push_begin_ex(), push_multires_mesh_begin(), str, and use_multires_mesh().

Referenced by blender::ed::object::multires_base_apply_exec(), and push_multires_mesh_begin().

◆ push_multires_mesh_end()

void blender::ed::sculpt_paint::undo::push_multires_mesh_end ( bContext * C,
const char * str )

◆ push_node()

void blender::ed::sculpt_paint::undo::push_node ( const Depsgraph & depsgraph,
const Object & object,
const bke::pbvh::Node * node,
undo::Type type )

Store undo data of the given type for a pbvh::Tree node. This function can be called by multiple threads concurrently, as long as they don't pass the same pbvh::Tree node.

This is only possible when building an undo step, in between push_begin and push_end.

Definition at line 1609 of file sculpt_undo.cc.

References BLI_assert, BLI_assert_unreachable, SculptSession::bm, blender::bke::pbvh::BMesh, bmesh_push(), depsgraph, DyntopoBegin, DyntopoEnd, ELEM, ensure_node(), fill_node_data_grids(), fill_node_data_mesh(), get_step_data(), blender::bke::pbvh::Grids, blender::bke::pbvh::Mesh, SculptSession::needs_flush_to_id, None, blender::bke::object::pbvh_get(), push_node(), blender::bke::pbvh::Tree::type(), and blender::ed::sculpt_paint::undo::StepData::type.

Referenced by blender::ed::sculpt_paint::mask::apply_new_mask_bmesh(), blender::ed::sculpt_paint::mask::apply_new_mask_grids(), blender::ed::sculpt_paint::mask::apply_new_mask_mesh(), blender::ed::sculpt_paint::face_set::clear_face_sets(), blender::ed::sculpt_paint::mask::decrease_contrast_mask_bmesh(), blender::ed::sculpt_paint::mask::decrease_contrast_mask_grids(), blender::ed::sculpt_paint::mask::decrease_contrast_mask_mesh(), blender::ed::sculpt_paint::dyntopo::disable_with_undo(), blender::ed::sculpt_paint::dyntopo::enable_with_undo(), blender::ed::sculpt_paint::face_set::face_hide_update(), blender::ed::sculpt_paint::face_set::face_sets_update(), blender::ed::sculpt_paint::mask::fill_mask_grids(), blender::ed::sculpt_paint::mask::fill_mask_mesh(), blender::ed::sculpt_paint::face_set::gesture_apply_bmesh(), blender::ed::sculpt_paint::mask::gesture_apply_for_symmetry_pass(), blender::ed::sculpt_paint::face_set::gesture_apply_mesh(), blender::ed::sculpt_paint::hide::grid_hide_update(), blender::ed::sculpt_paint::mask::increase_contrast_mask_bmesh(), blender::ed::sculpt_paint::mask::increase_contrast_mask_grids(), blender::ed::sculpt_paint::mask::increase_contrast_mask_mesh(), blender::ed::sculpt_paint::object_sculpt_mode_enter(), blender::ed::sculpt_paint::hide::partialvis_update_bmesh_nodes(), push_node(), blender::ed::sculpt_paint::dyntopo::sculpt_detail_flood_fill_exec(), blender::ed::sculpt_paint::symmetrize_exec(), blender::ed::sculpt_paint::mask::update_mask_mesh(), blender::ed::sculpt_paint::hide::update_undo_state(), and blender::ed::sculpt_paint::hide::vert_hide_update().

◆ push_nodes()

void blender::ed::sculpt_paint::undo::push_nodes ( const Depsgraph & depsgraph,
Object & object,
const IndexMask & node_mask,
const Type type )

Definition at line 1648 of file sculpt_undo.cc.

References BLI_assert, SculptSession::bm, bmesh_push(), depsgraph, DyntopoBegin, DyntopoEnd, ELEM, ensure_node(), blender::index_mask::IndexMask::foreach_index(), get_step_data(), blender::bke::pbvh::Grids, blender::bke::pbvh::Mesh, SculptSession::needs_flush_to_id, blender::bke::pbvh::Tree::nodes(), None, blender::threading::parallel_for(), blender::bke::object::pbvh_get(), push_nodes(), blender::bke::pbvh::Tree::type(), and blender::ed::sculpt_paint::undo::StepData::type.

Referenced by blender::ed::sculpt_paint::filter::cache_init(), blender::ed::sculpt_paint::dynamic_topology_update(), blender::ed::sculpt_paint::face_set::edit_modify_coordinates(), blender::ed::sculpt_paint::mask::fill_mask_bmesh(), blender::ed::sculpt_paint::project::gesture_apply_for_symmetry_pass(), blender::ed::sculpt_paint::hide::grids_show_all(), blender::ed::sculpt_paint::hide::grow_shrink_visibility_grid(), blender::ed::sculpt_paint::mask::init_mask_grids(), blender::ed::sculpt_paint::face_set::init_op_exec(), blender::ed::sculpt_paint::mask::invert_mask_bmesh(), blender::ed::sculpt_paint::mask::invert_mask_grids(), blender::ed::sculpt_paint::hide::invert_visibility_bmesh(), blender::ed::sculpt_paint::hide::invert_visibility_grids(), blender::ed::sculpt_paint::hide::invert_visibility_mesh(), blender::ed::sculpt_paint::mask::mask_from_boundary_exec(), blender::ed::sculpt_paint::mask::mask_from_cavity_exec(), blender::ed::sculpt_paint::hide::mesh_show_all(), push_all_grids(), push_nodes(), blender::ed::sculpt_paint::push_undo_nodes(), transform_active_color(), blender::ed::sculpt_paint::expand::undo_push(), vertex_color_set_exec(), vpaint_paint_leaves(), and blender::ed::sculpt_paint::mask::write_mask_mesh().

◆ refine_subdiv()

void blender::ed::sculpt_paint::undo::refine_subdiv ( Depsgraph * depsgraph,
SculptSession & ss,
Object & object,
bke::subdiv::Subdiv * subdiv )
static

◆ register_type()

◆ restore_active_shape_key()

bool blender::ed::sculpt_paint::undo::restore_active_shape_key ( bContext & C,
Depsgraph & depsgraph,
const StepData & step_data,
Object & object )
static

◆ restore_color()

◆ restore_color_from_undo_step()

◆ restore_face_set_from_undo_step()

◆ restore_face_sets()

◆ restore_from_bmesh_enter_geometry()

void blender::ed::sculpt_paint::undo::restore_from_bmesh_enter_geometry ( const StepData & step_data,
Mesh & mesh )

◆ restore_from_undo_step()

◆ restore_geometry()

◆ restore_geometry_data()

void blender::ed::sculpt_paint::undo::restore_geometry_data ( const NodeGeometry * geometry,
Mesh * mesh )
static

◆ restore_hidden_face()

◆ restore_list()

void blender::ed::sculpt_paint::undo::restore_list ( bContext * C,
Depsgraph * depsgraph,
StepData & step_data )
static

Definition at line 866 of file sculpt_undo.cc.

References blender::bke::pbvh::all_leaf_nodes(), BKE_pbvh_sync_visibility_from_verts(), BKE_sculpt_multires_active(), BKE_sculpt_update_object_for_edit(), BKE_sculptsession_free_deformMats(), BKE_sculptsession_use_pbvh_draw(), BKE_subdiv_ccg_key_top_level(), BKE_view_layer_active_object_get(), BKE_view_layer_synced_ensure(), BLI_assert, BLI_assert_unreachable, SculptSession::bm, bmesh_restore(), C, CLOG_WARN, Color, CTX_data_scene(), CTX_data_view_layer(), CTX_wm_region_view3d(), data, SculptSession::deform_modifiers_active, DEG_id_tag_update(), depsgraph, DyntopoBegin, DyntopoEnd, faces, FaceSet, IndexMask::from_predicate(), Geometry, blender::bke::pbvh::Grids, SubdivCCG::grids_num, HideFace, HideVert, ID_REAL_USERS, ID_RECALC_GEOMETRY, ID_RECALC_SHADING, indices_contain_true(), LOG, Mask, blender::bke::pbvh::Mesh, MULTIRES_COORDS_MODIFIED, MULTIRES_HIDDEN_MODIFIED, multires_mark_as_modified(), blender::bke::pbvh::node_face_indices_calc_grids(), blender::bke::pbvh::Tree::nodes(), blender::ed::sculpt_paint::undo::StepData::nodes, None, blender::ed::sculpt_paint::undo::StepData::object_name, blender::bke::object::pbvh_get(), blender::ed::sculpt_paint::undo::StepData::pivot_pos, SculptSession::pivot_pos, blender::ed::sculpt_paint::undo::StepData::pivot_rot, SculptSession::pivot_rot, Position, refine_subdiv(), restore_active_shape_key(), restore_color(), restore_face_sets(), restore_geometry(), restore_hidden_face(), restore_list(), restore_mask_grids(), restore_mask_mesh(), restore_position_grids(), restore_position_mesh(), restore_vert_visibility_grids(), restore_vert_visibility_mesh(), SculptSession::shapekey_active, blender::bke::pbvh::store_bounds_orig(), SculptSession::subdiv_ccg, blender::ed::sculpt_paint::hide::sync_all_from_faces(), blender::bke::pbvh::Tree::tag_attribute_changed(), blender::bke::pbvh::Tree::tag_face_sets_changed(), blender::bke::pbvh::Tree::tag_masks_changed(), blender::bke::pbvh::Tree::tag_positions_changed(), blender::bke::pbvh::Tree::tag_visibility_changed(), topology_matches(), blender::bke::pbvh::Tree::type(), blender::ed::sculpt_paint::undo::StepData::type, blender::bke::pbvh::update_bounds(), blender::bke::pbvh::update_mask_grids(), blender::bke::pbvh::update_mask_mesh(), blender::bke::pbvh::update_visibility(), and use_multires_undo().

Referenced by restore_list(), step_decode_redo_impl(), and step_decode_undo_impl().

◆ restore_mask_from_undo_step()

◆ restore_mask_grids()

◆ restore_mask_mesh()

◆ restore_position_from_undo_step()

void blender::ed::sculpt_paint::undo::restore_position_from_undo_step ( const Depsgraph & depsgraph,
Object & object )

Definition at line 1014 of file sculpt.cc.

References blender::bke::pbvh::all_leaf_nodes(), blender::ed::sculpt_paint::apply_crazyspace_to_translations(), blender::ed::sculpt_paint::apply_translations(), BKE_keyblock_from_object(), BKE_pbvh_bmesh_node_unique_verts(), BKE_subdiv_ccg_key_top_level(), SculptSession::bm_log, BM_log_find_original_vert_co(), blender::bke::pbvh::BMesh, copy_v3_v3(), blender::MutableSpan< T >::data(), SculptSession::deform_imats, depsgraph, ELEM, blender::index_mask::IndexMask::foreach_index(), blender::IndexMask::from_predicate(), get_bmesh_log_entry(), CCGKey::grid_area, blender::bke::ccg::grid_range(), blender::bke::pbvh::Grids, blender::bits::BitGroupVector< InlineBufferCapacity, Allocator >::is_empty(), blender::threading::isolate_task(), blender::threading::EnumerableThreadSpecific< T >::local(), blender::bke::pbvh::Mesh, blender::bke::pbvh::Tree::nodes(), blender::ed::sculpt_paint::orig_position_data_lookup_grids(), blender::ed::sculpt_paint::orig_position_data_lookup_mesh(), blender::bke::object::pbvh_get(), blender::ed::sculpt_paint::OrigPositionData::positions, blender::ed::sculpt_paint::scatter_data_mesh(), SculptSession::subdiv_ccg, blender::bke::pbvh::Tree::tag_positions_changed(), blender::ed::sculpt_paint::LocalData::translations, blender::ed::sculpt_paint::translations_from_new_positions(), blender::bke::pbvh::Tree::type(), blender::bke::pbvh::update_normals(), blender::ed::sculpt_paint::update_shape_keys(), blender::bke::pbvh::vert_positions_eval_for_write(), and verts.

Referenced by restore_from_undo_step(), blender::ed::sculpt_paint::filter::sculpt_mesh_filter_cancel(), and blender::ed::sculpt_paint::sculpt_transform_all_vertices().

◆ restore_position_grids()

◆ restore_position_mesh()

void blender::ed::sculpt_paint::undo::restore_position_mesh ( const Depsgraph & depsgraph,
Object & object,
const Span< std::unique_ptr< Node > > unodes,
MutableSpan< bool > modified_verts )
static

◆ restore_vert_visibility_grids()

◆ restore_vert_visibility_mesh()

◆ save_active_attribute()

◆ save_common_data()

◆ set_active_layer()

◆ step_decode()

◆ step_decode_redo()

void blender::ed::sculpt_paint::undo::step_decode_redo ( bContext * C,
Depsgraph * depsgraph,
SculptUndoStep * us )
static

◆ step_decode_redo_impl()

void blender::ed::sculpt_paint::undo::step_decode_redo_impl ( bContext * C,
Depsgraph * depsgraph,
SculptUndoStep * us )
static

◆ step_decode_undo()

void blender::ed::sculpt_paint::undo::step_decode_undo ( bContext * C,
Depsgraph * depsgraph,
SculptUndoStep * us,
const bool is_final )
static

◆ step_decode_undo_impl()

void blender::ed::sculpt_paint::undo::step_decode_undo_impl ( bContext * C,
Depsgraph * depsgraph,
SculptUndoStep * us )
static

◆ step_encode()

◆ step_encode_init()

void blender::ed::sculpt_paint::undo::step_encode_init ( bContext * ,
UndoStep * us_p )
static

◆ step_free()

void blender::ed::sculpt_paint::undo::step_free ( UndoStep * us_p)
static

◆ store_color()

◆ store_face_sets()

◆ store_face_visibility()

◆ store_geometry_data()

void blender::ed::sculpt_paint::undo::store_geometry_data ( NodeGeometry * geometry,
const Object & object )
static

◆ store_mask_grids()

◆ store_mask_mesh()

◆ store_positions_grids()

◆ store_positions_mesh()

◆ store_vert_visibility_grids()

◆ store_vert_visibility_mesh()

void blender::ed::sculpt_paint::undo::store_vert_visibility_mesh ( const Mesh & mesh,
const bke::pbvh::Node & node,
Node & unode )
static

◆ topology_matches()

◆ update_shapekeys()

◆ use_multires_mesh()

bool blender::ed::sculpt_paint::undo::use_multires_mesh ( bContext * C)
static

◆ use_multires_undo()

bool blender::ed::sculpt_paint::undo::use_multires_undo ( const StepData & step_data,
const SculptSession & ss )
static