Ejemplo n.º 1
0
    public virtual bool insideSprite(Camera camera, Sprite sprite, ICollection <TouchPhase> phases)
    {
        if (input.touchCount == 0)
        {
            return(false);
        }

        if (!touchesFor(phases).Any(touch => sprite.Contains(camera, touch.position)))
        {
            return(false);
        }

        var spritesInScene = gameObjectFinder.allSprites();

        foreach (var touch in touchesFor(phases))
        {
            if (!sprite.Contains(camera, touch.position))
            {
                continue;
            }

            var topSprite = sprite;
            foreach (var spriteInScene in spritesInScene)
            {
                if (spriteInScene.Contains(camera, touch.position) &&
                    spriteInScene.worldPosition.z < sprite.worldPosition.z &&
                    (spriteInScene.getAlphaAtScreenPosition(touch.position) > OPAQUE))
                {
                    topSprite = spriteInScene;
                }
            }
            if (topSprite == sprite &&
                topSprite.getAlphaAtScreenPosition(touch.position) > OPAQUE)
            {
                return(true);
            }
        }

        return(false);
    }