Fix T66627: Multiobject Edit UV constraint to image bounds

This was broken since the original commit to handle multi-object
editing: rBbfc9d426bb95.
This commit is contained in:
Dalai Felinto 2019-07-09 20:07:08 -03:00
parent 91b4262728
commit fde88ad9d2
Notes: blender-bot 2023-02-14 10:37:49 +01:00
Referenced by issue #66627, Multiobject Edit UV constraint to image bounds behaviour it´s broken
1 changed files with 38 additions and 40 deletions

View File

@ -3710,50 +3710,48 @@ bool clipUVTransform(TransInfo *t, float vec[2], const bool resize)
for (a = 0, td = tc->data; a < tc->data_len; a++, td++) {
minmax_v2v2_v2(min, max, td->loc);
}
}
if (resize) {
if (min[0] < 0.0f && t->center_global[0] > 0.0f &&
t->center_global[0] < t->aspect[0] * 0.5f) {
vec[0] *= t->center_global[0] / (t->center_global[0] - min[0]);
}
else if (max[0] > t->aspect[0] && t->center_global[0] < t->aspect[0]) {
vec[0] *= (t->center_global[0] - t->aspect[0]) / (t->center_global[0] - max[0]);
}
else {
clipx = 0;
}
if (min[1] < 0.0f && t->center_global[1] > 0.0f &&
t->center_global[1] < t->aspect[1] * 0.5f) {
vec[1] *= t->center_global[1] / (t->center_global[1] - min[1]);
}
else if (max[1] > t->aspect[1] && t->center_global[1] < t->aspect[1]) {
vec[1] *= (t->center_global[1] - t->aspect[1]) / (t->center_global[1] - max[1]);
}
else {
clipy = 0;
}
if (resize) {
if (min[0] < 0.0f && t->center_global[0] > 0.0f && t->center_global[0] < t->aspect[0] * 0.5f) {
vec[0] *= t->center_global[0] / (t->center_global[0] - min[0]);
}
else if (max[0] > t->aspect[0] && t->center_global[0] < t->aspect[0]) {
vec[0] *= (t->center_global[0] - t->aspect[0]) / (t->center_global[0] - max[0]);
}
else {
if (min[0] < 0.0f) {
vec[0] -= min[0];
}
else if (max[0] > t->aspect[0]) {
vec[0] -= max[0] - t->aspect[0];
}
else {
clipx = 0;
}
clipx = 0;
}
if (min[1] < 0.0f) {
vec[1] -= min[1];
}
else if (max[1] > t->aspect[1]) {
vec[1] -= max[1] - t->aspect[1];
}
else {
clipy = 0;
}
if (min[1] < 0.0f && t->center_global[1] > 0.0f && t->center_global[1] < t->aspect[1] * 0.5f) {
vec[1] *= t->center_global[1] / (t->center_global[1] - min[1]);
}
else if (max[1] > t->aspect[1] && t->center_global[1] < t->aspect[1]) {
vec[1] *= (t->center_global[1] - t->aspect[1]) / (t->center_global[1] - max[1]);
}
else {
clipy = 0;
}
}
else {
if (min[0] < 0.0f) {
vec[0] -= min[0];
}
else if (max[0] > t->aspect[0]) {
vec[0] -= max[0] - t->aspect[0];
}
else {
clipx = 0;
}
if (min[1] < 0.0f) {
vec[1] -= min[1];
}
else if (max[1] > t->aspect[1]) {
vec[1] -= max[1] - t->aspect[1];
}
else {
clipy = 0;
}
}