Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_relations.c
| Show First 20 Lines • Show All 1,548 Lines • ▼ Show 20 Lines | |||||
| enum { | enum { | ||||
| MAKE_LINKS_OBDATA = 1, | MAKE_LINKS_OBDATA = 1, | ||||
| MAKE_LINKS_MATERIALS = 2, | MAKE_LINKS_MATERIALS = 2, | ||||
| MAKE_LINKS_ANIMDATA = 3, | MAKE_LINKS_ANIMDATA = 3, | ||||
| MAKE_LINKS_GROUP = 4, | MAKE_LINKS_GROUP = 4, | ||||
| MAKE_LINKS_DUPLICOLLECTION = 5, | MAKE_LINKS_DUPLICOLLECTION = 5, | ||||
| MAKE_LINKS_MODIFIERS = 6, | MAKE_LINKS_MODIFIERS = 6, | ||||
| MAKE_LINKS_FONTS = 7, | MAKE_LINKS_FONTS = 7, | ||||
| MAKE_LINKS_SHADERFX = 8, | |||||
| }; | }; | ||||
| /* Return true if make link data is allowed, false otherwise */ | /* Return true if make link data is allowed, false otherwise */ | ||||
| static bool allow_make_links_data(const int type, Object *ob_src, Object *ob_dst) | static bool allow_make_links_data(const int type, Object *ob_src, Object *ob_dst) | ||||
| { | { | ||||
| switch (type) { | switch (type) { | ||||
| case MAKE_LINKS_OBDATA: | case MAKE_LINKS_OBDATA: | ||||
| if (ob_src->type == ob_dst->type && ob_src->type != OB_EMPTY) { | if (ob_src->type == ob_dst->type && ob_src->type != OB_EMPTY) { | ||||
| Show All 19 Lines | case MAKE_LINKS_MODIFIERS: | ||||
| } | } | ||||
| break; | break; | ||||
| case MAKE_LINKS_FONTS: | case MAKE_LINKS_FONTS: | ||||
| if ((ob_src->data != ob_dst->data) && (ob_src->type == OB_FONT) && | if ((ob_src->data != ob_dst->data) && (ob_src->type == OB_FONT) && | ||||
| (ob_dst->type == OB_FONT)) { | (ob_dst->type == OB_FONT)) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| break; | break; | ||||
| case MAKE_LINKS_SHADERFX: | |||||
| if ((ob_src->type == OB_GPENCIL) && (ob_dst->type == OB_GPENCIL)) { | |||||
| return true; | |||||
| } | |||||
| break; | |||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| static int make_links_data_exec(bContext *C, wmOperator *op) | static int make_links_data_exec(bContext *C, wmOperator *op) | ||||
| { | { | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| Main *bmain = CTX_data_main(C); | Main *bmain = CTX_data_main(C); | ||||
| ▲ Show 20 Lines • Show All 115 Lines • ▼ Show 20 Lines | if (ob_src != ob_dst) { | ||||
| } | } | ||||
| cu_dst->vfontbi = cu_src->vfontbi; | cu_dst->vfontbi = cu_src->vfontbi; | ||||
| id_us_plus((ID *)cu_dst->vfontbi); | id_us_plus((ID *)cu_dst->vfontbi); | ||||
| DEG_id_tag_update(&ob_dst->id, | DEG_id_tag_update(&ob_dst->id, | ||||
| ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY | ID_RECALC_ANIMATION); | ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY | ID_RECALC_ANIMATION); | ||||
| break; | break; | ||||
| } | } | ||||
| case MAKE_LINKS_SHADERFX: | |||||
| ED_object_shaderfx_link(ob_dst, ob_src); | |||||
| DEG_id_tag_update(&ob_dst->id, | |||||
| ID_RECALC_TRANSFORM | ID_RECALC_GEOMETRY | ID_RECALC_ANIMATION); | |||||
| break; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| CTX_DATA_END; | CTX_DATA_END; | ||||
| if (type == MAKE_LINKS_GROUP) { | if (type == MAKE_LINKS_GROUP) { | ||||
| if (ob_collections) { | if (ob_collections) { | ||||
| ▲ Show 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | void OBJECT_OT_make_links_data(wmOperatorType *ot) | ||||
| static const EnumPropertyItem make_links_items[] = { | static const EnumPropertyItem make_links_items[] = { | ||||
| {MAKE_LINKS_OBDATA, "OBDATA", 0, "Object Data", ""}, | {MAKE_LINKS_OBDATA, "OBDATA", 0, "Object Data", ""}, | ||||
| {MAKE_LINKS_MATERIALS, "MATERIAL", 0, "Materials", ""}, | {MAKE_LINKS_MATERIALS, "MATERIAL", 0, "Materials", ""}, | ||||
| {MAKE_LINKS_ANIMDATA, "ANIMATION", 0, "Animation Data", ""}, | {MAKE_LINKS_ANIMDATA, "ANIMATION", 0, "Animation Data", ""}, | ||||
| {MAKE_LINKS_GROUP, "GROUPS", 0, "Collection", ""}, | {MAKE_LINKS_GROUP, "GROUPS", 0, "Collection", ""}, | ||||
| {MAKE_LINKS_DUPLICOLLECTION, "DUPLICOLLECTION", 0, "Instance Collection", ""}, | {MAKE_LINKS_DUPLICOLLECTION, "DUPLICOLLECTION", 0, "Instance Collection", ""}, | ||||
| {MAKE_LINKS_MODIFIERS, "MODIFIERS", 0, "Modifiers", ""}, | {MAKE_LINKS_MODIFIERS, "MODIFIERS", 0, "Modifiers", ""}, | ||||
| {MAKE_LINKS_FONTS, "FONTS", 0, "Fonts", ""}, | {MAKE_LINKS_FONTS, "FONTS", 0, "Fonts", ""}, | ||||
| {MAKE_LINKS_SHADERFX, "EFFECTS", 0, "Effects", ""}, | |||||
| {0, NULL, 0, NULL, NULL}, | {0, NULL, 0, NULL, NULL}, | ||||
| }; | }; | ||||
| /* identifiers */ | /* identifiers */ | ||||
| ot->name = "Link Data"; | ot->name = "Link Data"; | ||||
| ot->description = "Apply active object links to other selected objects"; | ot->description = "Apply active object links to other selected objects"; | ||||
| ot->idname = "OBJECT_OT_make_links_data"; | ot->idname = "OBJECT_OT_make_links_data"; | ||||
| ▲ Show 20 Lines • Show All 967 Lines • Show Last 20 Lines | |||||