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

Reply via email to