def collide_mask(sprite1, sprite2): """ **pyjsdl.sprite.collide_mask** Check if mask of sprites intersect. Can be used as spritecollide callback function. """ clip = sprite1.rect.intersection(sprite2.rect) if clip.width < 1 or clip.height < 1: return False x1, y1 = clip.x - sprite1.rect.x, clip.y - sprite1.rect.y x2, y2 = clip.x - sprite2.rect.x, clip.y - sprite2.rect.y if hasattr(sprite1, 'mask'): mask1 = sprite1.mask else: mask1 = mask.from_surface(sprite1.image) if hasattr(sprite2, 'mask'): mask2 = sprite2.mask else: mask2 = mask.from_surface(sprite2.image) for y in range(clip.height): if mask1.bit[y1 + y].get(x1, x1 + clip.width).intersects( mask2.bit[y2 + y].get(x2, x2 + clip.width)): return True return False
def collide_mask(sprite1, sprite2): """ **pyj2d.sprite.collide_mask** Check if mask of sprites intersect. """ clip = sprite1.rect.createIntersection(sprite2.rect) if clip.width < 1 or clip.height < 1: return False x1, y1 = clip.x - sprite1.rect.x, clip.y - sprite1.rect.y x2, y2 = clip.x - sprite2.rect.x, clip.y - sprite2.rect.y masks = [] for sprite in (sprite1, sprite2): try: masks.append(sprite.mask) except AttributeError: masks.append(mask.from_surface(sprite.image)) for y in range(clip.height): try: if masks[0].bit[y1 + y].get(x1, x1 + clip.width).intersects( masks[1].bit[y2 + y].get(x2, x2 + clip.width)): return True except IndexError: continue return False
def scale_surface(self): if not self.surface.get_size() == (self.over_width, self.over_height): self.surface = image.resize_tile(self.__orig_surface, (self.over_width, self.over_height), True) self.rect.size = self.over_width, self.over_height if self.use_pp: self.hitmask = rect.RectMaskCombo(self.rect, mask.from_surface(self.surface))
def collide_mask(sprite1, sprite2): """ **pyjsdl.sprite.collide_mask** Check if mask of sprites intersect. Can be used as spritecollide callback function. """ clip = sprite1.rect.intersection(sprite2.rect) if clip.width < 1 or clip.height < 1: return False x1,y1 = clip.x-sprite1.rect.x, clip.y-sprite1.rect.y x2,y2 = clip.x-sprite2.rect.x, clip.y-sprite2.rect.y if hasattr(sprite1, 'mask'): mask1 = sprite1.mask else: mask1 = mask.from_surface(sprite1.image) if hasattr(sprite2, 'mask'): mask2 = sprite2.mask else: mask2 = mask.from_surface(sprite2.image) for y in range(clip.height): if mask1.bit[y1+y].get(x1, x1+clip.width).intersects(mask2.bit[y2+y].get(x2, x2+clip.width)): return True return False
def collide_mask(sprite1, sprite2): """ **pyj2d.sprite.collide_mask** Check if mask of sprites intersect. """ clip = sprite1.rect.createIntersection(sprite2.rect) if clip.width < 1 or clip.height < 1: return False x1,y1 = clip.x-sprite1.rect.x, clip.y-sprite1.rect.y x2,y2 = clip.x-sprite2.rect.x, clip.y-sprite2.rect.y masks = [] for sprite in (sprite1, sprite2): try: masks.append(sprite.mask) except AttributeError: masks.append(mask.from_surface(sprite.image)) for y in range(clip.height): try: if masks[0].bit[y1+y].get(x1, x1+clip.width).intersects(masks[1].bit[y2+y].get(x2, x2+clip.width)): return True except IndexError: continue return False
def make_rect(self): self.rect = self.surface.get_rect() self.move() if self.use_pp: self.hitmask = rect.RectMaskCombo(self.rect, mask.from_surface(self.surface))