diff options
Diffstat (limited to 'source/blender/editors/transform/transform_snap_object.cc')
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.cc | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc index 87c467d44d8..598b3f7f1b7 100644 --- a/source/blender/editors/transform/transform_snap_object.cc +++ b/source/blender/editors/transform/transform_snap_object.cc @@ -240,7 +240,7 @@ static void snap_object_data_mesh_get(SnapObjectContext *sctx, bool use_hide, BVHTreeFromMesh *r_treedata) { - const Span<MVert> verts = me_eval->verts(); + const Span<float3> positions = me_eval->positions(); const Span<MPoly> polys = me_eval->polys(); const Span<MLoop> loops = me_eval->loops(); @@ -253,13 +253,12 @@ static void snap_object_data_mesh_get(SnapObjectContext *sctx, BKE_bvhtree_from_mesh_get( r_treedata, me_eval, use_hide ? BVHTREE_FROM_LOOPTRI_NO_HIDDEN : BVHTREE_FROM_LOOPTRI, 4); - BLI_assert(r_treedata->vert == verts.data()); - BLI_assert(!verts.data() || r_treedata->vert_normals); - BLI_assert(r_treedata->loop == loops.data()); - BLI_assert(!polys.data() || r_treedata->looptri); - BLI_assert(!r_treedata->tree || r_treedata->looptri); + BLI_assert(r_treedata.vert == positions.data()); + BLI_assert(!positions.data() || r_treedata.vert_normals); + BLI_assert(r_treedata.loop == loops.data()); + BLI_assert(!polys.data() || r_treedata.looptri); - UNUSED_VARS_NDEBUG(verts, polys, loops); + UNUSED_VARS_NDEBUG(positions, polys, loops); } /* Searches for the #Mesh_Runtime associated with the object that is most likely to be updated due @@ -622,12 +621,12 @@ static void mesh_looptri_raycast_backface_culling_cb(void *userdata, BVHTreeRayHit *hit) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *)userdata; - const MVert *vert = data->vert; + const float(*positions)[3] = data->positions; const MLoopTri *lt = &data->looptri[index]; const float *vtri_co[3] = { - vert[data->loop[lt->tri[0]].v].co, - vert[data->loop[lt->tri[1]].v].co, - vert[data->loop[lt->tri[2]].v].co, + positions[data->loop[lt->tri[0]].v], + positions[data->loop[lt->tri[1]].v], + positions[data->loop[lt->tri[2]].v], }; float dist = bvhtree_ray_tri_intersection(ray, hit->dist, UNPACK3(vtri_co)); @@ -1426,7 +1425,7 @@ struct Nearest2dUserData { BMesh *bm; }; struct { - const MVert *vert; + const float (*positions)[3]; const float (*vert_normals)[3]; const MEdge *edge; /* only used for #BVHTreeFromMeshEdges */ const MLoop *loop; @@ -1440,7 +1439,7 @@ struct Nearest2dUserData { static void cb_mvert_co_get(const int index, const Nearest2dUserData *data, const float **r_co) { - *r_co = data->vert[index].co; + *r_co = data->positions[index]; } static void cb_bvert_co_get(const int index, const Nearest2dUserData *data, const float **r_co) @@ -1715,7 +1714,7 @@ static void nearest2d_data_init_mesh(const Mesh *mesh, r_nearest2d->get_tri_verts_index = cb_mlooptri_verts_get; r_nearest2d->get_tri_edges_index = cb_mlooptri_edges_get; - r_nearest2d->vert = mesh->verts().data(); + r_nearest2d->positions = BKE_mesh_positions(mesh); r_nearest2d->vert_normals = BKE_mesh_vertex_normals_ensure(mesh); r_nearest2d->edge = mesh->edges().data(); r_nearest2d->loop = mesh->loops().data(); |