static int strip_modifier_move_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); Sequence *seq = BKE_sequencer_active_get(scene); char name[MAX_NAME]; int direction; SequenceModifierData *smd; RNA_string_get(op->ptr, "name", name); direction = RNA_enum_get(op->ptr, "direction"); smd = BKE_sequence_modifier_find_by_name(seq, name); if (!smd) return OPERATOR_CANCELLED; if (direction == SEQ_MODIFIER_MOVE_UP) { if (smd->prev) { BLI_remlink(&seq->modifiers, smd); BLI_insertlink(&seq->modifiers, smd->prev->prev, smd); } } else if (direction == SEQ_MODIFIER_MOVE_DOWN) { if (smd->next) { BLI_remlink(&seq->modifiers, smd); BLI_insertlink(&seq->modifiers, smd->next, smd); } } BKE_sequence_invalidate_cache(scene, seq); WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene); return OPERATOR_FINISHED; }
static int rule_move_down_exec(bContext *C, wmOperator *UNUSED(op)) { PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem); ParticleSystem *psys= ptr.data; Object *ob = ptr.id.data; BoidRule *rule; BoidState *state; if(!psys || !psys->part || psys->part->phystype != PART_PHYS_BOIDS) return OPERATOR_CANCELLED; state = boid_get_current_state(psys->part->boids); for(rule = state->rules.first; rule; rule=rule->next) { if(rule->flag & BOIDRULE_CURRENT && rule->next) { BLI_remlink(&state->rules, rule); BLI_insertlink(&state->rules, rule->next, rule); DAG_id_tag_update(&psys->part->id, OB_RECALC_DATA|PSYS_RECALC_RESET); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); break; } } return OPERATOR_FINISHED; }
int ED_object_modifier_copy(ReportList *UNUSED(reports), Object *ob, ModifierData *md) { ModifierData *nmd; nmd = modifier_new(md->type); modifier_copyData(md, nmd); BLI_insertlink(&ob->modifiers, md, nmd); modifier_unique_name(&ob->modifiers, nmd); return 1; }
void sca_move_controller(bController *cont_to_move, Object *ob, int move_up) { bController *cont, *tmp; int val; val = move_up ? 1:2; /* make sure this controller belongs to this object */ cont= ob->controllers.first; while (cont) { if (cont == cont_to_move) break; cont= cont->next; } if (!cont) return; /* move up */ if ( val==1 && cont->prev) { /* locate the controller that has the same state mask but is earlier in the list */ tmp = cont->prev; while (tmp) { if (tmp->state_mask & cont->state_mask) break; tmp = tmp->prev; } if (tmp) { BLI_remlink(&ob->controllers, cont); BLI_insertlinkbefore(&ob->controllers, tmp, cont); } } /* move down */ else if ( val==2 && cont->next) { tmp = cont->next; while (tmp) { if (tmp->state_mask & cont->state_mask) break; tmp = tmp->next; } BLI_remlink(&ob->controllers, cont); BLI_insertlink(&ob->controllers, tmp, cont); } }
int ED_object_modifier_move_down(ReportList *reports, Object *ob, ModifierData *md) { if(md->next) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); if(mti->flags&eModifierTypeFlag_RequiresOriginalData) { ModifierTypeInfo *nmti = modifierType_getInfo(md->next->type); if(nmti->type!=eModifierTypeType_OnlyDeform) { BKE_report(reports, RPT_WARNING, "Cannot move beyond a non-deforming modifier"); return 0; } } BLI_remlink(&ob->modifiers, md); BLI_insertlink(&ob->modifiers, md->next, md); } return 1; }
int ED_object_modifier_move_up(ReportList *reports, Object *ob, ModifierData *md) { if(md->prev) { ModifierTypeInfo *mti = modifierType_getInfo(md->type); if(mti->type!=eModifierTypeType_OnlyDeform) { ModifierTypeInfo *nmti = modifierType_getInfo(md->prev->type); if(nmti->flags&eModifierTypeFlag_RequiresOriginalData) { BKE_report(reports, RPT_WARNING, "Cannot move above a modifier requiring original data"); return 0; } } BLI_remlink(&ob->modifiers, md); BLI_insertlink(&ob->modifiers, md->prev->prev, md); } return 1; }
void sca_move_actuator(bActuator *act_to_move, Object *ob, int move_up) { bActuator *act, *tmp; int val; val = move_up ? 1:2; /* make sure this actuator belongs to this object */ act= ob->actuators.first; while (act) { if (act == act_to_move) break; act= act->next; } if (!act) return; /* move up */ if ( val==1 && act->prev) { /* locate the first visible actuators before this one */ for (tmp = act->prev; tmp; tmp=tmp->prev) { if (tmp->flag & ACT_VISIBLE) break; } if (tmp) { BLI_remlink(&ob->actuators, act); BLI_insertlinkbefore(&ob->actuators, tmp, act); } } /* move down */ else if ( val==2 && act->next) { /* locate the first visible actuators after this one */ for (tmp=act->next; tmp; tmp=tmp->next) { if (tmp->flag & ACT_VISIBLE) break; } if (tmp) { BLI_remlink(&ob->actuators, act); BLI_insertlink(&ob->actuators, tmp, act); } } }
/* ******************** INTERFACE ******************* */ void sca_move_sensor(bSensor *sens_to_move, Object *ob, int move_up) { bSensor *sens, *tmp; int val; val = move_up ? 1:2; /* make sure this sensor belongs to this object */ sens= ob->sensors.first; while (sens) { if (sens == sens_to_move) break; sens= sens->next; } if (!sens) return; /* move up */ if ( val==1 && sens->prev) { for (tmp=sens->prev; tmp; tmp=tmp->prev) { if (tmp->flag & SENS_VISIBLE) break; } if (tmp) { BLI_remlink(&ob->sensors, sens); BLI_insertlinkbefore(&ob->sensors, tmp, sens); } } /* move down */ else if ( val==2 && sens->next) { for (tmp=sens->next; tmp; tmp=tmp->next) { if (tmp->flag & SENS_VISIBLE) break; } if (tmp) { BLI_remlink(&ob->sensors, sens); BLI_insertlink(&ob->sensors, tmp, sens); } } }
static int dupliob_move_down_exec(bContext *C, wmOperator *UNUSED(op)) { PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem); ParticleSystem *psys= ptr.data; ParticleSettings *part; ParticleDupliWeight *dw; if(!psys) return OPERATOR_CANCELLED; part = psys->part; for(dw=part->dupliweights.first; dw; dw=dw->next) { if(dw->flag & PART_DUPLIW_CURRENT && dw->next) { BLI_remlink(&part->dupliweights, dw); BLI_insertlink(&part->dupliweights, dw->next, dw); WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } return OPERATOR_FINISHED; }
static int target_move_down_exec(bContext *C, wmOperator *UNUSED(op)) { PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem); ParticleSystem *psys= ptr.data; Object *ob = ptr.id.data; ParticleTarget *pt; if(!psys) return OPERATOR_CANCELLED; pt = psys->targets.first; for(; pt; pt=pt->next) { if(pt->flag & PTARGET_CURRENT && pt->next) { BLI_remlink(&psys->targets, pt); BLI_insertlink(&psys->targets, pt->next, pt); DAG_id_tag_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); break; } } return OPERATOR_FINISHED; }
static int state_move_down_exec(bContext *C, wmOperator *UNUSED(op)) { PointerRNA ptr = CTX_data_pointer_get_type(C, "particle_system", &RNA_ParticleSystem); ParticleSystem *psys= ptr.data; BoidSettings *boids; BoidState *state; if(!psys || !psys->part || psys->part->phystype != PART_PHYS_BOIDS) return OPERATOR_CANCELLED; boids = psys->part->boids; for(state = boids->states.first; state; state=state->next) { if(state->flag & BOIDSTATE_CURRENT && state->next) { BLI_remlink(&boids->states, state); BLI_insertlink(&boids->states, state->next, state); DAG_id_tag_update(&psys->part->id, OB_RECALC_DATA|PSYS_RECALC_RESET); break; } } return OPERATOR_FINISHED; }
/************************ 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_system", &RNA_ParticleSystem); ParticleSystem *psys= ptr.data; Object *ob = ptr.id.data; BoidSettings *boids; BoidState *state; if(!psys || !psys->part || psys->part->phystype != PART_PHYS_BOIDS) return OPERATOR_CANCELLED; boids = psys->part->boids; for(state = boids->states.first; state; state=state->next) { if(state->flag & BOIDSTATE_CURRENT && state->prev) { BLI_remlink(&boids->states, state); BLI_insertlink(&boids->states, state->prev->prev, state); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); break; } } return OPERATOR_FINISHED; }