Particle system: Move runtime data to runtime field

Allows it to be preserved during copy-on-write update when on-geometry
related update is needed.

This is a required part for T63537, where we need to preserve the entire
evaluation data when object is tagged for only RECALC_COPY_ON_WRITE.

Reviewers: brecht

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D5023
This commit is contained in:
2019-06-05 12:39:40 +02:00
parent 27537daee1
commit 36faf739a7
15 changed files with 323 additions and 222 deletions

View File

@@ -415,7 +415,11 @@ static Mesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, Mes
ChildParticle *cpa = psys->child + (p - psys->totpart);
pa = psys->particles + (between ? cpa->pa[0] : cpa->parent);
}
psys_mat_hair_to_global(sim.ob, sim.psmd->mesh_final, sim.psys->part->from, pa, hairmat);
psys_mat_hair_to_global(sim.ob,
BKE_particle_modifier_mesh_final_get(sim.psmd),
sim.psys->part->from,
pa,
hairmat);
copy_m3_m4(mat, hairmat);
/* to quaternion */
mat3_to_quat(frame, mat);