Commit: 354b4969722f7b333f459a4d6e8d707634419620 Author: Sebastián Barschkis Date: Tue Jul 11 23:38:27 2017 +0200 Branches: fluid-mantaflow https://developer.blender.org/rB354b4969722f7b333f459a4d6e8d707634419620
added float and tracer particle flags =================================================================== M source/blender/makesdna/DNA_particle_types.h M source/blender/makesdna/DNA_smoke_types.h M source/blender/makesrna/intern/rna_particle.c M source/blender/makesrna/intern/rna_smoke.c =================================================================== diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index 338806368b7..17b1e674518 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -358,6 +358,8 @@ typedef enum eParticleDrawFlag { #define PART_FLUID 3 #define PART_MANTA_FLIP 4 #define PART_MANTA_DROP 5 +#define PART_MANTA_FLOAT 6 +#define PART_MANTA_TRACER 7 /* part->flag */ #define PART_REACT_STA_END 1 diff --git a/source/blender/makesdna/DNA_smoke_types.h b/source/blender/makesdna/DNA_smoke_types.h index 0acf17b404c..73af368a19c 100644 --- a/source/blender/makesdna/DNA_smoke_types.h +++ b/source/blender/makesdna/DNA_smoke_types.h @@ -302,6 +302,8 @@ typedef struct SmokeDomainSettings { /* particle types */ #define MOD_SMOKE_PARTICLE_FLIP (1<<0) #define MOD_SMOKE_PARTICLE_DROP (1<<1) +#define MOD_SMOKE_PARTICLE_FLOAT (1<<2) +#define MOD_SMOKE_PARTICLE_TRACER (1<<3) /* flags */ #define MOD_SMOKE_FLOW_ABSOLUTE (1<<1) /*old style emission*/ diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c index 62e816be33c..900af40164d 100644 --- a/source/blender/makesrna/intern/rna_particle.c +++ b/source/blender/makesrna/intern/rna_particle.c @@ -885,7 +885,7 @@ static int rna_PartSettings_is_manta_get(PointerRNA *ptr) { ParticleSettings *part = (ParticleSettings *)ptr->data; - return (part->type == PART_MANTA_FLIP) || (part->type == PART_MANTA_DROP); + return (part->type == PART_MANTA_FLIP) || (part->type == PART_MANTA_DROP) || (part->type == PART_MANTA_FLOAT) || (part->type == PART_MANTA_TRACER); } static void rna_ParticleSettings_use_clump_curve_update(Main *bmain, Scene *scene, PointerRNA *ptr) diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c index 52391593916..d3460636fc5 100644 --- a/source/blender/makesrna/intern/rna_smoke.c +++ b/source/blender/makesrna/intern/rna_smoke.c @@ -170,7 +170,8 @@ static void rna_Smoke_draw_type_update(Main *UNUSED(bmain), Scene *UNUSED(scene) SmokeDomainSettings *settings = (SmokeDomainSettings *)ptr->data; /* Wire mode more convenient when particles present */ - if ((settings->particle_type & (MOD_SMOKE_PARTICLE_FLIP | MOD_SMOKE_PARTICLE_DROP)) == 0) { + if ((settings->particle_type & (MOD_SMOKE_PARTICLE_FLIP | MOD_SMOKE_PARTICLE_DROP | MOD_SMOKE_PARTICLE_FLOAT | MOD_SMOKE_PARTICLE_TRACER)) == 0) + { ob->dt = OB_SOLID; } else { ob->dt = OB_WIRE; @@ -219,6 +220,48 @@ static void rna_Smoke_drop_parts_set(struct PointerRNA *ptr, int value) rna_Smoke_draw_type_update(NULL, NULL, ptr); } +static void rna_Smoke_float_parts_set(struct PointerRNA *ptr, int value) +{ + Object *ob = (Object *)ptr->id.data; + SmokeModifierData *smd; + smd = (SmokeModifierData *)modifiers_findByType(ob, eModifierType_Smoke); + bool exists = rna_Smoke_parts_exists(ptr, PART_MANTA_FLOAT); + + if (value) { + if (ob->type == OB_MESH && !exists) + rna_Smoke_parts_create(ptr, "FloatParticleSettings", "Float Particles", "Float Particle System", PART_MANTA_FLOAT); + smd->domain->particle_type |= MOD_SMOKE_PARTICLE_FLOAT; + } + else { + rna_Smoke_parts_delete(ptr, PART_MANTA_FLOAT); + rna_Smoke_resetCache(NULL, NULL, ptr); + + smd->domain->particle_type &= ~MOD_SMOKE_PARTICLE_FLOAT; + } + rna_Smoke_draw_type_update(NULL, NULL, ptr); +} + +static void rna_Smoke_tracer_parts_set(struct PointerRNA *ptr, int value) +{ + Object *ob = (Object *)ptr->id.data; + SmokeModifierData *smd; + smd = (SmokeModifierData *)modifiers_findByType(ob, eModifierType_Smoke); + bool exists = rna_Smoke_parts_exists(ptr, PART_MANTA_TRACER); + + if (value) { + if (ob->type == OB_MESH && !exists) + rna_Smoke_parts_create(ptr, "TracerParticleSettings", "Tracer Particles", "Tracer Particle System", PART_MANTA_TRACER); + smd->domain->particle_type |= MOD_SMOKE_PARTICLE_TRACER; + } + else { + rna_Smoke_parts_delete(ptr, PART_MANTA_TRACER); + rna_Smoke_resetCache(NULL, NULL, ptr); + + smd->domain->particle_type &= ~MOD_SMOKE_PARTICLE_TRACER; + } + rna_Smoke_draw_type_update(NULL, NULL, ptr); +} + static void rna_Smoke_use_surface_format_set(struct PointerRNA *ptr, int value) { SmokeDomainSettings *settings = (SmokeDomainSettings *)ptr->data; @@ -1206,6 +1249,20 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna) RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_reset"); + prop = RNA_def_property(srna, "use_float_particles", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "particle_type", MOD_SMOKE_PARTICLE_FLOAT); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Smoke_float_parts_set"); + RNA_def_property_ui_text(prop, "Float", "Create float particle system"); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_reset"); + + prop = RNA_def_property(srna, "use_tracer_particles", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "particle_type", MOD_SMOKE_PARTICLE_TRACER); + RNA_def_property_boolean_funcs(prop, NULL, "rna_Smoke_tracer_parts_set"); + RNA_def_property_ui_text(prop, "Tracer", "Create tracer particle system"); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Smoke_reset"); + prop = RNA_def_property(srna, "particle_velocity_threshold", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1000.0); RNA_def_property_ui_range(prop, 0.0, 10.0, 0.02, 5); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs