diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_boid.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_boid.c | 103 |
1 files changed, 53 insertions, 50 deletions
diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c index 0c5565e253a..8002aa89313 100644 --- a/source/blender/makesrna/intern/rna_boid.c +++ b/source/blender/makesrna/intern/rna_boid.c @@ -41,6 +41,7 @@ #include "DNA_object_types.h" #include "DNA_particle_types.h" +#include "WM_api.h" #include "WM_types.h" EnumPropertyItem boidrule_type_items[] ={ @@ -82,14 +83,15 @@ static void rna_Boids_reset(bContext *C, PointerRNA *ptr) psys->recalc = PSYS_RECALC_RESET; - if(ob) { - DAG_object_flush_update(scene, ob, OB_RECALC_DATA); - } + if(ob) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } else { part = ptr->id.data; psys_flush_particle_settings(scene, part, PSYS_RECALC_RESET); } + + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); } static void rna_Boids_reset_deps(bContext *C, PointerRNA *ptr) { @@ -102,15 +104,16 @@ static void rna_Boids_reset_deps(bContext *C, PointerRNA *ptr) psys->recalc = PSYS_RECALC_RESET; - if(ob) { - DAG_object_flush_update(scene, ob, OB_RECALC_DATA); - } + if(ob) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } else { part = ptr->id.data; psys_flush_particle_settings(scene, part, PSYS_RECALC_RESET); DAG_scene_sort(scene); } + + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, NULL); } static StructRNA* rna_BoidRule_refine(struct PointerRNA *ptr) @@ -247,12 +250,12 @@ static void rna_def_boidrule_goal(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "ob"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Object", "Goal object."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset_deps"); + RNA_def_property_update(prop, 0, "rna_Boids_reset_deps"); prop= RNA_def_property(srna, "predict", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_GOAL_AVOID_PREDICT); RNA_def_property_ui_text(prop, "Predict", "Predict target movement."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boidrule_avoid(BlenderRNA *brna) @@ -268,17 +271,17 @@ static void rna_def_boidrule_avoid(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "ob"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Object", "Object to avoid."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset_deps"); + RNA_def_property_update(prop, 0, "rna_Boids_reset_deps"); prop= RNA_def_property(srna, "predict", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_GOAL_AVOID_PREDICT); RNA_def_property_ui_text(prop, "Predict", "Predict target movement."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "fear_factor", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Fear factor", "Avoid object if danger from it is above this threshol."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boidrule_avoid_collision(BlenderRNA *brna) @@ -292,17 +295,17 @@ static void rna_def_boidrule_avoid_collision(BlenderRNA *brna) prop= RNA_def_property(srna, "boids", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_ACOLL_WITH_BOIDS); RNA_def_property_ui_text(prop, "Boids", "Avoid collision with other boids."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "deflectors", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_ACOLL_WITH_DEFLECTORS); RNA_def_property_ui_text(prop, "Deflectors", "Avoid collision with deflector objects."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "look_ahead", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Look ahead", "Time to look ahead in seconds."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boidrule_follow_leader(BlenderRNA *brna) @@ -317,22 +320,22 @@ static void rna_def_boidrule_follow_leader(BlenderRNA *brna) RNA_def_property_pointer_sdna(prop, NULL, "ob"); RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Object", "Follow this object instead of a boid."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset_deps"); + RNA_def_property_update(prop, 0, "rna_Boids_reset_deps"); prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Distance", "Distance behind leader to follow."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "queue_size", PROP_INT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Queue Size", "How many boids in a line."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "line", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_LEADER_IN_LINE); RNA_def_property_ui_text(prop, "Line", "Follow leader in a line."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boidrule_average_speed(BlenderRNA *brna) @@ -346,17 +349,17 @@ static void rna_def_boidrule_average_speed(BlenderRNA *brna) prop= RNA_def_property(srna, "wander", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Wander", "How fast velocity's direction is randomized."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "level", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Level", "How much velocity's z-component is kept constant."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "speed", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 1.0f); RNA_def_property_ui_text(prop, "Speed", "Percentage of maximum speed."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boidrule_fight(BlenderRNA *brna) @@ -370,12 +373,12 @@ static void rna_def_boidrule_fight(BlenderRNA *brna) prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Fight Distance", "Attack boids at max this distance."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "flee_distance", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0f, 100.0f); RNA_def_property_ui_text(prop, "Flee Distance", "Flee to this distance."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boidrule(BlenderRNA *brna) @@ -405,12 +408,12 @@ static void rna_def_boidrule(BlenderRNA *brna) prop= RNA_def_property(srna, "in_air", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BOIDRULE_IN_AIR); RNA_def_property_ui_text(prop, "In Air", "Use rule when boid is flying."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "on_land", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", BOIDRULE_ON_LAND); RNA_def_property_ui_text(prop, "On Land", "Use rule when boid is on land."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); //prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); //RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded); @@ -457,17 +460,17 @@ static void rna_def_boidstate(BlenderRNA *brna) prop= RNA_def_property(srna, "rule_fuzziness", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Rule Fuzzines", ""); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "volume", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Volume", ""); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "falloff", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 10.0); RNA_def_property_ui_text(prop, "Falloff", ""); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } static void rna_def_boid_settings(BlenderRNA *brna) { @@ -480,17 +483,17 @@ static void rna_def_boid_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "landing_smoothness", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 10.0); RNA_def_property_ui_text(prop, "Landing Smoothness", "How smoothly the boids land."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "banking", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 2.0); RNA_def_property_ui_text(prop, "Banking", "Amount of rotation around velocity vector on turns."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "height", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 2.0); RNA_def_property_ui_text(prop, "Height", "Boid height relative to particle size."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); /* states */ prop= RNA_def_property(srna, "states", PROP_COLLECTION, PROP_NONE); @@ -510,99 +513,99 @@ static void rna_def_boid_settings(BlenderRNA *brna) prop= RNA_def_property(srna, "health", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Health", "Initial boid health when born."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Strength", "Maximum caused damage on attack per second."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "aggression", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Aggression", "Boid will fight this times stronger enemy."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "accuracy", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Accuracy", "Accuracy of attack."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "range", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Range", "The maximum distance from which a boid can attack."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); /* physical properties */ prop= RNA_def_property(srna, "air_min_speed", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Min Air Speed", "Minimum speed in air (relative to maximum speed)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "air_max_speed", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Max Air Speed", "Maximum speed in air."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "air_max_acc", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Max Air Acceleration", "Maximum acceleration in air (relative to maximum speed)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "air_max_ave", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Max Air Angular Velocity", "Maximum angular velocity in air (relative to 180 degrees)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "air_personal_space", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 10.0); RNA_def_property_ui_text(prop, "Air Personal Space", "Radius of boids personal space in air (% of particle size)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "land_jump_speed", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Jump Speed", "Maximum speed for jumping."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "land_max_speed", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 100.0); RNA_def_property_ui_text(prop, "Max Land Speed", "Maximum speed on land."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "land_max_acc", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Max Land Acceleration", "Maximum acceleration on land (relative to maximum speed)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "land_max_ave", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Max Land Angular Velocity", "Maximum angular velocity on land (relative to 180 degrees)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "land_personal_space", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 10.0); RNA_def_property_ui_text(prop, "Land Personal Space", "Radius of boids personal space on land (% of particle size)."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "land_stick_force", PROP_FLOAT, PROP_NONE); RNA_def_property_range(prop, 0.0, 1000.0); RNA_def_property_ui_text(prop, "Land Stick Force", "How strong a force must be to start effecting a boid on land."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); /* options */ prop= RNA_def_property(srna, "allow_flight", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_FLIGHT); RNA_def_property_ui_text(prop, "Allow Flight", "Allow boids to move in air."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "allow_land", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_LAND); RNA_def_property_ui_text(prop, "Allow Land", "Allow boids to move on land."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); prop= RNA_def_property(srna, "allow_climb", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_CLIMB); RNA_def_property_ui_text(prop, "Allow Climbing", "Allow boids to climb goal objects."); - RNA_def_property_update(prop, NC_OBJECT|ND_PARTICLE, "rna_Boids_reset"); + RNA_def_property_update(prop, 0, "rna_Boids_reset"); } void RNA_def_boid(BlenderRNA *brna) |