Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/transform/transform_generics.c
| Show First 20 Lines • Show All 1,997 Lines • ▼ Show 20 Lines | |||||
| /** | /** | ||||
| * \param select_only: only get active center from data being transformed. | * \param select_only: only get active center from data being transformed. | ||||
| */ | */ | ||||
| bool calculateCenterActive(TransInfo *t, bool select_only, float r_center[3]) | bool calculateCenterActive(TransInfo *t, bool select_only, float r_center[3]) | ||||
| { | { | ||||
| TransDataContainer *tc = TRANS_DATA_CONTAINER_FIRST_OK(t); | TransDataContainer *tc = TRANS_DATA_CONTAINER_FIRST_OK(t); | ||||
| bool ok = false; | if (t->spacetype != SPACE_VIEW3D) { | ||||
| return false; | |||||
| if (tc->obedit) { | } | ||||
| else if (tc->obedit) { | |||||
| if (ED_object_calc_active_center_for_editmode(tc->obedit, select_only, r_center)) { | if (ED_object_calc_active_center_for_editmode(tc->obedit, select_only, r_center)) { | ||||
| mul_m4_v3(tc->obedit->obmat, r_center); | mul_m4_v3(tc->obedit->obmat, r_center); | ||||
| ok = true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| else if (t->flag & T_POSE) { | else if (t->flag & T_POSE) { | ||||
| ViewLayer *view_layer = t->view_layer; | ViewLayer *view_layer = t->view_layer; | ||||
| Object *ob = OBACT(view_layer) ; | Object *ob = OBACT(view_layer) ; | ||||
| if (ED_object_calc_active_center_for_posemode(ob, select_only, r_center)) { | if (ED_object_calc_active_center_for_posemode(ob, select_only, r_center)) { | ||||
| mul_m4_v3(ob->obmat, r_center); | mul_m4_v3(ob->obmat, r_center); | ||||
| ok = true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| else if (t->options & CTX_PAINT_CURVE) { | else if (t->options & CTX_PAINT_CURVE) { | ||||
| Paint *p = BKE_paint_get_active(t->scene, t->view_layer); | Paint *p = BKE_paint_get_active(t->scene, t->view_layer); | ||||
| Brush *br = p->brush; | Brush *br = p->brush; | ||||
| PaintCurve *pc = br->paint_curve; | PaintCurve *pc = br->paint_curve; | ||||
| copy_v3_v3(r_center, pc->points[pc->add_index - 1].bez.vec[1]); | copy_v3_v3(r_center, pc->points[pc->add_index - 1].bez.vec[1]); | ||||
| r_center[2] = 0.0f; | r_center[2] = 0.0f; | ||||
| ok = true; | return true; | ||||
| } | } | ||||
| else { | else { | ||||
| /* object mode */ | /* object mode */ | ||||
| ViewLayer *view_layer = t->view_layer; | ViewLayer *view_layer = t->view_layer; | ||||
| Object *ob = OBACT(view_layer); | Object *ob = OBACT(view_layer); | ||||
| Base *base = BASACT(view_layer); | Base *base = BASACT(view_layer); | ||||
| if (ob && ((!select_only) || ((base->flag & BASE_SELECTED) != 0))) { | if (ob && ((!select_only) || ((base->flag & BASE_SELECTED) != 0))) { | ||||
| copy_v3_v3(r_center, ob->obmat[3]); | copy_v3_v3(r_center, ob->obmat[3]); | ||||
| ok = true; | return true; | ||||
| } | } | ||||
| } | } | ||||
| return ok; | return false; | ||||
| } | } | ||||
| static void calculateCenter_FromAround(TransInfo *t, int around, float r_center[3]) | static void calculateCenter_FromAround(TransInfo *t, int around, float r_center[3]) | ||||
| { | { | ||||
| switch (around) { | switch (around) { | ||||
| case V3D_AROUND_CENTER_BOUNDS: | case V3D_AROUND_CENTER_BOUNDS: | ||||
| calculateCenterBound(t, r_center); | calculateCenterBound(t, r_center); | ||||
| break; | break; | ||||
| ▲ Show 20 Lines • Show All 340 Lines • Show Last 20 Lines | |||||