61 return "OBJECT_OT_editmode_toggle";
64 return "SCULPT_OT_sculptmode_toggle";
67 return "PAINT_OT_vertex_paint_toggle";
70 return "PAINT_OT_weight_paint_toggle";
73 return "PAINT_OT_texture_paint_toggle";
76 return "PARTICLE_OT_particle_edit_toggle";
79 return "OBJECT_OT_posemode_toggle";
82 return "GREASE_PENCIL_OT_paintmode_toggle";
85 return "GREASE_PENCIL_OT_sculptmode_toggle";
88 return "GREASE_PENCIL_OT_weightmode_toggle";
91 return "GREASE_PENCIL_OT_vertexmode_toggle";
94 return "CURVES_OT_sculptmode_toggle";
201 if (ob->
mode == mode) {
221 if (ob->
mode != mode) {
276 if (ob->
pose !=
nullptr) {
327 const bool is_mode_set)
333 if (ob_arm !=
nullptr) {
362 for (; md; md = md->
next) {
439 if (mode_transferred) {
454 return mode_transferred;
472 if (ob_src == ob_dst) {
480 "Unable to transfer mode, the source and/or target objects are not editable");
487 "Current mode of source object '%s' is not compatible with target liboverride object '%s'",
495 "Current mode of source object '%s' is not compatible with target object '%s'",
502 C, op, scene, ob_src, ob_dst, mode_src);
503 if (!mode_transferred) {
523 ot->
name =
"Transfer Mode";
524 ot->
idname =
"OBJECT_OT_transfer_mode";
526 "Switches the active object and assigns the same mode to a new one under the mouse cursor, "
527 "leaving the active mode in the current one";
539 "use_flash_on_transfer",
542 "Flash the target object when transferring the mode");
Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
void BKE_view_layer_base_deselect_all(const Scene *scene, ViewLayer *view_layer)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
Base * BKE_view_layer_base_find(ViewLayer *view_layer, Object *ob)
void BKE_view_layer_base_select_and_set_active(ViewLayer *view_layer, Base *selbase)
ModifierData * BKE_modifiers_get_virtual_modifierlist(const Object *ob, VirtualModifierData *data)
General operations, lookup, etc. for blender objects.
bool BKE_object_is_in_editmode(const Object *ob)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
MINLINE void copy_v3_v3(float r[3], const float a[3])
Platform independent time functions.
double BLI_time_now_seconds(void)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_id_tag_update_ex(Main *bmain, ID *id, unsigned int flags)
Object * DEG_get_evaluated_object(const Depsgraph *depsgraph, Object *object)
#define ID_IS_EDITABLE(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
#define OB_MODE_ALL_PAINT
#define OB_MODE_ALL_MODE_DATA
#define OB_MODE_ALL_PAINT_GPENCIL
@ OB_MODE_VERTEX_GREASE_PENCIL
@ OB_MODE_EDIT_GPENCIL_LEGACY
@ OB_MODE_PAINT_GREASE_PENCIL
@ OB_MODE_SCULPT_GREASE_PENCIL
@ OB_MODE_WEIGHT_GREASE_PENCIL
Object is a sort of wrapper for general info.
#define BASE_SELECTED(v3d, base)
#define BASE_VISIBLE(v3d, base)
void ED_outliner_select_sync_from_object_tag(bContext *C)
void ED_object_wpaintmode_exit_ex(Object &ob)
void ED_object_vpaintmode_exit_ex(Object &ob)
void ED_object_texture_paint_mode_exit_ex(Main &bmain, Scene &scene, Object &ob)
bool ED_object_particle_edit_mode_supported(const Object *ob)
void ED_object_particle_edit_mode_exit_ex(Scene *scene, Object *ob)
void ED_undo_group_begin(bContext *C)
void ED_undo_group_end(bContext *C)
bool ED_view3d_autodist_simple(ARegion *region, const int mval[2], float mouse_worldloc[3], int margin, const float *force_depth)
Base * ED_view3d_give_base_under_cursor(bContext *C, const int mval[2])
@ OPTYPE_DEPENDS_ON_CURSOR
const Depsgraph * depsgraph
bool mode_generic_has_data(Depsgraph *depsgraph, const Object *ob)
static void object_overlay_mode_transfer_animation_start(bContext *C, Object *ob_dst)
static bool ed_object_mode_generic_exit_ex(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob, bool only_test)
bool mode_set_ex(bContext *C, eObjectMode mode, bool use_undo, ReportList *reports)
static int object_transfer_mode_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void mode_generic_exit(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
static bool object_transfer_mode_to_base(bContext *C, wmOperator *op, Scene *scene, Object *, Object *ob_dst, const eObjectMode mode_dst)
bool mode_compat_test(const Object *ob, eObjectMode mode)
static void ed_object_posemode_set_for_weight_paint_ex(bContext *C, Main *bmain, Object *ob_arm, const bool is_mode_set)
void posemode_set_for_weight_paint(bContext *C, Main *bmain, Object *ob, bool is_mode_set)
bool mode_compat_set(bContext *C, Object *ob, eObjectMode mode, ReportList *reports)
static const char * object_mode_op_string(eObjectMode mode)
static bool object_transfer_mode_poll(bContext *C)
bool mode_set(bContext *C, eObjectMode mode)
bool editmode_exit_ex(Main *bmain, Scene *scene, Object *obedit, int flag)
static void object_transfer_mode_reposition_view_pivot(ARegion *region, Scene *scene, const int mval[2])
void OBJECT_OT_transfer_mode(wmOperatorType *ot)
void object_sculpt_mode_exit(Main &bmain, Depsgraph &depsgraph, Scene &scene, Object &ob)
bool ED_object_posemode_enter_ex(Main *bmain, Object *ob)
bool ED_object_posemode_exit_ex(Main *bmain, Object *ob)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
struct ModifierData * next
ObjectRuntimeHandle * runtime
struct SculptSession * sculpt
float average_stroke_accum[3]
int average_stroke_counter
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_name_call(bContext *C, const char *opstring, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)