[Bf-blender-cvs] [354b4969722] fluid-mantaflow: added float and tracer particle flags

Sebastián Barschkis noreply at git.blender.org
Sat Jul 15 02:20:14 CEST 2017


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);




More information about the Bf-blender-cvs mailing list