120struct MoveToCollectionData;
146 bool (*filter_fn)(
const Object *ob,
void *user_data),
147 void *filter_user_data)
154 ID *id_pin =
nullptr;
155 const bool use_objects_in_mode = (ob_active !=
nullptr) &&
164 id_pin = sbuts->
pinid;
171 else if ((space_type ==
SPACE_PROPERTIES) && (use_objects_in_mode ==
false)) {
180 else if (ob_active && (ob_active->
mode &
192 if ((ob !=
nullptr) && !filter_fn(ob, filter_user_data)) {
198 static_cast<const View3D *
>(area->spacedata.first) :
203 if (use_objects_in_mode) {
206 params.no_dup_data =
true;
207 params.filter_fn = filter_fn;
208 params.filter_userdata = filter_user_data;
213 params.no_dup_data =
true;
214 params.filter_fn = filter_fn;
215 params.filter_userdata = filter_user_data;
237 if (base_iter->object == ob) {
257 ob = base_iter->object;
285 bool changed =
false;
290 base->flag &= ~BASE_HIDDEN;
317 ot->
name =
"Show Hidden Objects";
319 ot->
idname =
"OBJECT_OT_hide_view_clear";
336 bool changed =
false;
375 ot->
name =
"Hide Objects";
376 ot->
description =
"Temporarily hide objects from the viewport";
377 ot->
idname =
"OBJECT_OT_hide_view_set";
388 ot->
srna,
"unselected",
false,
"Unselected",
"Hide unselected rather than selected objects");
431#define COLLECTION_INVALID_INDEX -1
453 int icon = ICON_NONE;
455 icon = ICON_LAYER_ACTIVE;
458 icon = ICON_LAYER_USED;
462 lc->collection->id.name + 2,
464 "OBJECT_OT_hide_collection",
499 ot->
name =
"Hide Collection";
500 ot->
description =
"Show only objects in collection (Shift to extend)";
501 ot->
idname =
"OBJECT_OT_hide_collection";
519 "Index of the collection to change visibility",
545 if (ob->data == mesh) {
564 const bool load_data,
569 if (obedit ==
nullptr) {
575 if (mesh->runtime->edit_mesh ==
nullptr) {
582 "Too many vertices for mesh '%s' (%d)",
584 mesh->runtime->edit_mesh->bm->totvert);
594 mesh->runtime->edit_mesh.reset();
604 if (arm->
edbo ==
nullptr) {
615 if (load_data ==
false) {
618 if (obedit->
pose !=
nullptr) {
694 static_cast<ID *
>(obedit->
data));
695 if (needs_flush_ptr) {
696 *needs_flush_ptr =
false;
716 obedit->
mode &= ~OB_MODE_EDIT;
748 obedit->
mode &= ~OB_MODE_EDIT;
771 if (obedit ==
nullptr) {
774 bool changed =
false;
775 const short obedit_type = obedit->
type;
779 Object *ob = base->object;
814 CLOG_WARN(&
LOG,
"Unable to enter edit-mode on library data for object '%s'", ob->
id.
name + 2);
827 EDBM_mesh_make(ob, scene->toolsettings->selectmode, use_key_index);
904 ob->
mode &= ~OB_MODE_EDIT;
932 const bool is_mode_set = (obact->
mode & mode_flag) != 0;
946 if ((ob != obact) && (ob->type == obact->
type)) {
956 if ((obact->
mode & mode_flag) == 0) {
958 if ((ob != obact) && (ob->type == obact->
type)) {
968 if (
G.background ==
false) {
998 ot->
name =
"Toggle Edit Mode";
1000 ot->
idname =
"OBJECT_OT_editmode_toggle";
1025 if (base ==
nullptr) {
1031 bool is_mode_set = (obact->
mode & mode_flag) != 0;
1046 if (obact == obedit) {
1048 is_mode_set =
false;
1056 if ((ob != obact) && (ob->type ==
OB_ARMATURE) && (ob->mode & mode_flag)) {
1080 if (
G.background ==
false) {
1090 ot->
name =
"Toggle Pose Mode";
1091 ot->
idname =
"OBJECT_OT_posemode_toggle";
1092 ot->
description =
"Enable or disable posing/selecting bones";
1136 if (ob->
pd ==
nullptr) {
1161 ot->
name =
"Toggle Force Field";
1163 ot->
idname =
"OBJECT_OT_forcefield_toggle";
1194 ListBase selected_objects = {
nullptr,
nullptr};
1207 ListBase visible_objects = {
nullptr,
nullptr};
1241 ListBase targets = {
nullptr,
nullptr};
1258 bool free_depsgraph =
false;
1265 free_depsgraph =
false;
1269 free_depsgraph =
true;
1290 if (free_depsgraph) {
1300 if (ob ==
nullptr) {
1314 C, op, 270,
IFACE_(
"Calculate Object Motion Paths"),
IFACE_(
"Calculate"));
1352 ot->
name =
"Calculate Object Motion Paths";
1353 ot->
idname =
"OBJECT_OT_paths_calculate";
1354 ot->
description =
"Generate motion paths for the selected objects";
1375 "Computation Range",
1399 if (scene ==
nullptr) {
1424 ot->
name =
"Update Object Paths";
1425 ot->
idname =
"OBJECT_OT_paths_update";
1426 ot->
description =
"Recalculate motion paths for selected objects";
1451 if (scene ==
nullptr) {
1465 ot->
name =
"Update All Object Paths";
1466 ot->
idname =
"OBJECT_OT_paths_update_visible";
1467 ot->
description =
"Recalculate all visible motion paths for objects and poses";
1488 ob->
mpath =
nullptr;
1498 if (only_selected) {
1533 if (only_selected) {
1534 return TIP_(
"Clear motion paths of selected objects");
1536 return TIP_(
"Clear motion paths of all objects");
1542 ot->
name =
"Clear Object Paths";
1543 ot->
idname =
"OBJECT_OT_paths_clear";
1558 "Only clear motion paths of selected objects");
1589 const bool use_flat =
STREQ(op->
idname,
"OBJECT_OT_shade_flat");
1590 const bool use_smooth =
STREQ(op->
idname,
"OBJECT_OT_shade_smooth");
1591 const bool use_smooth_by_angle =
STREQ(op->
idname,
"OBJECT_OT_shade_smooth_by_angle");
1612 bool modifier_removed =
false;
1617 if (
ID *data =
static_cast<ID *
>(ob->
data)) {
1618 object_data.
add(data);
1621 if (use_flat || use_smooth) {
1626 modifier_removed =
true;
1635 bool changed_multi =
false;
1636 bool has_linked_data =
false;
1637 for (
ID *data : object_data) {
1639 has_linked_data =
true;
1643 bool changed =
false;
1644 if (
GS(data->name) ==
ID_ME) {
1648 if (use_smooth_by_angle) {
1661 changed_multi =
true;
1667 if (modifier_removed) {
1672 if (has_linked_data) {
1685 if (obact !=
nullptr) {
1701 ot->
description =
"Render and display faces uniform, using face normals";
1702 ot->
idname =
"OBJECT_OT_shade_flat";
1715 "Don't remove sharp edges, which are redundant with faces shaded smooth");
1721 ot->
name =
"Shade Smooth";
1722 ot->
description =
"Render and display faces smooth, using interpolated vertex normals";
1723 ot->
idname =
"OBJECT_OT_shade_smooth";
1736 "Don't remove sharp edges. Tagged edges will remain sharp");
1741 ot->
name =
"Shade Smooth by Angle";
1743 "Set the sharpness of mesh edges based on the angle between the neighboring faces";
1744 ot->
idname =
"OBJECT_OT_shade_smooth_by_angle";
1755 prop,
"Angle",
"Maximum angle between face normals that will be considered as smooth");
1761 "Only add sharp edges instead of clearing existing tags first");
1781 if (use_auto_smooth) {
1784 asset_weak_ref.relative_asset_identifier =
BLI_strdup(
1785 "geometry_nodes/smooth_by_angle.blend/NodeTree/Smooth by Angle");
1789 if (!asset_representation) {
1794 if (!node_group_id) {
1801 node_group->ensure_topology_cache();
1803 const StringRefNull angle_identifier = node_group->interface_inputs()[1]->identifier;
1805 for (
const PointerRNA &ob_ptr : ctx_objects) {
1807 if (object->type ==
OB_MESH) {
1808 Mesh *mesh =
static_cast<Mesh *
>(
object->data);
1819 if (!smooth_by_angle_nmd) {
1822 if (!smooth_by_angle_nmd) {
1826 smooth_by_angle_nmd->
node_group = node_group;
1835 angle_identifier.
c_str());
1848 for (
const PointerRNA &ob_ptr : ctx_objects) {
1878 ot->
name =
"Shade Auto Smooth";
1880 "Add modifier to automatically set the sharpness of mesh edges based on the angle between "
1881 "the neighboring faces";
1882 ot->
idname =
"OBJECT_OT_shade_auto_smooth";
1896 "Add modifier to set edge sharpness automatically");
1903 prop,
"Angle",
"Maximum angle between face normals that will be considered as smooth");
1927 while (input->identifier) {
1955 const bool use_submode =
STREQ(op->
idname,
"OBJECT_OT_mode_set_with_submode");
1987 if (toggle ==
false) {
1988 if (ob->
mode != mode) {
2012 if (ob->
mode != mode) {
2035 if (mesh_select_mode != 0) {
2058 ot->
name =
"Set Object Mode";
2083 ot->
name =
"Set Object Mode with Sub-mode";
2084 ot->
idname =
"OBJECT_OT_mode_set_with_submode";
2130 const bool is_link =
STREQ(op->
idname,
"OBJECT_OT_link_to_collection");
2140 if (collection ==
nullptr) {
2147 op->
reports,
RPT_ERROR,
"Cannot add objects to a library override or linked collection");
2154 char new_collection_name[
MAX_NAME];
2163 if ((single_object !=
nullptr) && is_link &&
2169 single_object->
id.
name + 2,
2188 if (single_object !=
nullptr) {
2192 single_object->
id.
name + 2,
2201 if (single_object !=
nullptr) {
2205 single_object->
id.
name + 2,
2235 int index = menu->
index;
2241 submenu->
index = ++index;
2252 MEM_delete(submenu);
2259 if (*menu ==
nullptr) {
2289 const int icon = (menu->
collection == scene->master_collection) ?
2349 C, op, 200,
IFACE_(
"Move to New Collection"),
IFACE_(
"Create"));
2355 Collection *master_collection = scene->master_collection;
2364 "MoveToCollectionData menu - expected eventual memleak");
2393 ot->
name =
"Move to Collection";
2395 ot->
idname =
"OBJECT_OT_move_to_collection";
2411 "Index of the collection to move to",
2418 "new_collection_name",
2422 "Name of the newly added collection");
2432 ot->
name =
"Link to Collection";
2434 ot->
idname =
"OBJECT_OT_link_to_collection";
2450 "Index of the collection to move to",
2457 "new_collection_name",
2461 "Name of the newly added collection");
struct bMotionPath * animviz_verify_motionpaths(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan)
void animviz_free_motionpath(struct bMotionPath *mpath)
void BKE_pose_channels_clear_with_null_bone(bPose *pose, bool do_id_user)
Collection * BKE_collection_from_index(Scene *scene, int index)
const char * BKE_collection_ui_name_get(Collection *collection)
Collection * BKE_collection_add(Main *bmain, Collection *collection_parent, const char *name_custom)
bool BKE_collection_has_object(Collection *collection, const Object *ob)
void BKE_collection_object_move(Main *bmain, Scene *scene, Collection *collection_dst, Collection *collection_src, Object *ob)
void BKE_collection_new_name_get(Collection *collection_parent, char *rname)
bool BKE_collection_object_add(Main *bmain, Collection *collection, Object *ob)
SpaceOutliner * CTX_wm_space_outliner(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
ScrArea * CTX_wm_area(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
Base * CTX_data_active_base(const bContext *C)
Main * CTX_data_main(const bContext *C)
bool CTX_data_selected_editable_objects(const bContext *C, blender::Vector< PointerRNA > *list)
wmWindowManager * CTX_wm_manager(const bContext *C)
wmMsgBus * CTX_wm_message_bus(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_curve_smooth_flag_set(Curve *cu, bool use_smooth)
void BKE_editlattice_load(struct Object *obedit)
void BKE_editlattice_make(struct Object *obedit)
void BKE_editlattice_free(struct Object *ob)
BMEditMesh * BKE_editmesh_from_object(Object *ob)
Return the BMEditMesh for a given object.
void BKE_editmesh_looptris_and_normals_calc(BMEditMesh *em)
struct PartDeflect * BKE_partdeflect_new(int type)
IDProperty * IDP_GetPropertyFromGroup(const IDProperty *prop, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define FOREACH_BASE_IN_MODE_END
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
#define FOREACH_SELECTED_OBJECT_BEGIN(_view_layer, _v3d, _instance)
blender::Vector< Object * > BKE_view_layer_array_from_objects_in_mode_params(const Scene *scene, ViewLayer *view_layer, const View3D *v3d, const ObjectsInModeParams *params)
void BKE_layer_collection_local_sync(const Scene *scene, ViewLayer *view_layer, const View3D *v3d)
LayerCollection * BKE_layer_collection_from_index(ViewLayer *view_layer, int index)
#define FOREACH_OBJECT_END
#define FOREACH_BASE_IN_MODE_BEGIN(_scene, _view_layer, _v3d, _object_type, _object_mode, _instance)
void BKE_layer_collection_isolate_local(const Scene *scene, ViewLayer *view_layer, const View3D *v3d, LayerCollection *lc, bool extend)
#define FOREACH_OBJECT_BEGIN(scene, view_layer, _instance)
bool BKE_layer_collection_has_selected_objects(const Scene *scene, ViewLayer *view_layer, LayerCollection *lc)
blender::Vector< Object * > BKE_view_layer_array_selected_objects_params(ViewLayer *view_layer, const View3D *v3d, const ObjectsInViewLayerParams *params)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
void BKE_layer_collection_isolate_global(Scene *scene, ViewLayer *view_layer, LayerCollection *lc, bool extend)
void BKE_view_layer_need_resync_tag(ViewLayer *view_layer)
#define FOREACH_SELECTED_OBJECT_END
int BKE_layer_collection_findindex(ViewLayer *view_layer, const LayerCollection *lc)
ListBase * BKE_view_layer_object_bases_get(ViewLayer *view_layer)
Object * BKE_view_layer_edit_object_get(const ViewLayer *view_layer)
bool BKE_id_is_editable(const Main *bmain, const ID *id)
General operations, lookup, etc. for materials.
void BKE_mesh_batch_cache_dirty_tag(Mesh *mesh, eMeshBatchDirtyMode mode)
@ BKE_MESH_BATCH_DIRTY_ALL
ModifierData * BKE_modifiers_findby_type(const Object *ob, ModifierType type)
void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
General operations, lookup, etc. for blender objects.
bool BKE_object_is_in_editmode(const Object *ob)
char * BKE_object_data_editmode_flush_ptr_get(ID *id)
bool BKE_object_obdata_is_libdata(const Object *ob)
void BKE_particlesystem_reset_all(struct Object *object)
void BKE_ptcache_ids_from_object(struct ListBase *lb, struct Object *ob, struct Scene *scene, int duplis)
#define PTCACHE_TYPE_PARTICLES
#define PTCACHE_RESET_OUTDATED
int BKE_ptcache_object_reset(struct Scene *scene, struct Object *ob, int mode)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_scene_object_base_flag_sync_from_base(Base *base)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
struct LinkData * BLI_genericNodeN(void *data)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY(dst, src)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define CLOG_WARN(clg_ref,...)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_graph_free(Depsgraph *graph)
void DEG_relations_tag_update(Main *bmain)
#define ID_IS_EDITABLE(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ MOTIONPATH_BAKE_HAS_PATHS
@ ASSET_LIBRARY_ESSENTIALS
Object groups, one object can be in many groups at once.
@ COLLECTION_HIDE_VIEWPORT
@ LAYER_COLLECTION_HIDE_VIEWPORT
@ LAYER_COLLECTION_HAS_OBJECTS
@ LAYER_COLLECTION_EXCLUDE
@ BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT
@ NODES_MODIFIER_HIDE_DATABLOCK_SELECTOR
#define OB_MODE_ALL_PAINT
#define OB_MODE_ALL_PAINT_GPENCIL
@ OB_MODE_EDIT_GPENCIL_LEGACY
#define OB_MODE_ALL_SCULPT
Object is a sort of wrapper for general info.
#define OB_TYPE_SUPPORT_EDITMODE(_type)
#define BASE_SELECTED(v3d, base)
@ ANIMVIZ_CALC_RANGE_FULL
@ ANIMVIZ_CALC_RANGE_CURRENT_FRAME
@ ANIMVIZ_CALC_RANGE_CHANGED
void ED_mball_editmball_free(Object *obedit)
void ED_mball_editmball_load(Object *obedit)
void ED_mball_editmball_make(Object *obedit)
void EDBM_mesh_load_ex(Main *bmain, Object *ob, bool free_data)
void EDBM_mesh_make(Object *ob, int select_mode, bool add_key_index)
void ED_mesh_mirror_topo_table_end(Object *ob)
void EDBM_mesh_free_data(BMEditMesh *em)
bool EDBM_selectmode_set_multi(bContext *C, short selectmode)
void ED_mesh_mirror_spatial_table_end(Object *ob)
void ED_outliner_selected_objects_get(const bContext *C, ListBase *objects)
bool ED_outliner_collections_editor_poll(bContext *C)
bool ED_operator_objectmode(bContext *C)
bool ED_operator_view3d_active(bContext *C)
bool ED_operator_object_active_editable(bContext *C)
bool ED_operator_object_active_editable_ex(bContext *C, const Object *ob)
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiItemIntO(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
uiLayout * uiLayoutRow(uiLayout *layout, bool align)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemS(uiLayout *layout)
void uiItemFullO_ptr(uiLayout *layout, wmOperatorType *ot, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiItemMenuF(uiLayout *layout, const char *name, int icon, uiMenuCreateFunc func, void *arg)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
int UI_icon_color_from_collection(const Collection *collection)
#define NS_EDITMODE_POINT_CLOUD
#define NS_EDITMODE_CURVES
#define NS_EDITMODE_ARMATURE
#define NS_EDITMODE_MBALL
#define NS_EDITMODE_GREASE_PENCIL
#define NS_EDITMODE_LATTICE
#define NS_EDITMODE_CURVE
void animviz_calc_motionpaths(Depsgraph *depsgraph, Main *bmain, Scene *scene, ListBase *targets, eAnimvizCalcRange range, bool restore)
void animviz_get_object_motionpaths(Object *ob, ListBase *targets)
void animviz_motionpath_compute_range(Object *ob, Scene *scene)
Depsgraph * animviz_depsgraph_build(Main *bmain, Scene *scene, ViewLayer *view_layer, ListBase *targets)
void ED_armature_edit_free(bArmature *arm)
void ED_armature_from_edit(Main *bmain, bArmature *arm)
void ED_armature_to_edit(bArmature *arm)
constexpr const char * c_str() const
void append(const T &value)
const Depsgraph * depsgraph
void ED_curve_editnurb_make(Object *obedit)
void ED_curve_editnurb_free(Object *obedit)
void ED_curve_editnurb_load(Main *bmain, Object *obedit)
void ED_curve_editfont_make(Object *obedit)
void ED_curve_editfont_load(Object *obedit)
void ED_curve_editfont_free(Object *obedit)
ccl_device_inline float4 select(const int4 mask, const float4 a, const float4 b)
void mesh_sharp_edges_set_from_angle(Mesh &mesh, float angle, bool keep_sharp_edges=false)
void mesh_smooth_set(Mesh &mesh, bool use_smooth, bool keep_sharp_edges=false)
const asset_system::AssetRepresentation * find_asset_from_weak_ref(const bContext &C, const AssetWeakReference &weak_ref, ReportList *reports)
ID * asset_local_id_ensure_imported(Main &bmain, const asset_system::AssetRepresentation &asset)
void OBJECT_OT_paths_update_visible(wmOperatorType *ot)
static void move_to_collection_menus_free(MoveToCollectionData **menu)
void OBJECT_OT_shade_smooth(wmOperatorType *ot)
void motion_paths_recalc(bContext *C, Scene *scene, eObjectPathCalcRange range, ListBase *ld_objects)
ModifierData * modifier_add(ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
@ OBJECT_PATH_CALC_RANGE_CHANGED
@ OBJECT_PATH_CALC_RANGE_FULL
@ OBJECT_PATH_CALC_RANGE_CURRENT_FRAME
static void move_to_collection_menus_items(uiLayout *layout, MoveToCollectionData *menu)
static int object_calculate_paths_invoke(bContext *C, wmOperator *op, const wmEvent *)
void OBJECT_OT_editmode_toggle(wmOperatorType *ot)
bool editmode_exit_multi(bContext *C, int flag)
void OBJECT_OT_mode_set(wmOperatorType *ot)
static bool editmode_load_free_ex(Main *bmain, Object *obedit, const bool load_data, const bool free_data)
bool editmode_enter(bContext *C, int flag)
void motion_paths_recalc_selected(bContext *C, Scene *scene, eObjectPathCalcRange range)
void OBJECT_OT_posemode_toggle(wmOperatorType *ot)
static bool object_mode_set_poll(bContext *C)
int object_in_mode_to_index(const Scene *scene, ViewLayer *view_layer, eObjectMode mode, const Object *ob)
void OBJECT_OT_shade_flat(wmOperatorType *ot)
void OBJECT_OT_hide_view_clear(wmOperatorType *ot)
void OBJECT_OT_shade_auto_smooth(wmOperatorType *ot)
void motion_paths_recalc_visible(bContext *C, Scene *scene, eObjectPathCalcRange range)
static int object_hide_view_clear_exec(bContext *C, wmOperator *op)
static void object_clear_mpath(Object *ob)
void motion_paths_clear(bContext *C, bool only_selected)
void OBJECT_OT_shade_smooth_by_angle(wmOperatorType *ot)
void OBJECT_OT_move_to_collection(wmOperatorType *ot)
bool editmode_free_ex(Main *bmain, Object *obedit)
bool mode_set_ex(bContext *C, eObjectMode mode, bool use_undo, ReportList *reports)
void OBJECT_OT_hide_view_set(wmOperatorType *ot)
static int move_to_collection_menus_create(wmOperator *op, MoveToCollectionData *menu)
static int shade_auto_smooth_exec(bContext *C, wmOperator *op)
void base_select(Base *base, eObjectSelect_Mode mode)
Object * context_object(const bContext *C)
void OBJECT_OT_mode_set_with_submode(wmOperatorType *ot)
void OBJECT_OT_hide_collection(wmOperatorType *ot)
static int object_update_paths_exec(bContext *C, wmOperator *op)
static int object_hide_view_set_exec(bContext *C, wmOperator *op)
static int object_clear_paths_exec(bContext *C, wmOperator *op)
static bool shade_poll(bContext *C)
void OBJECT_OT_paths_update(wmOperatorType *ot)
void OBJECT_OT_paths_calculate(wmOperatorType *ot)
void collection_hide_menu_draw(const bContext *C, uiLayout *layout)
static void move_to_collection_menu_create(bContext *C, uiLayout *layout, void *menu_v)
static int forcefield_toggle_exec(bContext *C, wmOperator *)
static eAnimvizCalcRange object_path_convert_range(eObjectPathCalcRange range)
bool mode_compat_test(const Object *ob, eObjectMode mode)
bool editmode_enter_ex(Main *bmain, Scene *scene, Object *ob, int flag)
static ListBase selected_objects_get(bContext *C)
static void move_to_collection_menus_free_recursive(MoveToCollectionData *menu)
static int posemode_exec(bContext *C, wmOperator *op)
Object * context_active_object(const bContext *C)
void OBJECT_OT_forcefield_toggle(wmOperatorType *ot)
static const EnumPropertyItem * object_mode_set_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
static int move_to_collection_exec(bContext *C, wmOperator *op)
bool editmode_exit(bContext *C, int flag)
static int editmode_toggle_exec(bContext *C, wmOperator *op)
Object * object_in_mode_from_index(const Scene *scene, ViewLayer *view_layer, eObjectMode mode, int index)
static bool has_object_motion_paths(Object *ob)
void OBJECT_OT_link_to_collection(wmOperatorType *ot)
static bool move_to_collection_poll(bContext *C)
static int object_calculate_paths_exec(bContext *C, wmOperator *op)
static int object_update_all_paths_exec(bContext *C, wmOperator *)
bool mode_compat_set(bContext *C, Object *ob, eObjectMode mode, ReportList *reports)
bool editmode_exit_multi_ex(Main *bmain, Scene *scene, ViewLayer *view_layer, int flag)
static int object_mode_set_exec(bContext *C, wmOperator *op)
static bool object_update_all_paths_poll(bContext *)
void check_force_modifiers(Main *bmain, Scene *scene, Object *object)
static bool object_update_paths_poll(bContext *C)
static bool editmode_toggle_poll(bContext *C)
static void shade_auto_smooth_ui(bContext *, wmOperator *op)
static bool mesh_needs_keyindex(Main *bmain, const Mesh *mesh)
static bool has_pose_motion_paths(Object *ob)
static int object_hide_collection_exec(bContext *C, wmOperator *op)
static bool is_smooth_by_angle_modifier(const ModifierData &md)
bool editmode_load(Main *bmain, Object *obedit)
static std::string object_clear_paths_get_description(bContext *, wmOperatorType *, PointerRNA *ptr)
blender::Vector< Object * > objects_in_mode_or_selected(bContext *C, bool(*filter_fn)(const Object *ob, void *user_data), void *filter_user_data)
static int shade_smooth_exec(bContext *C, wmOperator *op)
bool editmode_exit_ex(Main *bmain, Scene *scene, Object *obedit, int flag)
static MoveToCollectionData * master_collection_menu
void OBJECT_OT_paths_clear(wmOperatorType *ot)
static bool object_hide_poll(bContext *C)
static int object_hide_collection_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int move_to_collection_invoke(bContext *C, wmOperator *op, const wmEvent *)
bool modifier_remove(ReportList *reports, Main *bmain, Scene *scene, Object *ob, ModifierData *md)
static void free_data(ModifierData *md)
#define COLLECTION_INVALID_INDEX
bool ED_object_posemode_enter_ex(Main *bmain, Object *ob)
bool ED_object_posemode_enter(bContext *C, Object *ob)
bool ED_object_posemode_exit_ex(Main *bmain, Object *ob)
bool ED_object_posemode_exit(bContext *C, Object *ob)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
int RNA_property_int_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PointerRNA RNA_id_pointer_create(ID *id)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
const EnumPropertyItem rna_enum_motionpath_display_type_items[]
const EnumPropertyItem rna_enum_motionpath_range_items[]
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
PropertyRNA * RNA_def_enum_flag(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item, int value)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
const EnumPropertyItem rna_enum_object_mode_items[]
const EnumPropertyItem rna_enum_mesh_select_mode_items[]
struct EditFont * editfont
struct LibraryWeakReference * library_weak_reference
struct EditLatt * editlatt
ListBase layer_collections
unsigned short local_collections_bits
bool is_memfile_undo_written
struct bNodeTree * node_group
struct NodesModifierSettings settings
struct IDProperty * properties
unsigned short local_collections_uid
ListBase layer_collections
MoveToCollectionData * prev
MoveToCollectionData * next
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
std::string(* get_description)(bContext *C, wmOperatorType *ot, PointerRNA *ptr)
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
const char * translation_context
void(* ui)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
void WM_main_add_notifier(uint type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_autosave_write(wmWindowManager *wm, Main *bmain)
bool WM_autosave_is_scheduled(wmWindowManager *wm)
#define WM_msg_publish_rna_prop(mbus, id_, data_, type_, prop_)
int WM_operator_props_dialog_popup(bContext *C, wmOperator *op, int width, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)