Files
test/source/blender/editors/include/ED_sculpt.hh
Hans Goudey 9e920bc95b Refactor: Sculpt: Add scene argument to undo step creation functions
This is necessary for using the 3D cursor instead of the sculpt pivot (#118250).
It's committed separately from #127863 to make that diff smaller.
2024-09-19 11:28:38 -04:00

91 lines
2.6 KiB
C++

/* SPDX-FileCopyrightText: 2008 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup editors
*/
#pragma once
struct Object;
struct ReportList;
struct UndoType;
struct bContext;
struct wmOperator;
struct wmKeyConfig;
namespace blender::ed::sculpt_paint {
void object_sculpt_mode_enter(Main &bmain,
Depsgraph &depsgraph,
Scene &scene,
Object &ob,
bool force_dyntopo,
ReportList *reports);
void object_sculpt_mode_enter(bContext *C, Depsgraph &depsgraph, ReportList *reports);
void object_sculpt_mode_exit(Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob);
void object_sculpt_mode_exit(bContext *C, Depsgraph &depsgraph);
/* `sculpt.cc` */
/**
* Checks if the currently active Sculpt Mode on the object is targeting a locked shape key,
* and produces an error message if so (unless \a reports is null).
* \return true if the shape key was locked.
*/
bool report_if_shape_key_is_locked(const Object &ob, ReportList *reports);
void operatortypes_sculpt();
void keymap_sculpt(wmKeyConfig *keyconf);
/* `sculpt_transform.cc` */
void update_modal_transform(bContext *C, Object &ob);
void init_transform(bContext *C, Object &ob, const float mval_fl[2], const char *undo_name);
void end_transform(bContext *C, Object &ob);
/* `sculpt_undo.cc` */
namespace undo {
void register_type(UndoType *ut);
/**
* Pushes an undo step using the operator name. This is necessary for
* redo panels to work; operators that do not support that may use
* #geometry_begin_ex instead if so desired.
*/
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);
/**
* Undo for changes happening on a base mesh for multires sculpting.
* if there is no multi-res sculpt active regular undo is used.
*/
void push_multires_mesh_begin(bContext *C, const char *str);
void push_multires_mesh_end(bContext *C, const char *str);
} // namespace undo
namespace face_set {
int find_next_available_id(Object &object);
void initialize_none_to_id(Mesh *mesh, int new_id);
int active_update_and_get(bContext *C, Object &ob, const float mval_fl[2]);
} // namespace face_set
/**
* Fills the object's active color attribute layer with the fill color.
*
* \param only_selected: Limit the fill to selected faces or vertices.
*
* \return #true if successful.
*/
bool object_active_color_fill(Object &ob, const float fill_color[4], bool only_selected);
} // namespace blender::ed::sculpt_paint