Fix for [#22128] particle sizes and physics

* size wasn't updated at all for particles with keyed or no physics
This commit is contained in:
Janne Karhu
2010-07-25 14:40:18 +00:00
parent 1e7f96343e
commit 6ec87e6095
2 changed files with 15 additions and 5 deletions

View File

@@ -401,11 +401,12 @@ class PARTICLE_PT_physics(ParticleButtonsPanel):
else: else:
row.prop(part, "physics_type", text="") row.prop(part, "physics_type", text="")
row = layout.row()
col = row.column(align=True)
col.prop(part, "particle_size")
col.prop(part, "random_size", slider=True)
if part.physics_type != 'NO': if part.physics_type != 'NO':
row = layout.row()
col = row.column(align=True)
col.prop(part, "particle_size")
col.prop(part, "random_size", slider=True)
col = row.column(align=True) col = row.column(align=True)
col.prop(part, "mass") col.prop(part, "mass")
col.prop(part, "sizemass", text="Multiply mass with size") col.prop(part, "sizemass", text="Multiply mass with size")

View File

@@ -4038,12 +4038,21 @@ void particle_system_update(Scene *scene, Object *ob, ParticleSystem *psys)
case PART_PHYS_NO: case PART_PHYS_NO:
case PART_PHYS_KEYED: case PART_PHYS_KEYED:
{ {
PARTICLE_P;
if(emit_particles(&sim, NULL, cfra)) { if(emit_particles(&sim, NULL, cfra)) {
free_keyed_keys(psys); free_keyed_keys(psys);
distribute_particles(&sim, part->from); distribute_particles(&sim, part->from);
initialize_all_particles(&sim); initialize_all_particles(&sim);
} }
reset_all_particles(&sim, 0.0, cfra, 0);
LOOP_EXISTING_PARTICLES {
pa->size = part->size;
if(part->randsize > 0.0)
pa->size *= 1.0f - part->randsize * PSYS_FRAND(p + 1);
reset_particle(&sim, pa, 0.0, cfra);
}
if(part->phystype == PART_PHYS_KEYED) { if(part->phystype == PART_PHYS_KEYED) {
psys_count_keyed_targets(&sim); psys_count_keyed_targets(&sim);