UV: remove "UV Local View" for UV editing
This feature was added when Blender used tex-face (per-face images), but doesn't make as much sense since this was removed. Removing this from UV edit-mode as this wasn't working in any of the 2.8x releases, causing UV's to be visible but unselectable. Resolves issue raised in T76958.
This commit is contained in:
parent
59aed2a255
commit
69e331201e
|
@ -93,9 +93,6 @@ class IMAGE_MT_view(Menu):
|
|||
layout.separator()
|
||||
|
||||
layout.prop(sima, "use_realtime_update")
|
||||
if show_uvedit:
|
||||
layout.prop(tool_settings, "show_uv_local_view")
|
||||
|
||||
layout.prop(uv, "show_metadata")
|
||||
|
||||
if paint.brush and (context.image_paint_object or sima.mode == 'PAINT'):
|
||||
|
|
|
@ -50,20 +50,17 @@ void ED_operatortypes_uvedit(void);
|
|||
void ED_keymap_uvedit(struct wmKeyConfig *keyconf);
|
||||
|
||||
bool ED_uvedit_minmax(const struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object *obedit,
|
||||
float min[2],
|
||||
float max[2]);
|
||||
void ED_uvedit_select_all(struct BMesh *bm);
|
||||
|
||||
bool ED_uvedit_minmax_multi(const struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object **objects_edit,
|
||||
uint objects_len,
|
||||
float r_min[2],
|
||||
float r_max[2]);
|
||||
bool ED_uvedit_center_multi(const struct Scene *scene,
|
||||
Image *ima,
|
||||
struct Object **objects_edit,
|
||||
uint objects_len,
|
||||
float r_cent[2],
|
||||
|
@ -95,11 +92,7 @@ void ED_object_assign_active_image(struct Main *bmain,
|
|||
bool ED_uvedit_test(struct Object *obedit);
|
||||
|
||||
/* visibility and selection */
|
||||
bool uvedit_face_visible_nolocal_ex(const struct ToolSettings *ts, struct BMFace *efa);
|
||||
bool uvedit_face_visible_test_ex(const struct ToolSettings *ts,
|
||||
struct Object *obedit,
|
||||
struct Image *ima,
|
||||
struct BMFace *efa);
|
||||
bool uvedit_face_visible_test_ex(const struct ToolSettings *ts, struct BMFace *efa);
|
||||
bool uvedit_face_select_test_ex(const struct ToolSettings *ts,
|
||||
struct BMFace *efa,
|
||||
const int cd_loop_uv_offset);
|
||||
|
@ -110,11 +103,7 @@ bool uvedit_uv_select_test_ex(const struct ToolSettings *ts,
|
|||
struct BMLoop *l,
|
||||
const int cd_loop_uv_offset);
|
||||
|
||||
bool uvedit_face_visible_nolocal(const struct Scene *scene, struct BMFace *efa);
|
||||
bool uvedit_face_visible_test(const struct Scene *scene,
|
||||
struct Object *obedit,
|
||||
struct Image *ima,
|
||||
struct BMFace *efa);
|
||||
bool uvedit_face_visible_test(const struct Scene *scene, struct BMFace *efa);
|
||||
bool uvedit_face_select_test(const struct Scene *scene,
|
||||
struct BMFace *efa,
|
||||
const int cd_loop_uv_offset);
|
||||
|
@ -175,12 +164,10 @@ void uvedit_uv_select_disable(struct BMEditMesh *em,
|
|||
|
||||
bool ED_uvedit_nearest_uv(const struct Scene *scene,
|
||||
struct Object *obedit,
|
||||
struct Image *ima,
|
||||
const float co[2],
|
||||
float *dist_sq,
|
||||
float r_uv[2]);
|
||||
bool ED_uvedit_nearest_uv_multi(const struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object **objects,
|
||||
const uint objects_len,
|
||||
const float co[2],
|
||||
|
|
|
@ -548,8 +548,7 @@ static UvSculptData *uv_sculpt_stroke_init(bContext *C, wmOperator *op, const wm
|
|||
if (do_island_optimization) {
|
||||
UvElement *element;
|
||||
UvNearestHit hit = UV_NEAREST_HIT_INIT;
|
||||
Image *ima = CTX_data_edit_image(C);
|
||||
uv_find_nearest_vert(scene, ima, obedit, co, 0.0f, &hit);
|
||||
uv_find_nearest_vert(scene, obedit, co, 0.0f, &hit);
|
||||
|
||||
element = BM_uv_element_get(data->elementMap, hit.efa, hit.l);
|
||||
island_index = element->island;
|
||||
|
|
|
@ -885,7 +885,6 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
Scene *scene;
|
||||
ViewLayer *view_layer;
|
||||
Object *obedit;
|
||||
Image *ima;
|
||||
|
||||
/* retrieve state */
|
||||
sima = CTX_wm_space_image(C);
|
||||
|
@ -894,15 +893,13 @@ static int image_view_selected_exec(bContext *C, wmOperator *UNUSED(op))
|
|||
view_layer = CTX_data_view_layer(C);
|
||||
obedit = CTX_data_edit_object(C);
|
||||
|
||||
ima = ED_space_image(sima);
|
||||
|
||||
/* get bounds */
|
||||
float min[2], max[2];
|
||||
if (ED_space_image_show_uvedit(sima, obedit)) {
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
|
||||
view_layer, ((View3D *)NULL), &objects_len);
|
||||
bool success = ED_uvedit_minmax_multi(scene, ima, objects, objects_len, min, max);
|
||||
bool success = ED_uvedit_minmax_multi(scene, objects, objects_len, min, max);
|
||||
MEM_freeN(objects);
|
||||
if (!success) {
|
||||
return OPERATOR_CANCELLED;
|
||||
|
|
|
@ -1450,7 +1450,6 @@ static void UVsToTransData(const float aspect[2],
|
|||
void createTransUVs(bContext *C, TransInfo *t)
|
||||
{
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
Image *ima = CTX_data_edit_image(C);
|
||||
Scene *scene = t->scene;
|
||||
ToolSettings *ts = CTX_data_tool_settings(C);
|
||||
|
||||
|
@ -1500,7 +1499,7 @@ void createTransUVs(bContext *C, TransInfo *t)
|
|||
BM_ITER_MESH (efa, &iter, em->bm, BM_FACES_OF_MESH) {
|
||||
BMLoop *l;
|
||||
|
||||
if (!uvedit_face_visible_test(scene, tc->obedit, ima, efa)) {
|
||||
if (!uvedit_face_visible_test(scene, efa)) {
|
||||
BM_elem_flag_disable(efa, BM_ELEM_TAG);
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -217,14 +217,12 @@ static bool gizmo2d_calc_bounds(const bContext *C, float *r_center, float *r_min
|
|||
ScrArea *area = CTX_wm_area(C);
|
||||
bool changed = false;
|
||||
if (area->spacetype == SPACE_IMAGE) {
|
||||
SpaceImage *sima = area->spacedata.first;
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
ViewLayer *view_layer = CTX_data_view_layer(C);
|
||||
Image *ima = ED_space_image(sima);
|
||||
uint objects_len = 0;
|
||||
Object **objects = BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(
|
||||
view_layer, NULL, &objects_len);
|
||||
if (ED_uvedit_minmax_multi(scene, ima, objects, objects_len, r_min, r_max)) {
|
||||
if (ED_uvedit_minmax_multi(scene, objects, objects_len, r_min, r_max)) {
|
||||
changed = true;
|
||||
}
|
||||
MEM_freeN(objects);
|
||||
|
|
|
@ -1106,7 +1106,6 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec))
|
|||
}
|
||||
else if (t->spacetype == SPACE_IMAGE && t->obedit_type == OB_MESH) {
|
||||
if (t->tsnap.mode & SCE_SNAP_MODE_VERTEX) {
|
||||
Image *ima = ED_space_image(t->area->spacedata.first);
|
||||
float co[2];
|
||||
|
||||
UI_view2d_region_to_view(&t->region->v2d, t->mval[0], t->mval[1], &co[0], &co[1]);
|
||||
|
@ -1117,7 +1116,7 @@ static void CalcSnapGeometry(TransInfo *t, float *UNUSED(vec))
|
|||
|
||||
float dist_sq = FLT_MAX;
|
||||
if (ED_uvedit_nearest_uv_multi(
|
||||
t->scene, ima, objects, objects_len, co, &dist_sq, t->tsnap.snapPoint)) {
|
||||
t->scene, objects, objects_len, co, &dist_sq, t->tsnap.snapPoint)) {
|
||||
t->tsnap.snapPoint[0] *= t->aspect[0];
|
||||
t->tsnap.snapPoint[1] *= t->aspect[1];
|
||||
|
||||
|
|
|
@ -58,8 +58,7 @@
|
|||
|
||||
/* UV Utilities */
|
||||
|
||||
static int uvedit_center(
|
||||
Scene *scene, Object **objects, uint objects_len, Image *ima, float center[2])
|
||||
static int uvedit_center(Scene *scene, Object **objects, uint objects_len, float center[2])
|
||||
{
|
||||
BMFace *f;
|
||||
BMLoop *l;
|
||||
|
@ -75,7 +74,7 @@ static int uvedit_center(
|
|||
const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
|
||||
|
||||
BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) {
|
||||
if (!uvedit_face_visible_test(scene, obedit, ima, f)) {
|
||||
if (!uvedit_face_visible_test(scene, f)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -97,8 +96,10 @@ static int uvedit_center(
|
|||
return tot;
|
||||
}
|
||||
|
||||
static void uvedit_translate(
|
||||
Scene *scene, Object **objects, uint objects_len, Image *ima, const float delta[2])
|
||||
static void uvedit_translate(Scene *scene,
|
||||
Object **objects,
|
||||
uint objects_len,
|
||||
const float delta[2])
|
||||
{
|
||||
BMFace *f;
|
||||
BMLoop *l;
|
||||
|
@ -112,7 +113,7 @@ static void uvedit_translate(
|
|||
const int cd_loop_uv_offset = CustomData_get_offset(&em->bm->ldata, CD_MLOOPUV);
|
||||
|
||||
BM_ITER_MESH (f, &iter, em->bm, BM_FACES_OF_MESH) {
|
||||
if (!uvedit_face_visible_test(scene, obedit, ima, f)) {
|
||||
if (!uvedit_face_visible_test(scene, f)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -134,7 +135,6 @@ static void uvedit_vertex_buttons(const bContext *C, uiBlock *block)
|
|||
{
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Image *ima = sima->image;
|
||||
float center[2];
|
||||
int imx, imy, step, digits;
|
||||
float width = 8 * UI_UNIT_X;
|
||||
|
@ -144,7 +144,7 @@ static void uvedit_vertex_buttons(const bContext *C, uiBlock *block)
|
|||
|
||||
ED_space_image_get_size(sima, &imx, &imy);
|
||||
|
||||
if (uvedit_center(scene, objects, objects_len, ima, center)) {
|
||||
if (uvedit_center(scene, objects, objects_len, center)) {
|
||||
float range_xy[2][2] = {
|
||||
{-10.0f, 10.0f},
|
||||
{-10.0f, 10.0f},
|
||||
|
@ -212,7 +212,6 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
|
|||
{
|
||||
SpaceImage *sima = CTX_wm_space_image(C);
|
||||
Scene *scene = CTX_data_scene(C);
|
||||
Image *ima = sima->image;
|
||||
float center[2], delta[2];
|
||||
int imx, imy;
|
||||
|
||||
|
@ -225,7 +224,7 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
|
|||
CTX_data_view_layer(C), CTX_wm_view3d(C), &objects_len);
|
||||
|
||||
ED_space_image_get_size(sima, &imx, &imy);
|
||||
uvedit_center(scene, objects, objects_len, ima, center);
|
||||
uvedit_center(scene, objects, objects_len, center);
|
||||
|
||||
if (sima->flag & SI_COORDFLOATS) {
|
||||
delta[0] = uvedit_old_center[0] - center[0];
|
||||
|
@ -236,7 +235,7 @@ static void do_uvedit_vertex(bContext *C, void *UNUSED(arg), int event)
|
|||
delta[1] = uvedit_old_center[1] / imy - center[1];
|
||||
}
|
||||
|
||||
uvedit_translate(scene, objects, objects_len, ima, delta);
|
||||
uvedit_translate(scene, objects, objects_len, delta);
|
||||
|
||||
WM_event_add_notifier(C, NC_IMAGE, sima->image);
|
||||
for (uint ob_index = 0; ob_index < objects_len; ob_index++) {
|
||||
|
|
|
@ -57,13 +57,11 @@ typedef struct UvNearestHit {
|
|||
}
|
||||
|
||||
bool uv_find_nearest_vert(struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object *obedit,
|
||||
const float co[2],
|
||||
const float penalty_dist,
|
||||
struct UvNearestHit *hit_final);
|
||||
bool uv_find_nearest_vert_multi(struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object **objects,
|
||||
const uint objects_len,
|
||||
const float co[2],
|
||||
|
@ -71,24 +69,20 @@ bool uv_find_nearest_vert_multi(struct Scene *scene,
|
|||
struct UvNearestHit *hit_final);
|
||||
|
||||
bool uv_find_nearest_edge(struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object *obedit,
|
||||
const float co[2],
|
||||
struct UvNearestHit *hit_final);
|
||||
bool uv_find_nearest_edge_multi(struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object **objects,
|
||||
const uint objects_len,
|
||||
const float co[2],
|
||||
struct UvNearestHit *hit_final);
|
||||
|
||||
bool uv_find_nearest_face(struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object *obedit,
|
||||
const float co[2],
|
||||
struct UvNearestHit *hit_final);
|
||||
bool uv_find_nearest_face_multi(struct Scene *scene,
|
||||
struct Image *ima,
|
||||
struct Object **objects,
|
||||
const uint objects_len,
|
||||
const float co[2],
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2550,12 +2550,11 @@ static StitchState *stitch_select(bContext *C,
|
|||
float co[2];
|
||||
UvNearestHit hit = UV_NEAREST_HIT_INIT;
|
||||
ARegion *region = CTX_wm_region(C);
|
||||
Image *ima = CTX_data_edit_image(C);
|
||||
|
||||
UI_view2d_region_to_view(®ion->v2d, event->mval[0], event->mval[1], &co[0], &co[1]);
|
||||
|
||||
if (ssc->mode == STITCH_VERT) {
|
||||
if (uv_find_nearest_vert_multi(scene, ima, ssc->objects, ssc->objects_len, co, 0.0f, &hit)) {
|
||||
if (uv_find_nearest_vert_multi(scene, ssc->objects, ssc->objects_len, co, 0.0f, &hit)) {
|
||||
/* Add vertex to selection, deselect all common uv's of vert other than selected and
|
||||
* update the preview. This behavior was decided so that you can do stuff like deselect
|
||||
* the opposite stitchable vertex and the initial still gets deselected */
|
||||
|
@ -2576,7 +2575,7 @@ static StitchState *stitch_select(bContext *C,
|
|||
return state;
|
||||
}
|
||||
}
|
||||
else if (uv_find_nearest_edge_multi(scene, ima, ssc->objects, ssc->objects_len, co, &hit)) {
|
||||
else if (uv_find_nearest_edge_multi(scene, ssc->objects, ssc->objects_len, co, &hit)) {
|
||||
/* find StitchState from hit->ob */
|
||||
StitchState *state = NULL;
|
||||
for (uint ob_index = 0; ob_index < ssc->objects_len; ob_index++) {
|
||||
|
|
Loading…
Reference in New Issue