[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