Skip to content

Commit 7d27a8b

Browse files
committed
Rewrite spritecollide function
1 parent b805e0f commit 7d27a8b

File tree

1 file changed

+12
-27
lines changed

1 file changed

+12
-27
lines changed

src_py/sprite.py

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,36 +1684,21 @@ def spritecollide(sprite, group, dokill, collided=None):
16841684
which will be used to calculate the collision.
16851685
16861686
"""
1687-
# pull the default collision function in as a local variable outside
1688-
# the loop as this makes the loop run faster
1689-
default_sprite_collide_func = sprite.rect.colliderect
1690-
1691-
if dokill:
1692-
crashed = []
1693-
append = crashed.append
1694-
1695-
for group_sprite in group.sprites():
1696-
if collided is not None:
1697-
if collided(sprite, group_sprite):
1698-
group_sprite.kill()
1699-
append(group_sprite)
1700-
else:
1701-
if default_sprite_collide_func(group_sprite.rect):
1702-
group_sprite.kill()
1703-
append(group_sprite)
1704-
1705-
return crashed
1706-
17071687
if collided is not None:
1708-
return [
1688+
crashed = [
17091689
group_sprite for group_sprite in group if collided(sprite, group_sprite)
17101690
]
1711-
1712-
return [
1713-
group_sprite
1714-
for group_sprite in group
1715-
if default_sprite_collide_func(group_sprite.rect)
1716-
]
1691+
else:
1692+
sprite_rect_collide = sprite.rect.colliderect
1693+
crashed = [
1694+
group_sprite
1695+
for group_sprite in group
1696+
if sprite_rect_collide(group_sprite.rect)
1697+
]
1698+
if dokill:
1699+
for group_sprite in crashed:
1700+
group_sprite.kill()
1701+
return crashed
17171702

17181703

17191704
def groupcollide(groupa, groupb, dokilla, dokillb, collided=None):

0 commit comments

Comments
 (0)