Merge branch 'master' into blender2.8
[blender.git] / source / blender / makesrna / intern / rna_particle.c
index 2710a18436732a09547e22749fffa77132e173ef..14bf612f46742bf73c369e7ca44721e9f597fe45 100644 (file)
@@ -135,7 +135,6 @@ static const EnumPropertyItem part_hair_ren_as_items[] = {
 #include "BKE_cloth.h"
 #include "BKE_colortools.h"
 #include "BKE_deform.h"
-#include "BKE_depsgraph.h"
 #include "BKE_DerivedMesh.h"
 #include "BKE_cdderivedmesh.h"
 #include "BKE_effect.h"
@@ -145,6 +144,9 @@ static const EnumPropertyItem part_hair_ren_as_items[] = {
 #include "BKE_pointcache.h"
 #include "BKE_texture.h"
 
+#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
+
 /* use for object space hair get/set */
 static void rna_ParticleHairKey_location_object_info(PointerRNA *ptr, ParticleSystemModifierData **psmd_pt,
                                                      ParticleData **pa_pt)
@@ -612,8 +614,14 @@ static void rna_ParticleSystem_mcol_on_emitter(ParticleSystem *particlesystem, R
        }
 }
 
-static void rna_ParticleSystem_set_resolution(ParticleSystem *particlesystem, Scene *scene, Object *object, int resolution)
+static void rna_ParticleSystem_set_resolution(ParticleSystem *particlesystem, Scene *scene, ViewLayer *view_layer, Object *object, int resolution)
 {
+       EvaluationContext eval_ctx;
+
+       DEG_evaluation_context_init(&eval_ctx, resolution);
+       eval_ctx.ctime = (float)scene->r.cfra + scene->r.subframe;
+       eval_ctx.view_layer = view_layer;
+
        if (resolution == eModifierMode_Render) {
                ParticleSystemModifierData *psmd = psys_get_modifier(object, particlesystem);
                float mat[4][4];
@@ -622,7 +630,7 @@ static void rna_ParticleSystem_set_resolution(ParticleSystem *particlesystem, Sc
 
                psys_render_set(object, particlesystem, mat, mat, 1, 1, 0.f);
                psmd->flag &= ~eParticleSystemFlag_psys_updated;
-               particle_system_update(scene, object, particlesystem, true);
+               particle_system_update(&eval_ctx, scene, object, particlesystem, true);
        }
        else {
                ParticleSystemModifierData *psmd = psys_get_modifier(object, particlesystem);
@@ -632,7 +640,7 @@ static void rna_ParticleSystem_set_resolution(ParticleSystem *particlesystem, Sc
                }
                
                psmd->flag &= ~eParticleSystemFlag_psys_updated;
-               particle_system_update(scene, object, particlesystem, false);
+               particle_system_update(&eval_ctx, scene, object, particlesystem, false);
        }
 }
 
@@ -643,10 +651,10 @@ static void particle_recalc(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRN
                
                psys->recalc = flag;
 
-               DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA);
+               DEG_id_tag_update(ptr->id.data, OB_RECALC_DATA);
        }
        else
-               DAG_id_tag_update(ptr->id.data, OB_RECALC_DATA | flag);
+               DEG_id_tag_update(ptr->id.data, OB_RECALC_DATA | flag);
 
        WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
 }
@@ -657,7 +665,7 @@ static void rna_Particle_redo(Main *bmain, Scene *scene, PointerRNA *ptr)
 
 static void rna_Particle_redo_dependency(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
-       DAG_relations_tag_update(bmain);
+       DEG_relations_tag_update(bmain);
        rna_Particle_redo(bmain, scene, ptr);
 }
 
@@ -668,14 +676,14 @@ static void rna_Particle_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
 
 static void rna_Particle_reset_dependency(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
-       DAG_relations_tag_update(bmain);
+       DEG_relations_tag_update(bmain);
        rna_Particle_reset(bmain, scene, ptr);
 }
 
 static void rna_Particle_change_type(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
        particle_recalc(bmain, scene, ptr, PSYS_RECALC_RESET | PSYS_RECALC_TYPE);
-       DAG_relations_tag_update(bmain);
+       DEG_relations_tag_update(bmain);
 }
 
 static void rna_Particle_change_physics(Main *bmain, Scene *scene, PointerRNA *ptr)
@@ -692,7 +700,7 @@ static void rna_Particle_cloth_update(Main *UNUSED(bmain), Scene *UNUSED(scene),
 {
        Object *ob = (Object *)ptr->id.data;
 
-       DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+       DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
        WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ob);
 }
 
@@ -737,8 +745,8 @@ static void rna_Particle_target_reset(Main *bmain, Scene *UNUSED(scene), Pointer
                
                psys->recalc = PSYS_RECALC_RESET;
 
-               DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
-               DAG_relations_tag_update(bmain);
+               DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
+               DEG_relations_tag_update(bmain);
        }
 
        WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
@@ -753,7 +761,7 @@ static void rna_Particle_target_redo(Main *UNUSED(bmain), Scene *UNUSED(scene),
                
                psys->recalc = PSYS_RECALC_REDO;
 
-               DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
+               DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
                WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
        }
 }
@@ -774,9 +782,10 @@ static void rna_Particle_hair_dynamics_update(Main *bmain, Scene *scene, Pointer
                WM_main_add_notifier(NC_OBJECT | ND_PARTICLE | NA_EDITED, NULL);
        }
 
-       DAG_id_tag_update(&ob->id, OB_RECALC_DATA);
-       DAG_relations_tag_update(bmain);
+       DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
+       DEG_relations_tag_update(bmain);
 }
+
 static PointerRNA rna_particle_settings_get(PointerRNA *ptr)
 {
        ParticleSystem *psys = (ParticleSystem *)ptr->data;
@@ -2309,11 +2318,6 @@ static void rna_def_particle_settings(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Size", "Show particle size");
        RNA_def_property_update(prop, 0, "rna_Particle_redo");
 
-       prop = RNA_def_property(srna, "use_render_emitter", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_EMITTER);
-       RNA_def_property_ui_text(prop, "Emitter", "Render emitter Object also");
-       RNA_def_property_update(prop, 0, "rna_Particle_redo");
-
        prop = RNA_def_property(srna, "show_health", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_HEALTH);
        RNA_def_property_ui_text(prop, "Health", "Draw boid health");
@@ -2401,10 +2405,10 @@ static void rna_def_particle_settings(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Draw Color", "Draw additional particle data as a color");
        RNA_def_property_update(prop, 0, "rna_Particle_redo");
 
-       prop = RNA_def_property(srna, "draw_size", PROP_INT, PROP_PIXEL);
+       prop = RNA_def_property(srna, "draw_size", PROP_FLOAT, PROP_NONE);
        RNA_def_property_range(prop, 0, 1000);
        RNA_def_property_ui_range(prop, 0, 100, 1, -1);
-       RNA_def_property_ui_text(prop, "Draw Size", "Size of particles on viewport in pixels (0=default)");
+       RNA_def_property_ui_text(prop, "Draw Size", "Size of particles on viewport in BU");
        RNA_def_property_update(prop, 0, "rna_Particle_redo");
 
        prop = RNA_def_property(srna, "child_type", PROP_ENUM, PROP_NONE);
@@ -3605,6 +3609,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
        func = RNA_def_function(srna, "set_resolution", "rna_ParticleSystem_set_resolution");
        RNA_def_function_ui_description(func, "Set the resolution to use for the number of particles");
        RNA_def_pointer(func, "scene", "Scene", "", "Scene");
+       RNA_def_pointer(func, "view_layer", "ViewLayer", "", "ViewLayer");
        RNA_def_pointer(func, "object", "Object", "", "Object");
        RNA_def_enum(func, "resolution", resolution_items, 0, "", "Resolution settings to apply");