From 772c4d6313ad842bbdfe101267f0bd34186e8a6f Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 8 Oct 2018 17:29:59 +1100 Subject: Edit Mesh: basic show in edit mode support Note this is just using the derived-mesh data at the moment, to support this properly we'll need to remove derived-mesh. --- source/blender/blenkernel/BKE_cdderivedmesh.h | 2 ++ source/blender/blenkernel/intern/cdderivedmesh.c | 26 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_cdderivedmesh.h b/source/blender/blenkernel/BKE_cdderivedmesh.h index 6d96bd6ab7c..b31a3548a1e 100644 --- a/source/blender/blenkernel/BKE_cdderivedmesh.h +++ b/source/blender/blenkernel/BKE_cdderivedmesh.h @@ -178,4 +178,6 @@ void CDDM_set_mface(struct DerivedMesh *dm, struct MFace *mface); void CDDM_set_mloop(struct DerivedMesh *dm, struct MLoop *mloop); void CDDM_set_mpoly(struct DerivedMesh *dm, struct MPoly *mpoly); +void CDDM_to_mesh__fast_borrow(struct DerivedMesh *dm, struct Mesh *me, const struct Mesh *me_reference); + #endif diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c index 9043460562d..83424da3a3d 100644 --- a/source/blender/blenkernel/intern/cdderivedmesh.c +++ b/source/blender/blenkernel/intern/cdderivedmesh.c @@ -2258,3 +2258,29 @@ void CDDM_set_mpoly(DerivedMesh *dm, MPoly *mpoly) cddm->mpoly = mpoly; } + +/** Hack to fill in an empty (non library mesh struct) with CDDM values. */ +void CDDM_to_mesh__fast_borrow(DerivedMesh *dm, Mesh *me, const Mesh *me_reference) +{ + CDDerivedMesh *cddm = (CDDerivedMesh *)dm; + me->totvert = cddm->dm.numVertData; + me->totedge = cddm->dm.numEdgeData; + me->totloop = cddm->dm.numLoopData; + me->totpoly = cddm->dm.numPolyData; + + me->mvert = cddm->mvert; + me->medge = cddm->medge; + me->mface = cddm->mface; + me->mloop = cddm->mloop; + me->mpoly = cddm->mpoly; + + me->vdata = dm->vertData; + me->edata = dm->edgeData; + me->ldata = dm->loopData; + me->pdata = dm->polyData; + + if (me_reference) { + me->mat = me_reference->mat; + me->totcol = me_reference->totcol; + } +} -- cgit v1.2.3