diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-07-05 11:12:36 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-07-05 12:30:38 +0300 |
commit | 99a6d616e85f8a06dfd3d825f8e3cd350e35f61e (patch) | |
tree | 65150100490df0957e86b4e749eaea1ecebaa0e5 /source/blender/blenkernel | |
parent | edd59aa2be375170515fb8bd54ecafecbdbc068c (diff) |
Ported CDDM_apply_vert_normals from DM to Mesh
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 15 |
2 files changed, 16 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index c87c22953f1..ee6f1c326ed 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -204,6 +204,7 @@ int BKE_mesh_mselect_active_get(struct Mesh *me, int type); void BKE_mesh_mselect_active_set(struct Mesh *me, int index, int type); void BKE_mesh_apply_vert_coords(struct Mesh *mesh, float (*vertCoords)[3]); +void BKE_mesh_apply_vert_normals(struct Mesh *mesh, short (*vertNormals)[3]); /* *** mesh_evaluate.c *** */ diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index b13f45499f1..5c9736c2620 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -1511,6 +1511,21 @@ void BKE_mesh_apply_vert_coords(Mesh *mesh, float (*vertCoords)[3]) mesh->runtime.cd_dirty_vert |= CD_MASK_NORMAL; } +void BKE_mesh_apply_vert_normals(Mesh *mesh, short (*vertNormals)[3]) +{ + MVert *vert; + int i; + + /* this will just return the pointer if it wasn't a referenced layer */ + vert = CustomData_duplicate_referenced_layer(&mesh->vdata, CD_MVERT, mesh->totvert); + mesh->mvert = vert; + + for (i = 0; i < mesh->totvert; ++i, ++vert) + copy_v3_v3_short(vert->no, vertNormals[i]); + + mesh->runtime.cd_dirty_vert &= ~CD_MASK_NORMAL; +} + /** * Compute 'split' (aka loop, or per face corner's) normals. * |