Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/transform/transform_snap_object.cc')
-rw-r--r--source/blender/editors/transform/transform_snap_object.cc27
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();