diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-05-15 14:26:40 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2018-05-16 17:31:38 +0300 |
commit | def1c3eb4b5c2926431a1c975839e7719f06b38e (patch) | |
tree | 585024afc5aa554448bc566ca46e1e6098f02e3b /source/blender/draw | |
parent | 76b5e38a76ecac4522edc72f310c88428cc2d23a (diff) |
Particle System: ported most DerivedMesh → Mesh
There are a few places where DerivedMesh is still used, most notably
when calling the (not yet ported) cloth simulation. There is also still
the use of Object.derivedDeform and Object.derivedFinal. Those places are
marked with a TODO.
Some functions in the editors module were copied to accept Mesh. Those
already had 'mesh' in the name; the copies are suffixed with '__real_mesh'
for easy renaming later when the DM-based functionality is removed.
Diffstat (limited to 'source/blender/draw')
-rw-r--r-- | source/blender/draw/intern/draw_cache_impl_particles.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_particles.c b/source/blender/draw/intern/draw_cache_impl_particles.c index b8b24ac8afc..c6cc243638b 100644 --- a/source/blender/draw/intern/draw_cache_impl_particles.c +++ b/source/blender/draw/intern/draw_cache_impl_particles.c @@ -38,10 +38,12 @@ #include "BLI_string.h" #include "BLI_ghash.h" +#include "DNA_mesh_types.h" +#include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" #include "DNA_particle_types.h" -#include "BKE_DerivedMesh.h" +#include "BKE_mesh.h" #include "BKE_particle.h" #include "BKE_pointcache.h" @@ -253,12 +255,12 @@ static void particle_calculate_parent_uvs(ParticleSystem *psys, ParticleData *particle = &psys->particles[parent_index]; int num = particle->num_dmcache; if (num == DMCACHE_NOTFOUND) { - if (particle->num < psmd->dm_final->getNumTessFaces(psmd->dm_final)) { + if (particle->num < psmd->mesh_final->totface) { num = particle->num; } } if (num != DMCACHE_NOTFOUND) { - MFace *mface = psmd->dm_final->getTessFaceData(psmd->dm_final, num, CD_MFACE); + MFace *mface = &psmd->mesh_final->mface[num]; for (int j = 0; j < num_uv_layers; j++) { psys_interpolate_uvs(mtfaces[j] + num, mface->v4, @@ -286,8 +288,7 @@ static void particle_interpolate_children_uvs(ParticleSystem *psys, ChildParticle *particle = &psys->child[child_index]; int num = particle->num; if (num != DMCACHE_NOTFOUND) { - MFace *mface = psmd->dm_final->getTessFaceData( - psmd->dm_final, num, CD_MFACE); + MFace *mface = &psmd->mesh_final->mface[num]; for (int j = 0; j < num_uv_layers; j++) { psys_interpolate_uvs( mtfaces[j] + num, mface->v4, particle->fuv, r_uv[j]); @@ -456,8 +457,8 @@ static void particle_batch_cache_ensure_pos_and_seg(PTCacheEdit *edit, float (**parent_uvs)[2] = NULL; if (psmd != NULL) { - if (CustomData_has_layer(&psmd->dm_final->loopData, CD_MLOOPUV)) { - num_uv_layers = CustomData_number_of_layers(&psmd->dm_final->loopData, CD_MLOOPUV); + if (CustomData_has_layer(&psmd->mesh_final->ldata, CD_MLOOPUV)) { + num_uv_layers = CustomData_number_of_layers(&psmd->mesh_final->ldata, CD_MLOOPUV); } } @@ -472,7 +473,7 @@ static void particle_batch_cache_ensure_pos_and_seg(PTCacheEdit *edit, uv_id = MEM_mallocN(sizeof(*uv_id) * num_uv_layers, "UV attrib format"); for (int i = 0; i < num_uv_layers; i++) { - const char *name = CustomData_get_layer_name(&psmd->dm_final->loopData, CD_MLOOPUV, i); + const char *name = CustomData_get_layer_name(&psmd->mesh_final->ldata, CD_MLOOPUV, i); char uuid[32]; BLI_snprintf(uuid, sizeof(uuid), "u%u", BLI_ghashutil_strhash_p(name)); @@ -490,10 +491,10 @@ static void particle_batch_cache_ensure_pos_and_seg(PTCacheEdit *edit, true); if (num_uv_layers) { - DM_ensure_tessface(psmd->dm_final); + BKE_mesh_tessface_ensure(psmd->mesh_final); mtfaces = MEM_mallocN(sizeof(*mtfaces) * num_uv_layers, "Faces UV layers"); for (int i = 0; i < num_uv_layers; i++) { - mtfaces[i] = (MTFace *)CustomData_get_layer_n(&psmd->dm_final->faceData, CD_MTFACE, i); + mtfaces[i] = (MTFace *)CustomData_get_layer_n(&psmd->mesh_final->fdata, CD_MTFACE, i); } } |