Example #1
0
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
Example #2
0
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
Example #3
0
 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
Example #5
0
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
Example #6
0
 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))