Cleanup: replace dict with set for bmesh_utils.bmesh_linked_uv_islands

Also correct doc-string syntax.
This commit is contained in:
Campbell Barton 2022-08-25 16:41:22 +10:00
parent de570dc87e
commit 012db9e820
2 changed files with 12 additions and 11 deletions

View File

@ -6,6 +6,7 @@ __all__ = (
import bmesh
def match_uv(face, vert, uv, uv_layer):
for loop in face.loops:
if loop.vert == vert:
@ -17,12 +18,12 @@ def bmesh_linked_uv_islands(bm, uv_layer):
"""
Returns lists of face indices connected by UV islands.
For `bpy.types.Mesh`, use `mesh_linked_uv_islands` instead.
For meshes use :class:`bpy.types.Mesh.mesh_linked_uv_islands` instead.
:arg bm: the bmesh used to group with.
:type bmesh: :class: `BMesh`
:type bmesh: :class:`BMesh`
:arg uv_layer: the UV layer to source UVs from.
:type bmesh: :class: `BMLayerItem`
:type bmesh: :class:`BMLayerItem`
:return: list of lists containing polygon indices
:rtype: list
"""
@ -30,27 +31,27 @@ def bmesh_linked_uv_islands(bm, uv_layer):
result = []
bm.faces.ensure_lookup_table()
used = {}
used = set()
for seed_face in bm.faces:
seed_index = seed_face.index
if used.get(seed_index):
continue # Face has already been processed.
used[seed_index] = True
if seed_index in used:
continue # Face has already been processed.
used.add(seed_index)
island = [seed_index]
stack = [seed_face] # Faces still to consider on this island.
stack = [seed_face] # Faces still to consider on this island.
while stack:
current_face = stack.pop()
for loop in current_face.loops:
v = loop.vert
uv = loop[uv_layer].uv
for f in v.link_faces:
if used.get(f.index):
if f.index in used:
continue
if not match_uv(f, v, uv, uv_layer):
continue
# `f` is part of island, add to island and stack
used[f.index] = True
used.add(f.index)
island.append(f.index)
stack.append(f)
result.append(island)

View File

@ -52,7 +52,7 @@ def get_random_transform(transform_params, entropy):
def randomize_uv_transform_island(bm, uv_layer, faces, transform_params):
entropy = min(faces) # Ensure consistent random values for island, regardless of selection etc.
entropy = min(faces) # Ensure consistent random values for island, regardless of selection etc.
transform = get_random_transform(transform_params, entropy)
# Find bounding box.