public SkiaBehaviourEngine(ICanvasInfoProvider canvasInfoProvider) { CanvasInfoProvider = canvasInfoProvider; skiaObjects = new List <SkiaObject>(); }
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(); } } } }