diff options
author | Robert Guetzkow <rjg> | 2021-01-12 14:12:33 +0300 |
---|---|---|
committer | Robert Guetzkow <gitcommit@outlook.de> | 2021-01-12 14:14:34 +0300 |
commit | f5c0ef52cf2f4ae333269eec33e5bd7a89a00a23 (patch) | |
tree | d51ebda929f426eec5bb9d081c4178f0ff12cdd9 /source/blender/makesrna/intern/rna_particle.c | |
parent | c56da67716d9e222baefe78b45412b7652b141a5 (diff) |
Fix T84588: Cache access in rna_Particle_uv_on_emitter
The function `rna_Particle_uv_on_emitter` did not handle the case where
`particle->num_dmcache` was `DMCACHE_ISCHILD`. This resulted in an
incorrect offset for the `mtface` pointer. The commit checks for the
case and sets the offset accordingly, similar to existing code in
e.g. `particle_calculate_parent_uvs`.
Reviewed By: JacquesLucke
Differential Revision: https://developer.blender.org/D10072
Diffstat (limited to 'source/blender/makesrna/intern/rna_particle.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_particle.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 057f48c498c..bc9eda3cb5f 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -403,16 +403,15 @@ static void rna_Particle_uv_on_emitter(ParticleData *particle, } BKE_mesh_tessface_ensure(modifier->mesh_final); /* BMESH - UNTIL MODIFIER IS UPDATED FOR MPoly */ - if (num == DMCACHE_NOTFOUND) { + if (ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) { if (particle->num < modifier->mesh_final->totface) { num = particle->num; } } /* get uvco */ - if (r_uv && ELEM(from, PART_FROM_FACE, PART_FROM_VOLUME)) { - - if (num != DMCACHE_NOTFOUND) { + if (r_uv && ELEM(from, PART_FROM_FACE, PART_FROM_VOLUME) && + !ELEM(num, DMCACHE_NOTFOUND, DMCACHE_ISCHILD)) { MFace *mface; MTFace *mtface; @@ -424,7 +423,6 @@ static void rna_Particle_uv_on_emitter(ParticleData *particle, psys_interpolate_uvs(mtface, mface->v4, particle->fuv, r_uv); return; } - } } r_uv[0] = 0.0f; |