diff options
author | Martin Poirier <theeth@yahoo.com> | 2009-04-27 19:43:35 +0400 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2009-04-27 19:43:35 +0400 |
commit | c36fb8c913dd935239c4a9f641766a642bf1bebf (patch) | |
tree | 29677b0300ac0964401788a8f133ed0bcee6aa90 /source/blender/editors | |
parent | 7f21e7f4a30332e6f7483304b5d1fdce0c4976e7 (diff) |
2.5
Fix repeat crash with transform. Just remove stupid twmat, don't need to cache results in view3d.
Made it more safe too.
Diffstat (limited to 'source/blender/editors')
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 1 | ||||
-rw-r--r-- | source/blender/editors/transform/transform.c | 14 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_orientations.c | 22 |
3 files changed, 15 insertions, 22 deletions
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index 0c41d6b4917..9ed7dd50d2e 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -183,7 +183,6 @@ static SpaceLink *view3d_new(const bContext *C) rv3d->persp= 1; rv3d->view= 7; rv3d->dist= 10.0; - Mat4One(rv3d->twmat); return (SpaceLink *)v3d; } diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index d588a73789c..3231c066196 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -985,9 +985,8 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) RNA_boolean_set(op->ptr, "mirror", t->flag & T_MIRROR); } - if (RNA_struct_find_property(op->ptr, "constraint_mode")) + if (RNA_struct_find_property(op->ptr, "constraint_axis")) { - RNA_int_set(op->ptr, "constraint_mode", t->con.mode); RNA_int_set(op->ptr, "constraint_orientation", t->current_orientation); if (t->con.mode & CON_APPLY) @@ -1038,18 +1037,11 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int return 0; } - initTransformOrientation(C, t); - if(t->spacetype == SPACE_VIEW3D) { //calc_manipulator_stats(curarea); - if (t->ar->regiontype == RGN_TYPE_WINDOW) - { - RegionView3D *rv3d = t->ar->regiondata; - Mat3CpyMat4(t->spacemtx, rv3d->twmat); - } - Mat3Ortho(t->spacemtx); - + initTransformOrientation(C, t); + t->draw_handle = ED_region_draw_cb_activate(t->ar->type, drawTransform, t, REGION_DRAW_POST); } else if(t->spacetype == SPACE_IMAGE) { diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index 06fc7d99659..d3e4e2b1421 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -405,7 +405,6 @@ int BIF_countTransformOrientation(const bContext *C) { void applyTransformOrientation(bContext *C, TransInfo *t) { TransformOrientation *ts; View3D *v3d = CTX_wm_view3d(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); int selected_index = (v3d->twmode - V3D_MANIP_CUSTOM); int i; @@ -414,7 +413,6 @@ void applyTransformOrientation(bContext *C, TransInfo *t) { if (selected_index == i) { strcpy(t->spacename, ts->name); Mat3CpyMat3(t->spacemtx, ts->mat); - Mat4CpyMat3(rv3d->twmat, ts->mat); break; } } @@ -448,14 +446,11 @@ static int count_bone_select(bArmature *arm, ListBase *lb, int do_it) void initTransformOrientation(bContext *C, TransInfo *t) { View3D *v3d = CTX_wm_view3d(C); - RegionView3D *rv3d = CTX_wm_region_view3d(C); Object *ob = CTX_data_active_object(C); Object *obedit = CTX_data_active_object(C); float normal[3]={0.0, 0.0, 0.0}; float plane[3]={0.0, 0.0, 0.0}; - if(t->spacetype != SPACE_VIEW3D) return; - switch(t->current_orientation) { case V3D_MANIP_GLOBAL: strcpy(t->spacename, "global"); @@ -500,28 +495,35 @@ void initTransformOrientation(bContext *C, TransInfo *t) if (type == ORIENTATION_NONE) { - Mat4One(rv3d->twmat); + Mat3One(t->spacemtx); } else { - Mat4CpyMat3(rv3d->twmat, mat); + Mat3CpyMat3(t->spacemtx, mat); } break; } /* no break we define 'normal' as 'local' in Object mode */ case V3D_MANIP_LOCAL: strcpy(t->spacename, "local"); - Mat4CpyMat4(rv3d->twmat, ob->obmat); - Mat4Ortho(rv3d->twmat); + Mat3CpyMat4(t->spacemtx, ob->obmat); + Mat3Ortho(t->spacemtx); break; case V3D_MANIP_VIEW: + if (t->ar->regiontype == RGN_TYPE_WINDOW) { + RegionView3D *rv3d = t->ar->regiondata; float mat[3][3]; + strcpy(t->spacename, "view"); Mat3CpyMat4(mat, rv3d->viewinv); Mat3Ortho(mat); - Mat4CpyMat3(rv3d->twmat, mat); + Mat3CpyMat3(t->spacemtx, mat); + } + else + { + Mat3One(t->spacemtx); } break; default: /* V3D_MANIP_CUSTOM */ |