[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),
|
(offset, scale / norm_value, rotation, False),
|
||||||
lambda: PolyCollection(
|
lambda: PolyCollection(
|
||||||
vertex_lists=rotated_vertices * norm_value,
|
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
|
assert len(sorted_shapes) == 4
|
||||||
# Just verify it doesn't crash and is stable
|
# Just verify it doesn't crash and is stable
|
||||||
assert sorted(sorted_shapes) == sorted_shapes
|
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