165 bool (*filter_fn)(
const Object *ob,
void *user_data),
166 void *filter_user_data)
173 ID *id_pin =
nullptr;
174 const bool use_objects_in_mode = (ob_active !=
nullptr) &&
183 id_pin = sbuts->
pinid;
190 else if ((space_type ==
SPACE_PROPERTIES) && (use_objects_in_mode ==
false)) {
199 else if (ob_active && (ob_active->
mode &
211 if ((ob !=
nullptr) && !filter_fn(ob, filter_user_data)) {
222 if (use_objects_in_mode) {
225 params.no_dup_data =
true;
226 params.filter_fn = filter_fn;
227 params.filter_userdata = filter_user_data;
232 params.no_dup_data =
true;
233 params.filter_fn = filter_fn;
234 params.filter_userdata = filter_user_data;
256 if (base_iter->object == ob) {
276 ob = base_iter->object;
304 bool changed =
false;
336 ot->name =
"Show Hidden Objects";
337 ot->description =
"Reveal temporarily hidden objects";
338 ot->idname =
"OBJECT_OT_hide_view_clear";
355 bool changed =
false;
387 if (hide_count > 0 && confirm) {
402 ot->name =
"Hide Objects";
403 ot->description =
"Temporarily hide objects from the viewport";
404 ot->idname =
"OBJECT_OT_hide_view_set";
415 ot->srna,
"unselected",
false,
"Unselected",
"Hide unselected rather than selected objects");
458#define COLLECTION_INVALID_INDEX -1
481 int icon = ICON_NONE;
483 icon = ICON_LAYER_ACTIVE;
486 icon = ICON_LAYER_USED;
488 PointerRNA op_ptr = row->
op(
"OBJECT_OT_hide_collection", lc->collection->id.name + 2, icon);
524 ot->name =
"Hide Other Collections";
525 ot->description =
"Show only objects in collection (Shift to extend)";
526 ot->idname =
"OBJECT_OT_hide_collection";
543 "Index of the collection to change visibility",
547 prop =
RNA_def_boolean(
ot->srna,
"toggle",
false,
"Toggle",
"Toggle visibility");
549 prop =
RNA_def_boolean(
ot->srna,
"extend",
false,
"Extend",
"Extend visibility");
580 pose_bone->bone->flag |= selection_flags;
583 pose_bone->bone->flag &= ~selection_flags;
598 if (ob->data ==
mesh) {
622 if (obedit ==
nullptr) {
628 if (
mesh->runtime->edit_mesh ==
nullptr) {
635 "Too many vertices for mesh '%s' (%d)",
637 mesh->runtime->edit_mesh->bm->totvert);
647 mesh->runtime->edit_mesh.reset();
657 if (arm->
edbo ==
nullptr) {
671 if (obedit->
pose !=
nullptr) {
750 static_cast<ID *
>(obedit->
data));
751 if (needs_flush_ptr) {
752 *needs_flush_ptr =
false;
827 if (obedit ==
nullptr) {
830 bool changed =
false;
831 const short obedit_type = obedit->
type;
835 Object *ob = base->object;
870 CLOG_WARN(&
LOG,
"Unable to enter edit-mode on library data for object '%s'", ob->
id.
name + 2);
996 const bool is_mode_set = (obact->
mode & mode_flag) != 0;
1013 if ((ob != obact) && (ob->type == obact->
type)) {
1023 if ((obact->
mode & mode_flag) == 0) {
1025 if ((ob != obact) && (ob->type == obact->
type)) {
1035 if (
G.background ==
false) {
1069 ot->name =
"Edit Mode";
1070 ot->description =
"Toggle object's edit mode";
1071 ot->idname =
"OBJECT_OT_editmode_toggle";
1100 if (base ==
nullptr) {
1106 bool is_mode_set = (obact->
mode & mode_flag) != 0;
1121 if (obact == obedit) {
1123 is_mode_set =
false;
1131 if ((ob != obact) && (ob->type ==
OB_ARMATURE) && (ob->mode & mode_flag)) {
1155 if (
G.background ==
false) {
1165 ot->name =
"Toggle Pose Mode";
1166 ot->idname =
"OBJECT_OT_posemode_toggle";
1167 ot->description =
"Enable or disable posing/selecting bones";
1211 if (ob->
pd ==
nullptr) {
1236 ot->name =
"Toggle Force Field";
1237 ot->description =
"Toggle object's force field";
1238 ot->idname =
"OBJECT_OT_forcefield_toggle";
1269 ListBase selected_objects = {
nullptr,
nullptr};
1282 ListBase visible_objects = {
nullptr,
nullptr};
1333 bool free_depsgraph =
false;
1340 free_depsgraph =
false;
1344 free_depsgraph =
true;
1364 if (free_depsgraph) {
1376 if (ob ==
nullptr) {
1390 C, op, 270,
IFACE_(
"Calculate Object Motion Paths"),
IFACE_(
"Calculate"));
1428 ot->name =
"Calculate Object Motion Paths";
1429 ot->idname =
"OBJECT_OT_paths_calculate";
1430 ot->description =
"Generate motion paths for the selected objects";
1451 "Computation Range",
1475 if (scene ==
nullptr) {
1500 ot->name =
"Update Object Paths";
1501 ot->idname =
"OBJECT_OT_paths_update";
1502 ot->description =
"Recalculate motion paths for selected objects";
1527 if (scene ==
nullptr) {
1541 ot->name =
"Update All Object Paths";
1542 ot->idname =
"OBJECT_OT_paths_update_visible";
1543 ot->description =
"Recalculate all visible motion paths for objects and poses";
1564 ob->
mpath =
nullptr;
1574 if (only_selected) {
1609 if (only_selected) {
1610 return TIP_(
"Clear motion paths of selected objects");
1612 return TIP_(
"Clear motion paths of all objects");
1618 ot->name =
"Clear Object Paths";
1619 ot->idname =
"OBJECT_OT_paths_clear";
1634 "Only clear motion paths of selected objects");
1658 if (!
STREQ(library_ref->library_id_name + 2,
"Smooth by Angle")) {
1667 char auto_smooth_asset_path[
FILE_MAX] =
"datafiles/assets/nodes/geometry_nodes_essentials.blend";
1680 const bool use_flat =
STREQ(op->
idname,
"OBJECT_OT_shade_flat");
1681 const bool use_smooth =
STREQ(op->
idname,
"OBJECT_OT_shade_smooth");
1682 const bool use_smooth_by_angle =
STREQ(op->
idname,
"OBJECT_OT_shade_smooth_by_angle");
1710 if (use_flat || use_smooth) {
1724 bool changed_multi =
false;
1725 bool has_linked_data =
false;
1726 for (
ID *
data : object_data) {
1728 has_linked_data =
true;
1732 bool changed =
false;
1737 if (use_smooth_by_angle) {
1750 changed_multi =
true;
1756 if (has_linked_data) {
1769 if (obact !=
nullptr) {
1784 ot->name =
"Shade Flat";
1785 ot->description =
"Render and display faces uniform, using face normals";
1786 ot->idname =
"OBJECT_OT_shade_flat";
1799 "Don't remove sharp edges, which are redundant with faces shaded smooth");
1805 ot->name =
"Shade Smooth";
1806 ot->description =
"Render and display faces smooth, using interpolated vertex normals";
1807 ot->idname =
"OBJECT_OT_shade_smooth";
1820 "Don't remove sharp edges. Tagged edges will remain sharp");
1825 ot->name =
"Shade Smooth by Angle";
1827 "Set the sharpness of mesh edges based on the angle between the neighboring faces";
1828 ot->idname =
"OBJECT_OT_shade_smooth_by_angle";
1839 prop,
"Angle",
"Maximum angle between face normals that will be considered as smooth");
1845 "Only add sharp edges instead of clearing existing tags first");
1863 if (ntree.interface_inputs().size() != 3) {
1866 if (ntree.interface_outputs().size() != 1) {
1883 if (use_auto_smooth) {
1887 "nodes/geometry_nodes_essentials.blend/NodeTree/Smooth by Angle");
1897 if (!asset_representation) {
1902 while (!node_group) {
1904 if (!node_group_id) {
1910 node_group =
reinterpret_cast<bNodeTree *
>(node_group_id);
1911 node_group->ensure_topology_cache();
1912 node_group->ensure_interface_cache();
1919 node_group =
nullptr;
1922 const StringRefNull angle_identifier = node_group->interface_inputs()[1]->identifier;
1924 for (
const PointerRNA &ob_ptr : ctx_objects) {
1938 if (!smooth_by_angle_nmd) {
1941 if (!smooth_by_angle_nmd) {
1945 smooth_by_angle_nmd->
node_group = node_group;
1955 angle_identifier.
c_str());
1968 for (
const PointerRNA &ob_ptr : ctx_objects) {
1999 ot->name =
"Shade Auto Smooth";
2001 "Add modifier to automatically set the sharpness of mesh edges based on the angle between "
2002 "the neighboring faces";
2003 ot->idname =
"OBJECT_OT_shade_auto_smooth";
2017 "Add modifier to set edge sharpness automatically");
2024 prop,
"Angle",
"Maximum angle between face normals that will be considered as smooth");
2048 while (
input->identifier) {
2076 const bool use_submode =
STREQ(op->
idname,
"OBJECT_OT_mode_set_with_submode");
2106 if (toggle ==
false) {
2107 if (ob->
mode != mode) {
2131 if (ob->
mode != mode) {
2154 if (mesh_select_mode != 0) {
2177 ot->name =
"Set Object Mode";
2178 ot->description =
"Sets the object interaction mode";
2179 ot->idname =
"OBJECT_OT_mode_set";
2202 ot->name =
"Set Object Mode with Sub-mode";
2203 ot->idname =
"OBJECT_OT_mode_set_with_submode";
2248 const bool is_link =
STREQ(op->
idname,
"OBJECT_OT_link_to_collection");
2258 Scene *dest_scene =
nullptr;
2260 if (collection ==
nullptr) {
2267 op->
reports,
RPT_ERROR,
"Cannot add objects to a library override or linked collection");
2283 if ((single_object !=
nullptr) && is_link &&
2289 single_object->
id.
name + 2,
2308 if (single_object !=
nullptr) {
2312 single_object->
id.
name + 2,
2321 if (single_object !=
nullptr) {
2325 single_object->
id.
name + 2,
2341 if (src_scene != dest_scene) {
2363 bool is_move =
STREQ(op->
type->
idname,
"OBJECT_OT_move_to_collection");
2366 is_move ?
"OBJECT_MT_move_to_collection" :
"OBJECT_MT_link_to_collection",
2393 is_move ?
IFACE_(
"Move to New Collection") :
2394 IFACE_(
"Link to New Collection"),
2404 "OBJECT_MT_move_to_collection",
2405 "OBJECT_MT_move_to_collection_recursive");
2407 is_move ?
"OBJECT_OT_move_to_collection" :
"OBJECT_OT_link_to_collection",
false);
2421 collection = child->collection;
2430 layout.
menu(is_move ?
"OBJECT_MT_move_to_collection_recursive" :
2431 "OBJECT_MT_link_to_collection_recursive",
2454 PointerRNA op_ptr = layout.
op(
"WM_OT_search_single_menu",
2508 ot->name =
"Move to Collection";
2509 ot->description =
"Move objects to a collection";
2510 ot->idname =
"OBJECT_OT_move_to_collection";
2526 "Session UID of the collection to move to",
2530 prop =
RNA_def_boolean(
ot->srna,
"is_new",
false,
"New",
"Move objects to a new collection");
2533 "new_collection_name",
2537 "Name of the newly added collection");
2547 ot->name =
"Link to Collection";
2548 ot->description =
"Link objects to a collection";
2549 ot->idname =
"OBJECT_OT_link_to_collection";
2565 "Session UID of the collection to link to",
2569 prop =
RNA_def_boolean(
ot->srna,
"is_new",
false,
"New",
"Link objects to a new collection");
2572 "new_collection_name",
2576 "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)
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)
Collection * BKE_collection_from_session_uid(Scene *scene, uint64_t session_uid)
void BKE_collection_new_name_get(Collection *collection_parent, char r_name[256])
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 IDP_float_set(prop, value)
#define IDP_double_set(prop, value)
#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)
const char * BKE_id_name(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 bool BLI_listbase_is_empty(const ListBase *lb)
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)
void BLI_path_slash_native(char *path) ATTR_NONNULL(1)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY_UTF8(dst, src)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define BLT_I18NCONTEXT_DEFAULT_BPYRNA
#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_EXCLUDE
@ BASE_ENABLED_AND_VISIBLE_IN_DEFAULT_VIEWPORT
@ LAYER_COLLECTION_HIDE_VIEWPORT
@ LAYER_COLLECTION_HAS_OBJECTS
@ NODES_MODIFIER_HIDE_DATABLOCK_SELECTOR
@ NODES_MODIFIER_HIDE_MANAGE_PANEL
#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)
#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
#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 bool endswith(StringRef suffix) const
constexpr const char * c_str() const
void append(const T &value)
float4 load_data(StoredFloat4 data)
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)
void * MEM_callocN(size_t len, const char *str)
AssetLibraryReference all_library_reference()
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)
void storage_fetch_blocking(const AssetLibraryReference &library_reference, const bContext &C)
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, const std::optional< eAssetImportMethod > import_method=std::nullopt)
bool ensure_selection_domain(ToolSettings *ts, Object *object)
void OBJECT_OT_paths_update_visible(wmOperatorType *ot)
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
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 void flush_pose_selection_to_bone(Object &ob)
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 void move_to_collection_menu_draw(Menu *menu, Collection *collection, int icon)
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)
static void move_to_collection_recursive_menu_draw(const bContext *, Menu *menu)
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 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 link_to_collection_menu_register()
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 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)
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)
void move_to_collection_menu_register()
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)
static void flush_bone_selection_to_pose(Object &ob)
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)
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)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
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)
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)
std::string RNA_string_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
void use_property_decorate_set(bool is_sep)
blender::wm::OpCallContext operator_context() const
void operator_context_set(blender::wm::OpCallContext opcontext)
uiLayout & column(bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void context_ptr_set(blender::StringRef name, const PointerRNA *ptr)
uiLayout & row(bool align)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::wm::OpCallContext context, eUI_Item_Flag flag)
void menu(MenuType *mt, std::optional< blender::StringRef > name, int icon)
void use_property_split_set(bool value)
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)
const PointerRNA * context_ptr_get(const blender::StringRef name, const StructRNA *type) const
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_menu_name_call(bContext *C, const char *menu_name, blender::wm::OpCallContext context)
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_)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
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, std::optional< std::string > message)