Esempio n. 1
0
 public SkiaBehaviourEngine(ICanvasInfoProvider canvasInfoProvider)
 {
     CanvasInfoProvider = canvasInfoProvider;
     skiaObjects        = new List <SkiaObject>();
 }
Esempio n. 2
0
        private void handleSkiaTouchAction(SkiaTouch skiaTouch, TouchMotionAction action)
        {
            ITouch touch = skiaTouch.Touch;

            //System.Diagnostics.Debug.WriteLine("F**K:" + touch.Position.ToSKPoint());

            if (skiaTouch.HeightLevel != InputHeightLevel)
            {
                return;
            }

            ICanvasInfoProvider canvasInfoProvider = SkiaBehaviourEngine.CanvasInfoProvider as ICanvasInfoProvider;

            if (action == TouchMotionAction.Down)
            {
                if (Area.IsOverlapPoint(canvasInfoProvider.DeviceToCanvasPoint(touch.Position.ToSKPoint())))
                {
                    bool firstTouch = false;
                    if (OnSkiaTouches.Count == 0)
                    {
                        firstTouch = true;
                    }
                    OnSkiaTouches.Add(skiaTouch);
                    if (firstTouch)
                    {
                        OnButtonPressed();
                    }
                }
            }
            else if (action == TouchMotionAction.Move)
            {
                if (!OnSkiaTouches.Contains(skiaTouch) && Area.IsOverlapPoint(touch.Position.ToSKPoint()))
                {
                    bool firstTouch = false;
                    if (OnSkiaTouches.Count == 0)
                    {
                        firstTouch = true;
                    }
                    OnSkiaTouches.Add(skiaTouch);
                    if (firstTouch)
                    {
                        OnButtonPressed();
                    }
                }
                else if (OnSkiaTouches.Contains(skiaTouch) && !Area.IsOverlapPoint(touch.Position.ToSKPoint()))
                {
                    OnSkiaTouches.Remove(skiaTouch);
                    if (OnSkiaTouches.Count == 0)
                    {
                        OnButtonUp();
                    }
                }
            }
            else if (action == TouchMotionAction.Up)
            {
                if (OnSkiaTouches.Contains(skiaTouch))
                {
                    OnSkiaTouches.Remove(skiaTouch);
                    if (OnSkiaTouches.Count == 0)
                    {
                        OnButtonUp();
                    }
                }
            }
        }