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:
authorRobert Guetzkow <rjg>2021-01-12 14:12:33 +0300
committerRobert Guetzkow <gitcommit@outlook.de>2021-01-12 14:14:34 +0300
commitf5c0ef52cf2f4ae333269eec33e5bd7a89a00a23 (patch)
treed51ebda929f426eec5bb9d081c4178f0ff12cdd9 /source/blender/makesrna/intern/rna_particle.c
parentc56da67716d9e222baefe78b45412b7652b141a5 (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.c8
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;