115struct MoveToCollectionData;
161 bool (*filter_fn)(
const Object *ob,
void *user_data),
162 void *filter_user_data)
169 ID *id_pin =
nullptr;
170 const bool use_objects_in_mode = (ob_active !=
nullptr) &&
179 id_pin = sbuts->
pinid;
186 else if ((space_type ==
SPACE_PROPERTIES) && (use_objects_in_mode ==
false)) {
195 else if (ob_active && (ob_active->
mode &
207 if ((ob !=
nullptr) && !filter_fn(ob, filter_user_data)) {
218 if (use_objects_in_mode) {
221 params.no_dup_data =
true;
222 params.filter_fn = filter_fn;
223 params.filter_userdata = filter_user_data;
228 params.no_dup_data =
true;
229 params.filter_fn = filter_fn;
230 params.filter_userdata = filter_user_data;
252 if (base_iter->object == ob) {
272 ob = base_iter->object;
300 bool changed =
false;
332 ot->name =
"Show Hidden Objects";
333 ot->description =
"Reveal temporarily hidden objects";
334 ot->idname =
"OBJECT_OT_hide_view_clear";
351 bool changed =
false;
383 if (hide_count > 0 && confirm) {
398 ot->name =
"Hide Objects";
399 ot->description =
"Temporarily hide objects from the viewport";
400 ot->idname =
"OBJECT_OT_hide_view_set";
411 ot->srna,
"unselected",
false,
"Unselected",
"Hide unselected rather than selected objects");
454#define COLLECTION_INVALID_INDEX -1
477 int icon = ICON_NONE;
479 icon = ICON_LAYER_ACTIVE;
482 icon = ICON_LAYER_USED;
484 PointerRNA op_ptr = row->
op(
"OBJECT_OT_hide_collection", lc->collection->id.name + 2, icon);
520 ot->name =
"Hide Other Collections";
521 ot->description =
"Show only objects in collection (Shift to extend)";
522 ot->idname =
"OBJECT_OT_hide_collection";
540 "Index of the collection to change visibility",
544 prop =
RNA_def_boolean(
ot->srna,
"toggle",
false,
"Toggle",
"Toggle visibility");
546 prop =
RNA_def_boolean(
ot->srna,
"extend",
false,
"Extend",
"Extend visibility");
566 if (ob->data ==
mesh) {
585 const bool load_data,
590 if (obedit ==
nullptr) {
596 if (
mesh->runtime->edit_mesh ==
nullptr) {
603 "Too many vertices for mesh '%s' (%d)",
605 mesh->runtime->edit_mesh->bm->totvert);
615 mesh->runtime->edit_mesh.reset();
625 if (arm->
edbo ==
nullptr) {
636 if (load_data ==
false) {
639 if (obedit->
pose !=
nullptr) {
715 static_cast<ID *
>(obedit->
data));
716 if (needs_flush_ptr) {
717 *needs_flush_ptr =
false;
792 if (obedit ==
nullptr) {
795 bool changed =
false;
796 const short obedit_type = obedit->
type;
800 Object *ob = base->object;
835 CLOG_WARN(&
LOG,
"Unable to enter edit-mode on library data for object '%s'", ob->
id.
name + 2);
954 const bool is_mode_set = (obact->
mode & mode_flag) != 0;
971 if ((ob != obact) && (ob->type == obact->
type)) {
981 if ((obact->
mode & mode_flag) == 0) {
983 if ((ob != obact) && (ob->type == obact->
type)) {
993 if (
G.background ==
false) {
1027 ot->name =
"Edit Mode";
1028 ot->description =
"Toggle object's edit mode";
1029 ot->idname =
"OBJECT_OT_editmode_toggle";
1058 if (base ==
nullptr) {
1064 bool is_mode_set = (obact->
mode & mode_flag) != 0;
1079 if (obact == obedit) {
1081 is_mode_set =
false;
1089 if ((ob != obact) && (ob->type ==
OB_ARMATURE) && (ob->mode & mode_flag)) {
1113 if (
G.background ==
false) {
1123 ot->name =
"Toggle Pose Mode";
1124 ot->idname =
"OBJECT_OT_posemode_toggle";
1125 ot->description =
"Enable or disable posing/selecting bones";
1169 if (ob->
pd ==
nullptr) {
1194 ot->name =
"Toggle Force Field";
1195 ot->description =
"Toggle object's force field";
1196 ot->idname =
"OBJECT_OT_forcefield_toggle";
1227 ListBase selected_objects = {
nullptr,
nullptr};
1240 ListBase visible_objects = {
nullptr,
nullptr};
1291 bool free_depsgraph =
false;
1298 free_depsgraph =
false;
1302 free_depsgraph =
true;
1322 if (free_depsgraph) {
1334 if (ob ==
nullptr) {
1348 C, op, 270,
IFACE_(
"Calculate Object Motion Paths"),
IFACE_(
"Calculate"));
1386 ot->name =
"Calculate Object Motion Paths";
1387 ot->idname =
"OBJECT_OT_paths_calculate";
1388 ot->description =
"Generate motion paths for the selected objects";
1409 "Computation Range",
1433 if (scene ==
nullptr) {
1458 ot->name =
"Update Object Paths";
1459 ot->idname =
"OBJECT_OT_paths_update";
1460 ot->description =
"Recalculate motion paths for selected objects";
1485 if (scene ==
nullptr) {
1499 ot->name =
"Update All Object Paths";
1500 ot->idname =
"OBJECT_OT_paths_update_visible";
1501 ot->description =
"Recalculate all visible motion paths for objects and poses";
1522 ob->
mpath =
nullptr;
1532 if (only_selected) {
1567 if (only_selected) {
1568 return TIP_(
"Clear motion paths of selected objects");
1570 return TIP_(
"Clear motion paths of all objects");
1576 ot->name =
"Clear Object Paths";
1577 ot->idname =
"OBJECT_OT_paths_clear";
1592 "Only clear motion paths of selected objects");
1623 const bool use_flat =
STREQ(op->
idname,
"OBJECT_OT_shade_flat");
1624 const bool use_smooth =
STREQ(op->
idname,
"OBJECT_OT_shade_smooth");
1625 const bool use_smooth_by_angle =
STREQ(op->
idname,
"OBJECT_OT_shade_smooth_by_angle");
1646 bool modifier_removed =
false;
1655 if (use_flat || use_smooth) {
1660 modifier_removed =
true;
1669 bool changed_multi =
false;
1670 bool has_linked_data =
false;
1671 for (
ID *
data : object_data) {
1673 has_linked_data =
true;
1677 bool changed =
false;
1682 if (use_smooth_by_angle) {
1695 changed_multi =
true;
1701 if (modifier_removed) {
1706 if (has_linked_data) {
1719 if (obact !=
nullptr) {
1734 ot->name =
"Shade Flat";
1735 ot->description =
"Render and display faces uniform, using face normals";
1736 ot->idname =
"OBJECT_OT_shade_flat";
1749 "Don't remove sharp edges, which are redundant with faces shaded smooth");
1755 ot->name =
"Shade Smooth";
1756 ot->description =
"Render and display faces smooth, using interpolated vertex normals";
1757 ot->idname =
"OBJECT_OT_shade_smooth";
1770 "Don't remove sharp edges. Tagged edges will remain sharp");
1775 ot->name =
"Shade Smooth by Angle";
1777 "Set the sharpness of mesh edges based on the angle between the neighboring faces";
1778 ot->idname =
"OBJECT_OT_shade_smooth_by_angle";
1789 prop,
"Angle",
"Maximum angle between face normals that will be considered as smooth");
1795 "Only add sharp edges instead of clearing existing tags first");
1813 if (ntree.interface_inputs().size() != 3) {
1816 if (ntree.interface_outputs().size() != 1) {
1833 if (use_auto_smooth) {
1837 "geometry_nodes/smooth_by_angle.blend/NodeTree/Smooth by Angle");
1841 if (!asset_representation) {
1846 while (!node_group) {
1848 if (!node_group_id) {
1854 node_group =
reinterpret_cast<bNodeTree *
>(node_group_id);
1855 node_group->ensure_topology_cache();
1856 node_group->ensure_interface_cache();
1863 node_group =
nullptr;
1866 const StringRefNull angle_identifier = node_group->interface_inputs()[1]->identifier;
1868 for (
const PointerRNA &ob_ptr : ctx_objects) {
1882 if (!smooth_by_angle_nmd) {
1885 if (!smooth_by_angle_nmd) {
1889 smooth_by_angle_nmd->
node_group = node_group;
1898 angle_identifier.
c_str());
1911 for (
const PointerRNA &ob_ptr : ctx_objects) {
1941 ot->name =
"Shade Auto Smooth";
1943 "Add modifier to automatically set the sharpness of mesh edges based on the angle between "
1944 "the neighboring faces";
1945 ot->idname =
"OBJECT_OT_shade_auto_smooth";
1959 "Add modifier to set edge sharpness automatically");
1966 prop,
"Angle",
"Maximum angle between face normals that will be considered as smooth");
1990 while (
input->identifier) {
2018 const bool use_submode =
STREQ(op->
idname,
"OBJECT_OT_mode_set_with_submode");
2048 if (toggle ==
false) {
2049 if (ob->
mode != mode) {
2073 if (ob->
mode != mode) {
2096 if (mesh_select_mode != 0) {
2119 ot->name =
"Set Object Mode";
2120 ot->description =
"Sets the object interaction mode";
2121 ot->idname =
"OBJECT_OT_mode_set";
2144 ot->name =
"Set Object Mode with Sub-mode";
2145 ot->idname =
"OBJECT_OT_mode_set_with_submode";
2191 const bool is_link =
STREQ(op->
idname,
"OBJECT_OT_link_to_collection");
2201 if (collection ==
nullptr) {
2208 op->
reports,
RPT_ERROR,
"Cannot add objects to a library override or linked collection");
2215 char new_collection_name[
MAX_NAME];
2224 if ((single_object !=
nullptr) && is_link &&
2230 single_object->
id.
name + 2,
2249 if (single_object !=
nullptr) {
2253 single_object->
id.
name + 2,
2262 if (single_object !=
nullptr) {
2266 single_object->
id.
name + 2,
2296 int index = menu->
index;
2302 submenu->
index = ++index;
2313 MEM_delete(submenu);
2320 if (*menu ==
nullptr) {
2334 menu->
ptr = layout->
op(menu->
ot,
2404 C, op, 200,
IFACE_(
"Move to New Collection"),
IFACE_(
"Create"));
2419 "MoveToCollectionData menu - expected eventual memleak");
2448 ot->name =
"Move to Collection";
2449 ot->description =
"Move objects to a collection";
2450 ot->idname =
"OBJECT_OT_move_to_collection";
2466 "Index of the collection to move to",
2470 prop =
RNA_def_boolean(
ot->srna,
"is_new",
false,
"New",
"Move objects to a new collection");
2473 "new_collection_name",
2477 "Name of the newly added collection");
2487 ot->name =
"Link to Collection";
2488 ot->description =
"Link objects to a collection";
2489 ot->idname =
"OBJECT_OT_link_to_collection";
2505 "Index of the collection to move to",
2509 prop =
RNA_def_boolean(
ot->srna,
"is_new",
false,
"New",
"Move objects to a new collection");
2512 "new_collection_name",
2516 "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, blender::StringRef 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)
LinkData * BLI_genericNodeN(void *data)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const ListBase *lb)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
char * STRNCPY(char(&dst)[N], const char *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)
@ MOTIONPATH_BAKE_HAS_PATHS
@ ASSET_LIBRARY_ESSENTIALS
Object groups, one object can be in many groups at once.
@ COLLECTION_HIDE_VIEWPORT
@ BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT
@ LAYER_COLLECTION_EXCLUDE
@ LAYER_COLLECTION_HIDE_VIEWPORT
@ LAYER_COLLECTION_HAS_OBJECTS
@ NODES_MODIFIER_HIDE_DATABLOCK_SELECTOR
#define OB_MODE_ALL_PAINT
#define OB_MODE_ALL_PAINT_GPENCIL
#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)
Read Guarded memory(de)allocation.
void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd)
void UI_popup_menu_end(bContext *C, uiPopupMenu *pup)
uiPopupMenu * UI_popup_menu_begin(bContext *C, const char *title, int icon) ATTR_NONNULL()
uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
int UI_icon_color_from_collection(const Collection *collection)
void uiLayoutSetActive(uiLayout *layout, bool active)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
void uiLayoutSetOperatorContext(uiLayout *layout, wmOperatorCallContext opcontext)
#define NS_EDITMODE_POINTCLOUD
#define NS_EDITMODE_CURVES
#define NS_EDITMODE_ARMATURE
#define NS_EDITMODE_MBALL
#define NS_EDITMODE_GREASE_PENCIL
#define NS_EDITMODE_LATTICE
@ WM_OP_INVOKE_REGION_WIN
#define NS_EDITMODE_CURVE
Depsgraph * animviz_depsgraph_build(Main *bmain, Scene *scene, ViewLayer *view_layer, blender::Span< MPathTarget * > targets)
void animviz_free_motionpath_targets(blender::Vector< MPathTarget * > &targets)
void animviz_motionpath_compute_range(Object *ob, Scene *scene)
void animviz_calc_motionpaths(Depsgraph *depsgraph, Main *bmain, Scene *scene, blender::MutableSpan< MPathTarget * > targets, eAnimvizCalcRange range, bool restore)
void animviz_build_motionpath_targets(Object *ob, blender::Vector< MPathTarget * > &r_targets)
void ED_armature_edit_free(bArmature *arm)
void ED_armature_from_edit(Main *bmain, bArmature *arm)
void ED_armature_to_edit(bArmature *arm)
BMesh const char void * data
BPy_StructRNA * depsgraph
constexpr const char * c_str() const
void append(const T &value)
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)
#define ID_IS_EDITABLE(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
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)
bool ensure_selection_domain(ToolSettings *ts, Object *object)
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)
static bool is_valid_smooth_by_angle_group(const bNodeTree &ntree)
static wmOperatorStatus object_update_paths_exec(bContext *C, wmOperator *op)
@ 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)
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)
static bool object_mode_set_ok_or_report(ReportList *reports)
int object_in_mode_to_index(const Scene *scene, ViewLayer *view_layer, eObjectMode mode, const Object *ob)
static wmOperatorStatus object_calculate_paths_exec(bContext *C, wmOperator *op)
void OBJECT_OT_shade_flat(wmOperatorType *ot)
void OBJECT_OT_hide_view_clear(wmOperatorType *ot)
void OBJECT_OT_shade_auto_smooth(wmOperatorType *ot)
static wmOperatorStatus editmode_toggle_exec(bContext *C, wmOperator *op)
void motion_paths_recalc_visible(bContext *C, Scene *scene, eObjectPathCalcRange range)
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)
static wmOperatorStatus object_clear_paths_exec(bContext *C, wmOperator *op)
void OBJECT_OT_move_to_collection(wmOperatorType *ot)
bool editmode_free_ex(Main *bmain, Object *obedit)
static wmOperatorStatus move_to_collection_invoke(bContext *C, wmOperator *op, const wmEvent *)
bool mode_set_ex(bContext *C, eObjectMode mode, bool use_undo, ReportList *reports)
static wmOperatorStatus object_calculate_paths_invoke(bContext *C, wmOperator *op, const wmEvent *)
void OBJECT_OT_hide_view_set(wmOperatorType *ot)
static wmOperatorStatus object_update_all_paths_exec(bContext *C, wmOperator *)
static int move_to_collection_menus_create(wmOperator *op, MoveToCollectionData *menu)
static wmOperatorStatus object_hide_collection_exec(bContext *C, wmOperator *op)
void base_select(Base *base, eObjectSelect_Mode mode)
static wmOperatorStatus object_hide_view_set_exec(bContext *C, wmOperator *op)
static wmOperatorStatus move_to_collection_exec(bContext *C, wmOperator *op)
Object * context_object(const bContext *C)
void OBJECT_OT_mode_set_with_submode(wmOperatorType *ot)
void OBJECT_OT_hide_collection(wmOperatorType *ot)
static bool shade_poll(bContext *C)
void OBJECT_OT_paths_update(wmOperatorType *ot)
void OBJECT_OT_paths_calculate(wmOperatorType *ot)
static wmOperatorStatus object_hide_view_clear_exec(bContext *C, wmOperator *op)
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 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)
Object * context_active_object(const bContext *C)
static wmOperatorStatus shade_auto_smooth_exec(bContext *C, wmOperator *op)
void OBJECT_OT_forcefield_toggle(wmOperatorType *ot)
static const EnumPropertyItem * object_mode_set_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
bool editmode_exit(bContext *C, int flag)
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 wmOperatorStatus object_mode_set_exec(bContext *C, wmOperator *op)
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 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 bool is_smooth_by_angle_modifier(const ModifierData &md)
static wmOperatorStatus shade_smooth_exec(bContext *C, wmOperator *op)
bool editmode_load(Main *bmain, Object *obedit)
static wmOperatorStatus object_hide_collection_invoke(bContext *C, wmOperator *op, const wmEvent *event)
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)
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 wmOperatorStatus posemode_exec(bContext *C, wmOperator *op)
static wmOperatorStatus forcefield_toggle_exec(bContext *C, wmOperator *)
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[]
const char * relative_asset_identifier
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
struct Collection * master_collection
struct ToolSettings * toolsettings
unsigned short local_collections_uid
ListBase layer_collections
MoveToCollectionData * prev
MoveToCollectionData * next
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, wmOperatorCallContext context, eUI_Item_Flag flag)
uiLayout & column(bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void menu_fn(blender::StringRefNull name, int icon, uiMenuCreateFunc func, void *arg)
uiLayout & row(bool align)
void prop(PointerRNA *ptr, PropertyRNA *prop, int index, int value, eUI_Item_Flag flag, std::optional< blender::StringRef > name_opt, int icon, std::optional< blender::StringRef > placeholder=std::nullopt)
wmEventModifierFlag modifier
const char * translation_context
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_)
wmOperatorStatus 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)