Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/physics/particle_boids.c')
-rw-r--r--source/blender/editors/physics/particle_boids.c422
1 files changed, 210 insertions, 212 deletions
diff --git a/source/blender/editors/physics/particle_boids.c b/source/blender/editors/physics/particle_boids.c
index 7ddb193b0e5..cedb7d6cbc1 100644
--- a/source/blender/editors/physics/particle_boids.c
+++ b/source/blender/editors/physics/particle_boids.c
@@ -21,7 +21,6 @@
* \ingroup edphys
*/
-
#include <stdlib.h>
#include "MEM_guardedalloc.h"
@@ -51,316 +50,315 @@
/************************ add/del boid rule operators *********************/
static int rule_add_exec(bContext *C, wmOperator *op)
{
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- int type = RNA_enum_get(op->ptr, "type");
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ int type = RNA_enum_get(op->ptr, "type");
- BoidRule *rule;
- BoidState *state;
+ BoidRule *rule;
+ BoidState *state;
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
- state = boid_get_current_state(part->boids);
+ state = boid_get_current_state(part->boids);
- for (rule = state->rules.first; rule; rule = rule->next)
- rule->flag &= ~BOIDRULE_CURRENT;
+ for (rule = state->rules.first; rule; rule = rule->next)
+ rule->flag &= ~BOIDRULE_CURRENT;
- rule = boid_new_rule(type);
- rule->flag |= BOIDRULE_CURRENT;
+ rule = boid_new_rule(type);
+ rule->flag |= BOIDRULE_CURRENT;
- BLI_addtail(&state->rules, rule);
+ BLI_addtail(&state->rules, rule);
- DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
+ DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
- return OPERATOR_FINISHED;
+ return OPERATOR_FINISHED;
}
void BOID_OT_rule_add(wmOperatorType *ot)
{
- /* identifiers */
- ot->name = "Add Boid Rule";
- ot->description = "Add a boid rule to the current boid state";
- ot->idname = "BOID_OT_rule_add";
+ /* identifiers */
+ ot->name = "Add Boid Rule";
+ ot->description = "Add a boid rule to the current boid state";
+ ot->idname = "BOID_OT_rule_add";
- /* api callbacks */
- ot->invoke = WM_menu_invoke;
- ot->exec = rule_add_exec;
+ /* api callbacks */
+ ot->invoke = WM_menu_invoke;
+ ot->exec = rule_add_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
- ot->prop = RNA_def_enum(ot->srna, "type", rna_enum_boidrule_type_items, 0, "Type", "");
+ ot->prop = RNA_def_enum(ot->srna, "type", rna_enum_boidrule_type_items, 0, "Type", "");
}
static int rule_del_exec(bContext *C, wmOperator *UNUSED(op))
{
- Main *bmain = CTX_data_main(C);
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidRule *rule;
- BoidState *state;
+ Main *bmain = CTX_data_main(C);
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidRule *rule;
+ BoidState *state;
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
- state = boid_get_current_state(part->boids);
+ state = boid_get_current_state(part->boids);
- for (rule = state->rules.first; rule; rule = rule->next) {
- if (rule->flag & BOIDRULE_CURRENT) {
- BLI_remlink(&state->rules, rule);
- MEM_freeN(rule);
- break;
- }
- }
- rule = state->rules.first;
+ for (rule = state->rules.first; rule; rule = rule->next) {
+ if (rule->flag & BOIDRULE_CURRENT) {
+ BLI_remlink(&state->rules, rule);
+ MEM_freeN(rule);
+ break;
+ }
+ }
+ rule = state->rules.first;
- if (rule)
- rule->flag |= BOIDRULE_CURRENT;
+ if (rule)
+ rule->flag |= BOIDRULE_CURRENT;
- DEG_relations_tag_update(bmain);
- DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
+ DEG_relations_tag_update(bmain);
+ DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
- return OPERATOR_FINISHED;
+ return OPERATOR_FINISHED;
}
void BOID_OT_rule_del(wmOperatorType *ot)
{
- /* identifiers */
- ot->name = "Remove Boid Rule";
- ot->idname = "BOID_OT_rule_del";
- ot->description = "Delete current boid rule";
+ /* identifiers */
+ ot->name = "Remove Boid Rule";
+ ot->idname = "BOID_OT_rule_del";
+ ot->description = "Delete current boid rule";
- /* api callbacks */
- ot->exec = rule_del_exec;
+ /* api callbacks */
+ ot->exec = rule_del_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
/************************ move up/down boid rule operators *********************/
static int rule_move_up_exec(bContext *C, wmOperator *UNUSED(op))
{
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidRule *rule;
- BoidState *state;
-
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
-
- state = boid_get_current_state(part->boids);
- for (rule = state->rules.first; rule; rule = rule->next) {
- if (rule->flag & BOIDRULE_CURRENT && rule->prev) {
- BLI_remlink(&state->rules, rule);
- BLI_insertlinkbefore(&state->rules, rule->prev, rule);
-
- DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
- break;
- }
- }
-
- return OPERATOR_FINISHED;
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidRule *rule;
+ BoidState *state;
+
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
+
+ state = boid_get_current_state(part->boids);
+ for (rule = state->rules.first; rule; rule = rule->next) {
+ if (rule->flag & BOIDRULE_CURRENT && rule->prev) {
+ BLI_remlink(&state->rules, rule);
+ BLI_insertlinkbefore(&state->rules, rule->prev, rule);
+
+ DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
+ break;
+ }
+ }
+
+ return OPERATOR_FINISHED;
}
void BOID_OT_rule_move_up(wmOperatorType *ot)
{
- ot->name = "Move Up Boid Rule";
- ot->description = "Move boid rule up in the list";
- ot->idname = "BOID_OT_rule_move_up";
+ ot->name = "Move Up Boid Rule";
+ ot->description = "Move boid rule up in the list";
+ ot->idname = "BOID_OT_rule_move_up";
- ot->exec = rule_move_up_exec;
+ ot->exec = rule_move_up_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
static int rule_move_down_exec(bContext *C, wmOperator *UNUSED(op))
{
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidRule *rule;
- BoidState *state;
-
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
-
- state = boid_get_current_state(part->boids);
- for (rule = state->rules.first; rule; rule = rule->next) {
- if (rule->flag & BOIDRULE_CURRENT && rule->next) {
- BLI_remlink(&state->rules, rule);
- BLI_insertlinkafter(&state->rules, rule->next, rule);
-
- DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
- break;
- }
- }
-
- return OPERATOR_FINISHED;
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidRule *rule;
+ BoidState *state;
+
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
+
+ state = boid_get_current_state(part->boids);
+ for (rule = state->rules.first; rule; rule = rule->next) {
+ if (rule->flag & BOIDRULE_CURRENT && rule->next) {
+ BLI_remlink(&state->rules, rule);
+ BLI_insertlinkafter(&state->rules, rule->next, rule);
+
+ DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
+ break;
+ }
+ }
+
+ return OPERATOR_FINISHED;
}
void BOID_OT_rule_move_down(wmOperatorType *ot)
{
- ot->name = "Move Down Boid Rule";
- ot->description = "Move boid rule down in the list";
- ot->idname = "BOID_OT_rule_move_down";
+ ot->name = "Move Down Boid Rule";
+ ot->description = "Move boid rule down in the list";
+ ot->idname = "BOID_OT_rule_move_down";
- ot->exec = rule_move_down_exec;
+ ot->exec = rule_move_down_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
-
/************************ add/del boid state operators *********************/
static int state_add_exec(bContext *C, wmOperator *UNUSED(op))
{
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidState *state;
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidState *state;
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
- for (state = part->boids->states.first; state; state = state->next)
- state->flag &= ~BOIDSTATE_CURRENT;
+ for (state = part->boids->states.first; state; state = state->next)
+ state->flag &= ~BOIDSTATE_CURRENT;
- state = boid_new_state(part->boids);
- state->flag |= BOIDSTATE_CURRENT;
+ state = boid_new_state(part->boids);
+ state->flag |= BOIDSTATE_CURRENT;
- BLI_addtail(&part->boids->states, state);
+ BLI_addtail(&part->boids->states, state);
- return OPERATOR_FINISHED;
+ return OPERATOR_FINISHED;
}
void BOID_OT_state_add(wmOperatorType *ot)
{
- /* identifiers */
- ot->name = "Add Boid State";
- ot->description = "Add a boid state to the particle system";
- ot->idname = "BOID_OT_state_add";
+ /* identifiers */
+ ot->name = "Add Boid State";
+ ot->description = "Add a boid state to the particle system";
+ ot->idname = "BOID_OT_state_add";
- /* api callbacks */
- ot->exec = state_add_exec;
+ /* api callbacks */
+ ot->exec = state_add_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
static int state_del_exec(bContext *C, wmOperator *UNUSED(op))
{
- Main *bmain = CTX_data_main(C);
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidState *state;
-
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
-
- for (state = part->boids->states.first; state; state = state->next) {
- if (state->flag & BOIDSTATE_CURRENT) {
- BLI_remlink(&part->boids->states, state);
- MEM_freeN(state);
- break;
- }
- }
-
- /* there must be at least one state */
- if (!part->boids->states.first) {
- state = boid_new_state(part->boids);
- BLI_addtail(&part->boids->states, state);
- }
- else
- state = part->boids->states.first;
-
- state->flag |= BOIDSTATE_CURRENT;
-
- DEG_relations_tag_update(bmain);
- DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
-
- return OPERATOR_FINISHED;
+ Main *bmain = CTX_data_main(C);
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidState *state;
+
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
+
+ for (state = part->boids->states.first; state; state = state->next) {
+ if (state->flag & BOIDSTATE_CURRENT) {
+ BLI_remlink(&part->boids->states, state);
+ MEM_freeN(state);
+ break;
+ }
+ }
+
+ /* there must be at least one state */
+ if (!part->boids->states.first) {
+ state = boid_new_state(part->boids);
+ BLI_addtail(&part->boids->states, state);
+ }
+ else
+ state = part->boids->states.first;
+
+ state->flag |= BOIDSTATE_CURRENT;
+
+ DEG_relations_tag_update(bmain);
+ DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
+
+ return OPERATOR_FINISHED;
}
void BOID_OT_state_del(wmOperatorType *ot)
{
- /* identifiers */
- ot->name = "Remove Boid State";
- ot->idname = "BOID_OT_state_del";
- ot->description = "Delete current boid state";
+ /* identifiers */
+ ot->name = "Remove Boid State";
+ ot->idname = "BOID_OT_state_del";
+ ot->description = "Delete current boid state";
- /* api callbacks */
- ot->exec = state_del_exec;
+ /* api callbacks */
+ ot->exec = state_del_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
/************************ move up/down boid state operators *********************/
static int state_move_up_exec(bContext *C, wmOperator *UNUSED(op))
{
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidSettings *boids;
- BoidState *state;
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidSettings *boids;
+ BoidState *state;
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
- boids = part->boids;
+ boids = part->boids;
- for (state = boids->states.first; state; state = state->next) {
- if (state->flag & BOIDSTATE_CURRENT && state->prev) {
- BLI_remlink(&boids->states, state);
- BLI_insertlinkbefore(&boids->states, state->prev, state);
- break;
- }
- }
+ for (state = boids->states.first; state; state = state->next) {
+ if (state->flag & BOIDSTATE_CURRENT && state->prev) {
+ BLI_remlink(&boids->states, state);
+ BLI_insertlinkbefore(&boids->states, state->prev, state);
+ break;
+ }
+ }
- return OPERATOR_FINISHED;
+ return OPERATOR_FINISHED;
}
void BOID_OT_state_move_up(wmOperatorType *ot)
{
- ot->name = "Move Up Boid State";
- ot->description = "Move boid state up in the list";
- ot->idname = "BOID_OT_state_move_up";
+ ot->name = "Move Up Boid State";
+ ot->description = "Move boid state up in the list";
+ ot->idname = "BOID_OT_state_move_up";
- ot->exec = state_move_up_exec;
+ ot->exec = state_move_up_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}
static int state_move_down_exec(bContext *C, wmOperator *UNUSED(op))
{
- PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
- ParticleSettings *part = ptr.data;
- BoidSettings *boids;
- BoidState *state;
-
- if (!part || part->phystype != PART_PHYS_BOIDS)
- return OPERATOR_CANCELLED;
-
- boids = part->boids;
-
- for (state = boids->states.first; state; state = state->next) {
- if (state->flag & BOIDSTATE_CURRENT && state->next) {
- BLI_remlink(&boids->states, state);
- BLI_insertlinkafter(&boids->states, state->next, state);
- DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
- break;
- }
- }
-
- return OPERATOR_FINISHED;
+ PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_settings", &RNA_ParticleSettings);
+ ParticleSettings *part = ptr.data;
+ BoidSettings *boids;
+ BoidState *state;
+
+ if (!part || part->phystype != PART_PHYS_BOIDS)
+ return OPERATOR_CANCELLED;
+
+ boids = part->boids;
+
+ for (state = boids->states.first; state; state = state->next) {
+ if (state->flag & BOIDSTATE_CURRENT && state->next) {
+ BLI_remlink(&boids->states, state);
+ BLI_insertlinkafter(&boids->states, state->next, state);
+ DEG_id_tag_update(&part->id, ID_RECALC_GEOMETRY | ID_RECALC_PSYS_RESET);
+ break;
+ }
+ }
+
+ return OPERATOR_FINISHED;
}
void BOID_OT_state_move_down(wmOperatorType *ot)
{
- ot->name = "Move Down Boid State";
- ot->description = "Move boid state down in the list";
- ot->idname = "BOID_OT_state_move_down";
+ ot->name = "Move Down Boid State";
+ ot->description = "Move boid state down in the list";
+ ot->idname = "BOID_OT_state_move_down";
- ot->exec = state_move_down_exec;
+ ot->exec = state_move_down_exec;
- /* flags */
- ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+ /* flags */
+ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
}