Skip to content

Commit bed31f2

Browse files
committed
SpriteHelper - fix vertex issue - "lower" is less than "upper"
1 parent a4a410a commit bed31f2

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

UnityPy/export/SpriteHelper.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,9 @@ def render_sprite_mesh(
222222

223223
def copy_triangle(
224224
src_img: Image.Image,
225-
src_tri: Tuple[float, float],
225+
src_tri: Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]],
226226
dst_img: Image.Image,
227-
dst_tri: Tuple[float, float],
227+
dst_tri: Tuple[Tuple[float, float], Tuple[float, float], Tuple[float, float]],
228228
) -> None:
229229
src_off = (
230230
(src_tri[1][0] - src_tri[0][0], src_tri[1][1] - src_tri[0][1]),
@@ -240,7 +240,15 @@ def copy_triangle(
240240
# no transform necessary, just copy the triangle
241241

242242
# make rectangle that contains the triangle
243-
upper_left, _, lower_right = sorted(src_tri)
243+
# upper_left, _, lower_right = sorted(src_tri)
244+
upper_left = (
245+
min(src_tri[0][0], src_tri[1][0], src_tri[2][0]),
246+
min(src_tri[0][1], src_tri[1][1], src_tri[2][1]),
247+
)
248+
lower_right = (
249+
max(src_tri[0][0], src_tri[1][0], src_tri[2][0]),
250+
max(src_tri[0][1], src_tri[1][1], src_tri[2][1]),
251+
)
244252
src_part = src_img.crop((*upper_left, *lower_right))
245253

246254
# create mask for triangle
@@ -250,7 +258,11 @@ def copy_triangle(
250258
maskdraw.polygon(mask_box, fill=255)
251259

252260
# paste triangle into destination image
253-
dst_img.paste(src_part, min(dst_tri), mask=mask)
261+
dst = (
262+
int(min(dst_tri[0][0], dst_tri[1][0], dst_tri[2][0])),
263+
int(min(dst_tri[0][1], dst_tri[1][1], dst_tri[2][1])),
264+
)
265+
dst_img.paste(src_part, dst, mask=mask)
254266
else:
255267
# transform is necessary, use affine transformation
256268
# https://stackoverflow.com/a/6959111

0 commit comments

Comments
 (0)