Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/uvedit/uvedit_islands.c
| Show First 20 Lines • Show All 253 Lines • ▼ Show 20 Lines | |||||
| /** | /** | ||||
| * Calculates distance to nearest UDIM image tile in UV space and its UDIM tile number. | * Calculates distance to nearest UDIM image tile in UV space and its UDIM tile number. | ||||
| */ | */ | ||||
| static float uv_nearest_image_tile_distance(const Image *image, | static float uv_nearest_image_tile_distance(const Image *image, | ||||
| const float coords[2], | const float coords[2], | ||||
| float nearest_tile_co[2]) | float nearest_tile_co[2]) | ||||
| { | { | ||||
| if (BKE_image_find_nearest_tile_with_offset(image, coords, nearest_tile_co) == -1) { | BKE_image_find_nearest_tile_with_offset(image, coords, nearest_tile_co); | ||||
| zero_v2(nearest_tile_co); | |||||
| } | |||||
| /* Add 0.5 to get tile center coordinates. */ | /* Add 0.5 to get tile center coordinates. */ | ||||
| float nearest_tile_center_co[2] = {nearest_tile_co[0], nearest_tile_co[1]}; | float nearest_tile_center_co[2] = {nearest_tile_co[0], nearest_tile_co[1]}; | ||||
| add_v2_fl(nearest_tile_center_co, 0.5f); | add_v2_fl(nearest_tile_center_co, 0.5f); | ||||
| return len_squared_v2v2(coords, nearest_tile_center_co); | return len_squared_v2v2(coords, nearest_tile_center_co); | ||||
| } | } | ||||
| /** | /** | ||||
| ▲ Show 20 Lines • Show All 308 Lines • ▼ Show 20 Lines | else { | ||||
| else { | else { | ||||
| float nearest_image_tile_co[2] = {FLT_MAX, FLT_MAX}; | float nearest_image_tile_co[2] = {FLT_MAX, FLT_MAX}; | ||||
| float nearest_image_tile_dist = FLT_MAX, nearest_grid_tile_dist = FLT_MAX; | float nearest_image_tile_dist = FLT_MAX, nearest_grid_tile_dist = FLT_MAX; | ||||
| if (image) { | if (image) { | ||||
| nearest_image_tile_dist = uv_nearest_image_tile_distance( | nearest_image_tile_dist = uv_nearest_image_tile_distance( | ||||
| image, selection_center, nearest_image_tile_co); | image, selection_center, nearest_image_tile_co); | ||||
| } | } | ||||
| /* TODO: ...looks buggy... */ | |||||
| float nearest_grid_tile_co[2] = {0.0f, 0.0f}; | float nearest_grid_tile_co[2] = {0.0f, 0.0f}; | ||||
| nearest_grid_tile_dist = uv_nearest_grid_tile_distance( | nearest_grid_tile_dist = uv_nearest_grid_tile_distance( | ||||
| udim_grid, selection_center, nearest_grid_tile_co); | udim_grid, selection_center, nearest_grid_tile_co); | ||||
| base_offset[0] = (nearest_image_tile_dist < nearest_grid_tile_dist) ? | base_offset[0] = (nearest_image_tile_dist < nearest_grid_tile_dist) ? | ||||
| nearest_image_tile_co[0] : | nearest_image_tile_co[0] : | ||||
| nearest_grid_tile_co[0]; | nearest_grid_tile_co[0]; | ||||
| base_offset[1] = (nearest_image_tile_dist < nearest_grid_tile_dist) ? | base_offset[1] = (nearest_image_tile_dist < nearest_grid_tile_dist) ? | ||||
| Show All 38 Lines | |||||