Skip to content

Commit fb6939d

Browse files
committed
Defer Vec2 allocation until after equality check in scale setter
1 parent 95ed039 commit fb6939d

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

arcade/sprite/base.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -340,13 +340,13 @@ def scale(self) -> Vec2:
340340
@scale.setter
341341
def scale(self, new_scale: Point2 | AsFloat):
342342
if isinstance(new_scale, (float, int)):
343-
scale_vec2 = Vec2(new_scale, new_scale)
343+
scale_x = new_scale
344+
scale_y = new_scale
344345

345346
else: # Treat it as some sort of iterable or sequence
346347
# Don't abstract this. Keep it here since it's a hot code path
347348
try:
348349
scale_x, scale_y = new_scale # type / length implicit check
349-
scale_vec2 = Vec2(scale_x, scale_y)
350350
except ValueError:
351351
raise ValueError(
352352
"scale must be a tuple-like object which unpacks to exactly 2 coordinates"
@@ -356,12 +356,14 @@ def scale(self, new_scale: Point2 | AsFloat):
356356
"scale must be a tuple-like object which unpacks to exactly 2 coordinates"
357357
)
358358

359-
if scale_vec2 == self._scale:
359+
old_scale = self._scale
360+
if scale_x == old_scale[0] and scale_y == old_scale[1]:
360361
return
361362

362-
self._hit_box.scale = scale_vec2
363-
self._scale = scale_vec2
364-
self._size = self._texture.size * scale_vec2
363+
new_scale = Vec2(scale_x, scale_y)
364+
self._hit_box.scale = new_scale
365+
self._scale = new_scale
366+
self._size = self._texture.size * new_scale
365367

366368
self.update_spatial_hash()
367369
for sprite_list in self.sprite_lists:

0 commit comments

Comments
 (0)