123 #define INDEX_UNSET -1
124 int par1, par2, par3, par4;
175 for (
Nurb *nu = editnurb->
first; nu !=
NULL; nu = nu->next) {
178 for (
int nurb_index = 0; nurb_index < nu->pntsu; nurb_index++, bezt++, curr_index++) {
200 const int num_points = nu->pntsu * nu->pntsv;
201 for (
int nurb_index = 0; nurb_index < num_points; nurb_index++, bp++, curr_index++) {
229 for (
int curr_index = 0; curr_index < num_points; curr_index++, bp++) {
302 ot->
name =
"Make Vertex Parent";
303 ot->
description =
"Parent selected objects to the selected vertices";
304 ot->
idname =
"OBJECT_OT_vertex_parent_set";
326 "Completely clear the parenting relationship, including involved modifiers if any"},
328 "CLEAR_KEEP_TRANSFORM",
330 "Clear and Keep Transformation",
331 "As 'Clear Parent', but keep the current visual transformations of the object"},
335 "Clear Parent Inverse",
336 "Reset the transform corrections applied to the parenting relationship, does not remove "
445 ot->
name =
"Clear Parent";
447 ot->
idname =
"OBJECT_OT_parent_clear";
497 {
PAR_CURVE,
"CURVE", 0,
"Curve Deform",
""},
513 const bool keep_transform,
514 const int vert_par[3])
586 if (keep_transform) {
684 ob->
par1 = vert_par[0];
697 const bool is_armature_parent =
ELEM(
702 float cmat[4][4], vec[3];
777 const float *co_find = child->
obmat[3];
779 KDTreeNearest_3d nearest[3];
782 tot = BLI_kdtree_3d_find_nearest_n(
tree, co_find, nearest, 3);
786 vert_par[0] = nearest[0].index;
787 vert_par[1] = nearest[1].index;
788 vert_par[2] = nearest[2].index;
793 vert_par[0] = BLI_kdtree_3d_find_nearest(
tree, co_find,
NULL);
813 if (ob == parenting_context->
par) {
821 parenting_context->
scene,
823 parenting_context->
par,
838 struct KDTree_3d *
tree)
840 int vert_par[3] = {0, 0, 0};
843 if (ob == parenting_context->
par) {
852 parenting_context->
scene,
854 parenting_context->
par,
876 BLI_kdtree_3d_free(
tree);
881 BLI_kdtree_3d_free(
tree);
933 IFACE_(
"Object (Keep Transform)"),
944 IFACE_(
"Object (Without Inverse)"),
946 "OBJECT_OT_parent_no_inverse_set",
951 IFACE_(
"Object (Keep Transform Without Inverse)"),
953 "OBJECT_OT_parent_no_inverse_set",
959 } has_children_of_type = {0};
962 if (child == parent) {
966 has_children_of_type.mesh =
true;
969 has_children_of_type.gpencil =
true;
972 has_children_of_type.curves =
true;
980 if (!has_children_of_type.gpencil) {
983 if (has_children_of_type.mesh || has_children_of_type.gpencil) {
998 if (has_children_of_type.curves) {
999 uiItemO(layout,
"Object (Attach Curves to Surface)", ICON_NONE,
"CURVES_OT_surface_set");
1029 if (
STREQ(prop_id,
"xmirror")) {
1043 ot->
name =
"Make Parent";
1045 ot->
idname =
"OBJECT_OT_parent_set";
1062 "Apply weights symmetrically along X axis, for Envelope/Automatic vertex groups creation");
1067 "Apply transformation before parenting");
1099 if (keep_transform) {
1106 memset(ob->loc, 0,
sizeof(
float[3]));
1122 ot->
name =
"Make Parent without Inverse";
1123 ot->
description =
"Set the object's parenting without setting the inverse parent correction";
1124 ot->
idname =
"OBJECT_OT_parent_no_inverse_set";
1138 "Preserve the world transform throughout parenting");
1155 "CLEAR_KEEP_TRANSFORM",
1157 "Clear and Keep Transformation (Clear Track)",
1180 for (con = ob->constraints.last; con; con = pcon) {
1205 ot->
name =
"Clear Track";
1206 ot->
description =
"Clear tracking constraint or flag from object";
1207 ot->
idname =
"OBJECT_OT_track_clear";
1328 ot->
description =
"Make the object track another object, using various methods/constraints";
1329 ot->
idname =
"OBJECT_OT_track_set";
1379 if (scene_to ==
NULL) {
1478 bool is_cycle =
false;
1479 bool is_lib =
false;
1489 Object *ob_dst = base_dst->object;
1491 if (ob_src != ob_dst) {
1493 obdata_id = ob_dst->
data;
1499 obdata_id = ob_src->
data;
1501 ob_dst->
data = obdata_id;
1519 if (ob_dst->data && ob_src->data) {
1536 for (collection_node = ob_collections; collection_node;
1537 collection_node = collection_node->
next) {
1538 if (ob_dst->instance_collection != collection_node->
link) {
1548 ob_dst->instance_collection = ob_src->instance_collection;
1549 if (ob_dst->instance_collection) {
1550 id_us_plus(&ob_dst->instance_collection->id);
1561 Curve *cu_src = ob_src->data;
1562 Curve *cu_dst = ob_dst->data;
1569 if (cu_dst->
vfont) {
1606 if (ob_collections) {
1632 ot->
name =
"Link Objects to Scene";
1634 ot->
idname =
"OBJECT_OT_make_links_scene";
1654 {
MAKE_LINKS_OBDATA,
"OBDATA", 0,
"Link Object Data",
"Replace assigned Object Data"},
1659 "Link Animation Data",
1660 "Replace assigned Animation Data"},
1661 {
MAKE_LINKS_GROUP,
"GROUPS", 0,
"Link Collections",
"Replace assigned Collections"},
1665 "Link Instance Collection",
1666 "Replace assigned Collection Instance"},
1667 {
MAKE_LINKS_FONTS,
"FONTS", 0,
"Link Fonts to Text",
"Replace Text object Fonts"},
1673 "Copy Grease Pencil Effects",
1674 "Replace Grease Pencil Effects"},
1679 ot->
name =
"Link/Transfer Data";
1680 ot->
description =
"Transfer data from active object to selected objects";
1681 ot->
idname =
"OBJECT_OT_make_links_data";
1710 const bool do_collection)
1712 if (do_collection) {
1729 const bool copy_collections,
1730 const bool is_master_collection)
1734 if (copy_collections && !is_master_collection) {
1738 collection =
ID_NEW_SET(collection, collection_new);
1760 for (; child !=
NULL; child = child_next) {
1761 child_next = child->
next;
1765 if (is_master_collection && copy_collections && child->
collection != collection_child_new) {
1773 if (child == orig_child_last) {
1916 printf(
"ERROR %s: can't copy %s\n", __func__,
id->
name);
1975 ID *id_obdata = (
ID *)ob->data;
1981 ID *id_act = (
ID *)adt->action;
1999 for (
a = 1;
a <= ob->totcol;
a++) {
2050 ID *data_id = (
ID *)object->data;
2065 ID *data_id = (
ID *)object->data;
2084 bool changed =
false;
2108 for (strip = strips->
first; strip; strip = strip->
next) {
2171 "Orphan library objects added to the current scene to avoid loss");
2185 for (psys = ob->particlesystem.first; psys; psys = psys->
next) {
2190 for (
a = 0;
a < ob->totcol;
a++) {
2199 for (
a = 0;
a < ob->totcol;
a++) {
2210 ID *ob_data = ob->data;
2230 "SELECT_OBDATA_MATERIAL",
2232 "Selected Objects, Data and Materials",
2240 ot->
description =
"Make library linked data-blocks local to this file";
2241 ot->
idname =
"OBJECT_OT_make_local";
2285 bool is_override_instancing_object =
false;
2287 bool user_overrides_from_selected_objects =
false;
2294 "Collection '%s' (instantiated by the active object) is not overridable",
2300 is_override_instancing_object =
true;
2301 user_overrides_from_selected_objects =
false;
2305 const uint collection_session_uuid = *((
const uint *)&i);
2309 "Could not find an overridable root hierarchy for object '%s'",
2314 &collection_session_uuid,
2315 sizeof(collection_session_uuid),
2316 offsetof(
ID, session_uuid));
2317 id_root = &collection->
id;
2318 user_overrides_from_selected_objects =
true;
2324 id_root = &obact->
id;
2325 user_overrides_from_selected_objects =
true;
2329 bool is_active_override =
false;
2333 is_active_override = is_active_override || (&ob_iter->id == id_root);
2343 if (is_active_override) {
2347 const bool do_fully_editable = !user_overrides_from_selected_objects;
2349 GSet *user_overrides_objects_uids = do_fully_editable ?
NULL :
2354 if (do_fully_editable) {
2357 else if (user_overrides_from_selected_objects) {
2379 if (user_overrides_objects_uids !=
NULL) {
2395 ID *id_root_override;
2406 if (!do_fully_editable) {
2426 if (is_override_instancing_object) {
2433 switch (
GS(id_root->
name)) {
2492 int potential_root_collections_num = 0;
2501 if (potential_root_collections_num == 0) {
2502 collection_session_uuid = collection->id.session_uuid;
2504 potential_root_collections_num++;
2508 if (potential_root_collections_num <= 1) {
2515 "Too many potential root collections (%d) for the override hierarchy, "
2516 "please use the Outliner instead",
2517 potential_root_collections_num);
2536 ot->
name =
"Make Library Override";
2538 "Create a local override of the selected linked objects, and their hierarchy of "
2540 ot->
idname =
"OBJECT_OT_make_override_library";
2557 "Override Collection",
2558 "Session UUID of the directly linked collection containing the selected "
2559 "object, to make an override from",
2597 ot->
name =
"Reset Library Override";
2598 ot->
description =
"Reset the selected local overrides to their linked references values";
2599 ot->
idname =
"OBJECT_OT_reset_override_library";
2625 for (todo_object_iter = todo_objects; todo_object_iter !=
NULL;
2626 todo_object_iter = todo_object_iter->next) {
2627 Object *ob_iter = todo_object_iter->link;
2629 bool do_remap_active =
false;
2630 if (
OBACT(view_layer) == ob_iter) {
2631 do_remap_active =
true;
2637 if (do_remap_active) {
2640 if (basact !=
NULL) {
2641 view_layer->
basact = basact;
2663 ot->
name =
"Clear Library Override";
2665 "Delete the selected local overrides and relink their usages to the linked data-blocks if "
2666 "possible, else reset them and mark them as non editable";
2667 ot->
idname =
"OBJECT_OT_clear_override_library";
2695 const bool copy_collections =
false;
2696 bool update_deps =
false;
2750 ot->
name =
"Make Single User";
2752 ot->
idname =
"OBJECT_OT_make_single_user";
2775 "Make object animation data local to each object");
2779 "Object Data Animation",
2780 "Make object data (mesh, curve etc.) animation data local to each object");
2796 mat_slot =
max_ii(mat_slot, 1);
2802 const char *tooltip =
TIP_(
"Drop %s on %s (slot %d, replacing %s)");
2806 const char *tooltip =
TIP_(
"Drop %s on %s (slot %d)");
2817 mat_slot =
max_ii(mat_slot, 1);
2840 ot->
name =
"Drop Named Material on Object";
2841 ot->
idname =
"OBJECT_OT_drop_named_material";
2899 ot->
idname =
"OBJECT_OT_unlink_data";
Blender kernel action and pose functionality.
struct bPoseChannel * BKE_pose_channel_active_if_layer_visible(struct Object *ob)
void BKE_animdata_duplicate_id_action(struct Main *bmain, struct ID *id, uint duplicate_flags)
bool BKE_animdata_copy_id(struct Main *bmain, struct ID *id_to, struct ID *id_from, int flag)
struct AnimData * BKE_animdata_from_id(const struct ID *id)
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, bool do_id_user)
Camera data-block and utility functions.
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_END
#define FOREACH_SCENE_OBJECT_END
bool BKE_collection_object_add(struct Main *bmain, struct Collection *collection, struct Object *ob)
bool BKE_collection_has_object(struct Collection *collection, const struct Object *ob)
bool BKE_collection_has_object_recursive(struct Collection *collection, struct Object *ob)
bool BKE_collection_child_remove(struct Main *bmain, struct Collection *parent, struct Collection *child)
bool BKE_collection_child_add_no_sync(struct Collection *parent, struct Collection *child)
#define FOREACH_COLLECTION_OBJECT_RECURSIVE_BEGIN(_collection, _object)
void BKE_scene_objects_iterator_end(struct BLI_Iterator *iter)
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
bool BKE_constraint_remove(ListBase *list, struct bConstraint *con)
struct bConstraint * BKE_constraint_add_for_object(struct Object *ob, const char *name, short type)
void BKE_constraint_target_matrix_get(struct Depsgraph *depsgraph, struct Scene *scene, struct bConstraint *con, int index, short ownertype, void *ownerdata, float mat[4][4], float ctime)
struct Scene * CTX_data_scene(const bContext *C)
struct Object * CTX_data_edit_object(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Collection * CTX_data_collection(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct View3D * CTX_wm_view3d(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
Low-level operations for curves that cannot be defined in the C++ header yet.
display list (or rather multi purpose list) stuff.
void BKE_displist_make_curveTypes(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *ob, bool for_render)
void BKE_editmesh_looptri_and_normals_calc(BMEditMesh *em)
struct FModifier * add_fmodifier(ListBase *modifiers, int type, struct FCurve *owner_fcu)
#define FOREACH_OBJECT_FLAG_END
#define FOREACH_SELECTED_OBJECT_BEGIN(_view_layer, _v3d, _instance)
void BKE_view_layer_selected_objects_tag(struct ViewLayer *view_layer, int tag)
bool BKE_view_layer_has_collection(const struct ViewLayer *view_layer, const struct Collection *collection)
void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
void BKE_main_collection_sync_remap(const struct Main *bmain)
#define FOREACH_OBJECT_FLAG_BEGIN(scene, _view_layer, _v3d, flag, _instance)
#define FOREACH_SELECTED_OBJECT_END
void BKE_main_id_newptr_and_tag_clear(struct Main *bmain)
void BKE_library_make_local(struct Main *bmain, const struct Library *lib, struct GHash *old_to_new_ids, bool untagged_only, bool set_fake)
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, int flag)
void BKE_main_id_tag_all(struct Main *mainvar, int tag, bool value)
bool BKE_id_is_editable(const struct Main *bmain, const struct ID *id)
void id_us_min(struct ID *id)
void id_us_plus(struct ID *id)
void BKE_id_delete(struct Main *bmain, void *idv) ATTR_NONNULL()
#define MAIN_ID_SESSION_UUID_UNSET
bool BKE_lib_override_library_create(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct Library *owner_library, struct ID *id_root_reference, struct ID *id_hierarchy_root_reference, struct ID *id_instance_hint, struct ID **r_id_root_override, const bool do_fully_editable)
bool BKE_lib_override_library_is_hierarchy_leaf(struct Main *bmain, struct ID *id)
void BKE_lib_override_library_id_reset(struct Main *bmain, struct ID *id_root, bool do_reset_system_override)
void BKE_library_foreach_ID_link(struct Main *bmain, struct ID *id, LibraryIDLinkCallback callback, void *user_data, int flag)
@ ID_REMAP_SKIP_INDIRECT_USAGE
void void BKE_libblock_remap(struct Main *bmain, void *old_idv, void *new_idv, short remap_flags) ATTR_NONNULL(1
void BKE_libblock_relink_to_newid(struct Main *bmain, struct ID *id, int remap_flag) ATTR_NONNULL()
General operations, lookup, etc. for blender lights.
General operations for probes.
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
General operations, lookup, etc. for materials.
struct Material *** BKE_object_material_array_p(struct Object *ob)
struct Material * BKE_object_material_get(struct Object *ob, short act)
void BKE_object_materials_test(struct Main *bmain, struct Object *ob, struct ID *id)
void BKE_object_material_assign(struct Main *bmain, struct Object *ob, struct Material *ma, short act, int assign_type)
@ BKE_MAT_ASSIGN_USERPREF
struct Object * BKE_modifiers_is_deformed_by_armature(struct Object *ob)
struct Object * BKE_modifiers_is_deformed_by_curve(struct Object *ob)
void BKE_modifier_free(struct ModifierData *md)
void BKE_modifier_remove_from_list(struct Object *ob, struct ModifierData *md)
struct Object * BKE_modifiers_is_deformed_by_lattice(struct Object *ob)
General operations, lookup, etc. for blender objects.
bool BKE_object_parent_loop_check(const struct Object *parent, const struct Object *ob)
void BKE_object_link_modifiers(struct Object *ob_dst, const struct Object *ob_src)
struct LinkNode * BKE_object_groups(struct Main *bmain, struct Scene *scene, struct Object *ob)
void BKE_object_groups_clear(struct Main *bmain, struct Scene *scene, struct Object *object)
void BKE_object_apply_parent_inverse(struct Object *ob)
void BKE_object_apply_mat4(struct Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
void BKE_object_workob_calc_parent(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct Object *workob)
struct KDTree_3d * BKE_object_as_kdtree(struct Object *ob, int *r_tot)
int BKE_object_scenes_users_get(struct Main *bmain, struct Object *ob)
General operations for point clouds.
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_graph_update_tagged(struct Depsgraph *depsgraph, struct Main *bmain)
General operations for speakers.
#define BLI_assert_msg(a, msg)
bool BLI_gset_haskey(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
GSet * BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghashutil_intcmp(const void *a, const void *b)
unsigned int BLI_ghashutil_inthash_p(const void *ptr)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
A KD-tree for nearest neighbor search.
void BLI_kdtree_nd_() free(KDTree *tree)
void BLI_linklist_free(LinkNode *list, LinkNodeFreeFP freefunc)
#define BLI_linklist_prepend_alloca(listp, ptr)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void * BLI_listbase_bytes_find(const ListBase *listbase, const void *bytes, size_t bytes_size, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int max_ii(int a, int b)
MINLINE int min_iii(int a, int b, int c)
void unit_m4(float m[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_v3_int(int r[3], const int a[3])
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define POINTER_FROM_UINT(i)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
@ ID_RECALC_COPY_ON_WRITE
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_OVERRIDABLE_LIBRARY(_id)
#define ID_IS_LINKED(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
#define ID_NEW_SET(_id, _idn)
@ IDOVERRIDE_LIBRARY_FLAG_SYSTEM_DEFINED
@ FMODIFIER_TYPE_GENERATOR
@ BONE_RELATIVE_PARENTING
Object groups, one object can be in many groups at once.
@ CONSTRAINT_TYPE_TRACKTO
@ CONSTRAINT_TYPE_LOCKTRACK
@ CONSTRAINT_TYPE_FOLLOWPATH
@ CONSTRAINT_TYPE_DAMPTRACK
@ CONSTRAINT_OBTYPE_OBJECT
#define BEZT_ISSEL_ANY_HIDDENHANDLES(v3d, bezt)
Object is a sort of wrapper for general info.
#define OB_TYPE_SUPPORT_PARVERT(_type)
#define OB_TYPE_SUPPORT_MATERIAL(_type)
#define FIRSTBASE(_view_layer)
#define BASACT(_view_layer)
#define OBACT(_view_layer)
@ RPT_ERROR_INVALID_INPUT
#define ARM_GROUPS_ENVELOPE
#define GP_PAR_ARMATURE_NAME
#define GP_PAR_ARMATURE_AUTO
void EDBM_mesh_load(struct Main *bmain, struct Object *ob)
void EDBM_mesh_make(struct Object *ob, int select_mode, bool add_key_index)
struct ModifierData * ED_object_modifier_add(struct ReportList *reports, struct Main *bmain, struct Scene *scene, struct Object *ob, const char *name, int type)
@ CLEAR_PARENT_KEEP_TRANSFORM
void ED_object_shaderfx_link(struct Object *dst, struct Object *src)
void ED_object_base_select(struct Base *base, eObjectSelect_Mode mode)
struct Object * ED_object_active_context(const struct bContext *C)
void ED_object_base_free_and_unlink(struct Main *bmain, struct Scene *scene, struct Object *ob)
bool ED_operator_editsurfcurve(struct bContext *C)
bool ED_operator_object_active_editable(struct bContext *C)
bool ED_operator_editlattice(struct bContext *C)
bool ED_operator_editmesh(struct bContext *C)
bool ED_operator_objectmode(struct bContext *C)
bool ED_operator_objectmode_poll_msg(struct bContext *C)
bool ED_operator_object_active(struct bContext *C)
struct Object * ED_view3d_give_material_slot_under_cursor(struct bContext *C, const int mval[2], int *r_material_slot)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to curves
const EnumPropertyItem * RNA_scene_local_itemf(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, bool *r_free)
#define RNA_ENUM_ITEM_SEPR
void uiItemBooleanO(uiLayout *layout, const char *name, int icon, const char *opname, const char *propname, int value)
struct uiLayout * UI_popup_menu_layout(uiPopupMenu *pup)
void UI_context_active_but_prop_get_templateID(struct bContext *C, struct PointerRNA *r_ptr, struct PropertyRNA **r_prop)
void uiItemFullO_ptr(uiLayout *layout, struct wmOperatorType *ot, const char *name, int icon, struct IDProperty *properties, wmOperatorCallContext context, int flag, struct PointerRNA *r_opptr)
void uiItemO(uiLayout *layout, const char *name, int icon, const char *opname)
void UI_popup_menu_end(struct bContext *C, struct uiPopupMenu *pup)
void uiItemEnumO_ptr(uiLayout *layout, struct wmOperatorType *ot, const char *name, int icon, const char *propname, int value)
uiPopupMenu * UI_popup_menu_begin(struct bContext *C, const char *title, int icon) ATTR_NONNULL()
#define ND_LIB_OVERRIDE_CHANGED
void ED_object_vgroup_calc_from_armature(ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, Object *par, const int mode, const bool mirror)
#define BM_elem_flag_test(ele, hflag)
#define BM_ITER_MESH_INDEX(ele, iter, bm, itype, indexvar)
const Depsgraph * depsgraph
ListBase * object_editcurve_get(Object *ob)
bool ED_gpencil_add_armature_weights(const bContext *C, ReportList *reports, Object *ob, Object *ob_arm, int mode)
bool ED_gpencil_add_armature(const bContext *C, ReportList *reports, Object *ob, Object *ob_arm)
bool ED_gpencil_add_lattice_modifier(const bContext *C, ReportList *reports, Object *ob, Object *ob_latt)
bAction * ED_id_action_ensure(Main *bmain, ID *id)
FCurve * ED_action_fcurve_ensure(struct Main *bmain, struct bAction *act, const char group[], struct PointerRNA *ptr, const char rna_path[], const int array_index)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
static void single_object_action_users(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, const int flag)
static int make_local_exec(bContext *C, wmOperator *op)
void OBJECT_OT_clear_override_library(wmOperatorType *ot)
static bool parent_set_vertex_parent(bContext *C, struct ParentingContext *parenting_context)
static int object_track_clear_exec(bContext *C, wmOperator *op)
static void make_local_material_tag(Material *ma)
static int track_set_exec(bContext *C, wmOperator *op)
static int parent_set_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static void single_objectdata_action_users(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, const int flag)
void ED_object_single_obdata_user(Main *bmain, Scene *scene, Object *ob)
static int make_links_scene_exec(bContext *C, wmOperator *op)
static bool reset_clear_override_library_poll(bContext *C)
void OBJECT_OT_parent_clear(wmOperatorType *ot)
static const EnumPropertyItem prop_make_track_types[]
void OBJECT_OT_reset_override_library(wmOperatorType *ot)
static int clear_override_library_exec(bContext *C, wmOperator *UNUSED(op))
static void make_local_animdata_tag(AnimData *adt)
void ED_object_parent_clear(Object *ob, const int type)
static bool make_override_library_poll(bContext *C)
static bool make_override_library_object_overridable_check(Main *bmain, Object *object)
static Collection * single_object_users_collection(Main *bmain, Scene *scene, Collection *collection, const int flag, const bool copy_collections, const bool is_master_collection)
static bool parent_set_vertex_parent_with_kdtree(bContext *C, struct ParentingContext *parenting_context, struct KDTree_3d *tree)
void ED_object_parent(Object *ob, Object *par, const int type, const char *substr)
void OBJECT_OT_track_set(wmOperatorType *ot)
static int object_unlink_data_exec(bContext *C, wmOperator *op)
void OBJECT_OT_track_clear(wmOperatorType *ot)
static int make_override_library_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
@ MAKE_SINGLE_USER_SELECTED
void OBJECT_OT_unlink_data(wmOperatorType *ot)
static bool parent_set_nonvertex_parent(bContext *C, struct ParentingContext *parenting_context)
void OBJECT_OT_make_override_library(wmOperatorType *ot)
static void object_remove_parent_deform_modifiers(Object *ob, const Object *par)
static int parent_clear_exec(bContext *C, wmOperator *op)
@ MAKE_LINKS_DUPLICOLLECTION
char * ED_object_ot_drop_named_material_tooltip(bContext *C, const char *name, const int mval[2])
static int reset_override_library_exec(bContext *C, wmOperator *UNUSED(op))
static int make_single_user_exec(bContext *C, wmOperator *op)
void OBJECT_OT_make_links_scene(wmOperatorType *ot)
static int parent_set_invoke_menu(bContext *C, wmOperatorType *ot)
void OBJECT_OT_parent_no_inverse_set(wmOperatorType *ot)
static void single_obdata_users(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, const int flag)
static void single_object_users(Main *bmain, Scene *scene, View3D *v3d, const int flag, const bool copy_collections)
static void single_mat_users(Main *bmain, Scene *scene, ViewLayer *view_layer, View3D *v3d, const int flag)
static int drop_named_material_invoke(bContext *C, wmOperator *op, const wmEvent *event)
EnumPropertyItem prop_clear_parent_types[]
static bool make_local_all__instance_indirect_unused(Main *bmain, ViewLayer *view_layer, Collection *collection)
static int make_override_library_exec(bContext *C, wmOperator *op)
void ED_object_single_user(Main *bmain, Scene *scene, Object *ob)
static void make_local_animdata_tag_strips(ListBase *strips)
void OBJECT_OT_make_single_user(wmOperatorType *ot)
static int make_links_data_exec(bContext *C, wmOperator *op)
bool ED_object_parent_set(ReportList *reports, const bContext *C, Scene *scene, Object *const ob, Object *const par, int partype, const bool xmirror, const bool keep_transform, const int vert_par[3])
void OBJECT_OT_drop_named_material(wmOperatorType *ot)
void OBJECT_OT_vertex_parent_set(wmOperatorType *ot)
static void tag_localizable_objects(bContext *C, const int mode)
void OBJECT_OT_make_links_data(wmOperatorType *ot)
static int vertex_parent_set_exec(bContext *C, wmOperator *op)
static int parent_set_exec(bContext *C, wmOperator *op)
static bool parent_set_poll_property(const bContext *UNUSED(C), wmOperator *op, const PropertyRNA *prop)
@ CLEAR_TRACK_KEEP_TRANSFORM
void OBJECT_OT_make_local(wmOperatorType *ot)
static int parent_noinv_set_exec(bContext *C, wmOperator *op)
static void libblock_relink_collection(Main *bmain, Collection *collection, const bool do_collection)
static bool allow_make_links_data(const int type, Object *ob_src, Object *ob_dst)
@ MAKE_LOCAL_SELECT_OBDATA_MATERIAL
@ MAKE_LOCAL_SELECT_OBDATA
void OBJECT_OT_parent_set(wmOperatorType *ot)
static int tag_localizable_looper(LibraryIDLinkCallbackData *cb_data)
EnumPropertyItem prop_make_parent_types[]
static void parent_set_vert_find(KDTree_3d *tree, Object *child, int vert_par[3], bool is_tri)
static bool vertex_parent_set_poll(bContext *C)
static const EnumPropertyItem prop_clear_track_types[]
static bool single_data_needs_duplication(ID *id)
void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value)
const char * RNA_property_identifier(const PropertyRNA *prop)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_int_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)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem DummyRNA_NULL_items[]
struct Object * focus_object
struct CameraDOFSettings dof
struct Collection * collection
struct CollectionChild * next
const float * anim_path_accum_length
struct ID * hierarchy_root
IDOverrideLibrary * override_library
unsigned int session_uuid
struct EditLatt * editlatt
struct BMEditMesh * edit_mesh
struct ModifierData * next
struct CurveCache * curve_cache
struct Collection * instance_collection
struct ParticleSystem * next
struct PropertyRNA * prop
struct Collection * master_collection
struct ToolSettings * toolsettings
struct bConstraint * prev
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
bool(* poll_property)(const struct bContext *C, struct wmOperator *op, const PropertyRNA *prop) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
struct wmOperatorType * type
void WM_cursor_wait(bool val)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
ID * WM_operator_properties_id_lookup_from_name_or_session_uuid(Main *bmain, PointerRNA *ptr, const ID_Type type)
void WM_operator_properties_id_lookup(wmOperatorType *ot, const bool add_name_prop)
int WM_operator_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_operator_props_popup_confirm(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))