[Bf-blender-cvs] [84becb870f8] blender2.8: Merge branch 'master' into blender2.8
Campbell Barton
noreply at git.blender.org
Mon Jun 4 17:58:22 CEST 2018
Commit: 84becb870f8e0785bdfca0f381c7b06f415e4e6a
Author: Campbell Barton
Date: Mon Jun 4 17:58:07 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB84becb870f8e0785bdfca0f381c7b06f415e4e6a
Merge branch 'master' into blender2.8
===================================================================
===================================================================
diff --cc source/blender/makesrna/intern/rna_particle.c
index 3af0ac63d96,5b0b718fc28..4f9ac94dec1
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@@ -619,28 -674,37 +620,50 @@@ static void rna_Particle_reset_dependen
rna_Particle_reset(bmain, scene, ptr);
}
-static void rna_Particle_change_type(Main *bmain, Scene *scene, PointerRNA *ptr)
+static void rna_Particle_change_type(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
{
- particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET | PSYS_RECALC_TYPE);
- DAG_relations_tag_update(bmain);
+ ParticleSettings *part = ptr->id.data;
+
+ /* Iterating over all object is slow, but no better solution exists at the moment. */
+ for (Object *ob = bmain->object.first; ob; ob = ob->id.next) {
+ for (ParticleSystem *psys = ob->particlesystem.first; psys; psys = psys->next) {
+ if (psys->part == part) {
+ psys_changed_type(ob, psys);
+ psys->recalc |= PSYS_RECALC_RESET;
+ DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
+ }
+ }
+ }
+
+ WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
+ DEG_relations_tag_update(bmain);
}
- static void rna_Particle_change_physics(Main *bmain, Scene *scene, PointerRNA *ptr)
+ static void rna_Particle_change_physics_type(Main *bmain, Scene *scene, PointerRNA *ptr)
{
particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET | PSYS_RECALC_PHYS);
+
+ ParticleSettings *part = (ParticleSettings *)ptr->data;
+
+ if (part->phystype == PART_PHYS_BOIDS && part->boids == NULL) {
+ BoidState *state;
+
+ part->boids = MEM_callocN(sizeof(BoidSettings), "Boid Settings");
+ boid_default_settings(part->boids);
+
+ state = boid_new_state(part->boids);
+ BLI_addtail(&state->rules, boid_new_rule(eBoidRuleType_Separate));
+ BLI_addtail(&state->rules, boid_new_rule(eBoidRuleType_Flock));
+
+ ((BoidRule*)state->rules.first)->flag |= BOIDRULE_CURRENT;
+
+ state->flag |= BOIDSTATE_CURRENT;
+ BLI_addtail(&part->boids->states, state);
+ }
+ else if (part->phystype == PART_PHYS_FLUID && part->fluid == NULL) {
+ part->fluid = MEM_callocN(sizeof(SPHFluidSettings), "SPH Fluid Settings");
+ BKE_particlesettings_fluid_default_settings(part);
+ }
}
static void rna_Particle_redo_child(Main *bmain, Scene *scene, PointerRNA *ptr)
More information about the Bf-blender-cvs
mailing list