Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_add.c
| Show First 20 Lines • Show All 2,249 Lines • ▼ Show 20 Lines | static int convert_exec(bContext *C, wmOperator *op) | ||||
| ListBase selected_editable_bases; | ListBase selected_editable_bases; | ||||
| CTX_data_selected_editable_bases(C, &selected_editable_bases); | CTX_data_selected_editable_bases(C, &selected_editable_bases); | ||||
| /* Ensure we get all meshes calculated with a sufficient data-mask, | /* Ensure we get all meshes calculated with a sufficient data-mask, | ||||
| * needed since re-evaluating single modifiers causes bugs if they depend | * needed since re-evaluating single modifiers causes bugs if they depend | ||||
| * on other objects data masks too, see: T50950. */ | * on other objects data masks too, see: T50950. */ | ||||
| { | { | ||||
| for (CollectionPointerLink *link = selected_editable_bases.first; link; link = link->next) { | LISTBASE_FOREACH (CollectionPointerLink *, link, &selected_editable_bases) { | ||||
| Base *base = link->ptr.data; | Base *base = link->ptr.data; | ||||
| Object *ob = base->object; | Object *ob = base->object; | ||||
| /* The way object type conversion works currently (enforcing conversion of *all* objects | /* The way object type conversion works currently (enforcing conversion of *all* objects | ||||
| * using converted object-data, even some un-selected/hidden/another scene ones, | * using converted object-data, even some un-selected/hidden/another scene ones, | ||||
| * sounds totally bad to me. | * sounds totally bad to me. | ||||
| * However, changing this is more design than bug-fix, not to mention convoluted code below, | * However, changing this is more design than bug-fix, not to mention convoluted code below, | ||||
| * so that will be for later. | * so that will be for later. | ||||
| Show All 10 Lines | * on other objects data masks too, see: T50950. */ | ||||
| } | } | ||||
| CustomData_MeshMasks customdata_mask_prev = scene->customdata_mask; | CustomData_MeshMasks customdata_mask_prev = scene->customdata_mask; | ||||
| CustomData_MeshMasks_update(&scene->customdata_mask, &CD_MASK_MESH); | CustomData_MeshMasks_update(&scene->customdata_mask, &CD_MASK_MESH); | ||||
| BKE_scene_graph_update_tagged(depsgraph, bmain); | BKE_scene_graph_update_tagged(depsgraph, bmain); | ||||
| scene->customdata_mask = customdata_mask_prev; | scene->customdata_mask = customdata_mask_prev; | ||||
| } | } | ||||
| for (CollectionPointerLink *link = selected_editable_bases.first; link; link = link->next) { | LISTBASE_FOREACH (CollectionPointerLink *, link, &selected_editable_bases) { | ||||
| Object *newob = NULL; | Object *newob = NULL; | ||||
| Base *base = link->ptr.data; | Base *base = link->ptr.data; | ||||
| Object *ob = base->object; | Object *ob = base->object; | ||||
| if (ob->flag & OB_DONE || !IS_TAGGED(ob->data)) { | if (ob->flag & OB_DONE || !IS_TAGGED(ob->data)) { | ||||
| if (ob->type != target) { | if (ob->type != target) { | ||||
| base->flag &= ~SELECT; | base->flag &= ~SELECT; | ||||
| ob->flag &= ~SELECT; | ob->flag &= ~SELECT; | ||||
| ▲ Show 20 Lines • Show All 723 Lines • Show Last 20 Lines | |||||