[PolyCollection] copy vertex offsets when making normalized form
This commit is contained in:
parent
786716fc62
commit
df578d7764
2 changed files with 25 additions and 1 deletions
|
|
@ -219,7 +219,7 @@ class PolyCollection(Shape):
|
|||
(offset, scale / norm_value, rotation, False),
|
||||
lambda: PolyCollection(
|
||||
vertex_lists=rotated_vertices * norm_value,
|
||||
vertex_offsets=self._vertex_offsets,
|
||||
vertex_offsets=self._vertex_offsets.copy(),
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -212,3 +212,27 @@ def test_poly_collection_valid() -> None:
|
|||
assert len(sorted_shapes) == 4
|
||||
# Just verify it doesn't crash and is stable
|
||||
assert sorted(sorted_shapes) == sorted_shapes
|
||||
|
||||
|
||||
def test_poly_collection_normalized_form_reconstruction_is_independent() -> None:
|
||||
pc = PolyCollection([[0, 0], [1, 0], [0, 1]], [0])
|
||||
_intrinsic, _extrinsic, rebuild = pc.normalized_form(1)
|
||||
|
||||
clone = rebuild()
|
||||
clone.vertex_offsets[:] = [5]
|
||||
|
||||
assert_equal(pc.vertex_offsets, [0])
|
||||
assert_equal(clone.vertex_offsets, [5])
|
||||
|
||||
|
||||
def test_poly_collection_normalized_form_rebuilds_independent_clones() -> None:
|
||||
pc = PolyCollection([[0, 0], [1, 0], [0, 1]], [0])
|
||||
_intrinsic, _extrinsic, rebuild = pc.normalized_form(1)
|
||||
|
||||
first = rebuild()
|
||||
second = rebuild()
|
||||
first.vertex_offsets[:] = [7]
|
||||
|
||||
assert_equal(first.vertex_offsets, [7])
|
||||
assert_equal(second.vertex_offsets, [0])
|
||||
assert_equal(pc.vertex_offsets, [0])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue