Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/mesh_wrapper.cc
| Show First 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | Mesh *BKE_mesh_wrapper_from_editmesh_with_coords(BMEditMesh *em, | ||||
| BKE_mesh_runtime_ensure_edit_data(me); | BKE_mesh_runtime_ensure_edit_data(me); | ||||
| me->runtime.wrapper_type = ME_WRAPPER_TYPE_BMESH; | me->runtime.wrapper_type = ME_WRAPPER_TYPE_BMESH; | ||||
| if (cd_mask_extra) { | if (cd_mask_extra) { | ||||
| me->runtime.cd_mask_extra = *cd_mask_extra; | me->runtime.cd_mask_extra = *cd_mask_extra; | ||||
| } | } | ||||
| /* Use edit-mesh directly where possible. */ | /* Use edit-mesh directly where possible. */ | ||||
| me->runtime.is_original = true; | me->runtime.is_original_bmesh = true; | ||||
| me->edit_mesh = static_cast<BMEditMesh *>(MEM_dupallocN(em)); | me->edit_mesh = static_cast<BMEditMesh *>(MEM_dupallocN(em)); | ||||
| me->edit_mesh->is_shallow_copy = true; | me->edit_mesh->is_shallow_copy = true; | ||||
| /* Make sure we crash if these are ever used. */ | /* Make sure we crash if these are ever used. */ | ||||
| #ifdef DEBUG | #ifdef DEBUG | ||||
| me->totvert = INT_MAX; | me->totvert = INT_MAX; | ||||
| me->totedge = INT_MAX; | me->totedge = INT_MAX; | ||||
| ▲ Show 20 Lines • Show All 55 Lines • ▼ Show 20 Lines | switch (static_cast<eMeshWrapperType>(me->runtime.wrapper_type)) { | ||||
| * There is also a performance aspect, where this also assumes that original indices are | * There is also a performance aspect, where this also assumes that original indices are | ||||
| * always needed when converting an edit mesh to a mesh. That might be wrong, but it's not | * always needed when converting an edit mesh to a mesh. That might be wrong, but it's not | ||||
| * harmful. */ | * harmful. */ | ||||
| BKE_mesh_ensure_default_orig_index_customdata_no_check(me); | BKE_mesh_ensure_default_orig_index_customdata_no_check(me); | ||||
| EditMeshData *edit_data = me->runtime.edit_data; | EditMeshData *edit_data = me->runtime.edit_data; | ||||
| if (edit_data->vertexCos) { | if (edit_data->vertexCos) { | ||||
| BKE_mesh_vert_coords_apply(me, edit_data->vertexCos); | BKE_mesh_vert_coords_apply(me, edit_data->vertexCos); | ||||
| me->runtime.is_original = false; | me->runtime.is_original_bmesh = false; | ||||
| } | } | ||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| if (me->runtime.wrapper_type_finalize) { | if (me->runtime.wrapper_type_finalize) { | ||||
| BKE_mesh_wrapper_deferred_finalize_mdata(me, &me->runtime.cd_mask_extra); | BKE_mesh_wrapper_deferred_finalize_mdata(me, &me->runtime.cd_mask_extra); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 245 Lines • Show Last 20 Lines | |||||