Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/object/object_add.c
| Show First 20 Lines • Show All 601 Lines • ▼ Show 20 Lines | Object *ED_object_add_type_with_obdata(bContext *C, | ||||
| const bool enter_editmode, | const bool enter_editmode, | ||||
| const ushort local_view_bits, | const ushort local_view_bits, | ||||
| ID *obdata) | ID *obdata) | ||||
| { | { | ||||
| Main *bmain = CTX_data_main(C); | Main *bmain = CTX_data_main(C); | ||||
| Scene *scene = CTX_data_scene(C); | Scene *scene = CTX_data_scene(C); | ||||
| ViewLayer *view_layer = CTX_data_view_layer(C); | ViewLayer *view_layer = CTX_data_view_layer(C); | ||||
| /* For as long scene has editmode... */ | |||||
| { | { | ||||
| Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); | Object *obedit = OBEDIT_FROM_VIEW_LAYER(view_layer); | ||||
| if (obedit != NULL) { | if (obedit != NULL) { | ||||
| ED_object_editmode_exit_ex(bmain, scene, obedit, EM_FREEDATA); | ED_object_editmode_exit_ex(bmain, scene, obedit, EM_FREEDATA); | ||||
| } | } | ||||
| } | } | ||||
| /* deselects all, sets active object */ | /* deselects all, sets active object */ | ||||
| ▲ Show 20 Lines • Show All 2,740 Lines • ▼ Show 20 Lines | static int object_add_named_exec(bContext *C, wmOperator *op) | ||||
| basen->object->restrictflag &= ~OB_RESTRICT_VIEWPORT; | basen->object->restrictflag &= ~OB_RESTRICT_VIEWPORT; | ||||
| int mval[2]; | int mval[2]; | ||||
| if (object_add_drop_xy_get(C, op, &mval)) { | if (object_add_drop_xy_get(C, op, &mval)) { | ||||
| ED_object_location_from_view(C, basen->object->loc); | ED_object_location_from_view(C, basen->object->loc); | ||||
| ED_view3d_cursor3d_position(C, mval, false, basen->object->loc); | ED_view3d_cursor3d_position(C, mval, false, basen->object->loc); | ||||
| } | } | ||||
| /* object_add_duplicate_internal() doesn't deselect other objects, unlike object_add_common() or | |||||
| * BKE_view_layer_base_deselect_all(). */ | |||||
| ED_object_base_deselect_all(view_layer, NULL, BA_DESELECT); | |||||
| ED_object_base_select(basen, BA_SELECT); | ED_object_base_select(basen, BA_SELECT); | ||||
| ED_object_base_activate(C, basen); | ED_object_base_activate(C, basen); | ||||
| copy_object_set_idnew(C); | copy_object_set_idnew(C); | ||||
| /* TODO(sergey): Only update relations for the current scene. */ | /* TODO(sergey): Only update relations for the current scene. */ | ||||
| DEG_relations_tag_update(bmain); | DEG_relations_tag_update(bmain); | ||||
| ▲ Show 20 Lines • Show All 190 Lines • Show Last 20 Lines | |||||