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')
-rw-r--r--source/blender/editors/transform/transform_convert_cursor.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/source/blender/editors/transform/transform_convert_cursor.c b/source/blender/editors/transform/transform_convert_cursor.c
index ed96eba7f6c..4846e8d2d1a 100644
--- a/source/blender/editors/transform/transform_convert_cursor.c
+++ b/source/blender/editors/transform/transform_convert_cursor.c
@@ -43,44 +43,51 @@
static void createTransCursor_2D_impl(TransInfo *t, float cursor_location[2])
{
TransData *td;
+ TransData2D *td2d;
{
BLI_assert(t->data_container_len == 1);
TransDataContainer *tc = t->data_container;
tc->data_len = 1;
td = tc->data = MEM_callocN(sizeof(TransData), "TransTexspace");
- td->ext = tc->data_ext = MEM_callocN(sizeof(TransDataExtension), "TransTexspace");
+ td2d = tc->data_2d = MEM_callocN(tc->data_len * sizeof(TransData2D), "TransObData2D(Cursor)");
+ td->ext = tc->data_ext = MEM_callocN(sizeof(TransDataExtension), "TransCursorExt");
}
td->flag = TD_SELECTED;
+ td2d->loc2d = cursor_location;
+
/* UV coords are scaled by aspects (see #UVsToTransData). This also applies for the Cursor in the
* UV Editor which also means that for display and when the cursor coords are flushed
* (recalcData_cursor_image), these are converted each time. */
- cursor_location[0] = cursor_location[0] * t->aspect[0];
- cursor_location[1] = cursor_location[1] * t->aspect[1];
+ td2d->loc[0] = cursor_location[0] * t->aspect[0];
+ td2d->loc[1] = cursor_location[1] * t->aspect[1];
+ td2d->loc[2] = 0.0f;
+
+ copy_v3_v3(td->center, td2d->loc);
- copy_v3_v3(td->center, cursor_location);
td->ob = NULL;
unit_m3(td->mtx);
unit_m3(td->axismtx);
pseudoinverse_m3_m3(td->smtx, td->mtx, PSEUDOINVERSE_EPSILON);
- td->loc = cursor_location;
- copy_v3_v3(td->iloc, cursor_location);
+ td->loc = td2d->loc;
+ copy_v3_v3(td->iloc, td2d->loc);
}
static void recalcData_cursor_2D_impl(TransInfo *t)
{
TransDataContainer *tc = t->data_container;
TransData *td = tc->data;
+ TransData2D *td2d = tc->data_2d;
float aspect_inv[2];
aspect_inv[0] = 1.0f / t->aspect[0];
aspect_inv[1] = 1.0f / t->aspect[1];
- td->loc[0] = td->loc[0] * aspect_inv[0];
- td->loc[1] = td->loc[1] * aspect_inv[1];
+ td2d->loc2d[0] = td->loc[0] * aspect_inv[0];
+ td2d->loc2d[1] = td->loc[1] * aspect_inv[1];
DEG_id_tag_update(&t->scene->id, ID_RECALC_COPY_ON_WRITE);
}