Example #1
0
        protected override void Update()
        {
            SketchInputManager sketchInputManager = SketchEngine.FindObjectByType <SketchInputManager>();

            if (OnSketchPointer == null)
            {
                foreach (var sketchPointer in sketchInputManager.SketchPointers)
                {
                    if (StartRegion.IsOverlapPoint(sketchPointer.Point) && sketchPointer.HitLayer == Level)
                    {
                        if (sketchPointer.State == Input.PointerState.Pressed)
                        {
                            OnSketchPointer = sketchPointer;
                            _StartPos       = OnSketchPointer.Point;
                            Pressed         = true;
                        }
                    }
                }
            }
            else
            {
                if (OnSketchPointer.State == Input.PointerState.Pressed)
                {
                    Delta = OnSketchPointer.Point - _StartPos;
                }
                else
                {
                    Pressed         = false;
                    OnSketchPointer = null;
                }
            }
        }
 protected override void Start()
 {
     if (SkiaManager == null)
     {
         SkiaManager = SketchEngine.FindObjectByType <SkiaManager>();
     }
     SkiaManager.InvalidCanvas();
 }
 protected override void OnJoystickUp()
 {
     //throw new NotImplementedException();
     if (SkiaManager == null)
     {
         SkiaManager = SketchEngine.FindObjectByType <SkiaManager>();
     }
     SkiaManager.InvalidCanvas();
 }
 protected override void OnDeltaChanged()
 {
     base.OnDeltaChanged();
     if (SkiaManager == null)
     {
         SkiaManager = SketchEngine.FindObjectByType <SkiaManager>();
     }
     SkiaManager.InvalidCanvas();
 }
Example #5
0
        public Task _RunTask()
        {
            Task task = Task.Run(() =>
            {
                SketchEngine.Start();
            });

            return(task);
        }
        public void PaintSurface(SkiaManager skiaManager, SKCanvas canvas)
        {
            var sketchInputManager = SketchEngine.FindObjectByType <SketchInputManager>();

            foreach (var pointer in sketchInputManager.SketchPointers)
            {
                //Vector2 pos = Vector2.Transform(pointer.Point, skiaManager.SketchSpaceToCanvasSpaceMatrix);
                SKPoint pos = skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(new SKPoint(pointer.Point.X, pointer.Point.Y));
                canvas.DrawText(pointer.ToString(), pos, _BoardFontPaint);
            }
        }
Example #7
0
 public Sketch()
 {
     SketchEngine     = new SketchEngine();
     UpdateTheadLock  = new object();
     DesiredFrameRate = 60;
     SkiaManager      = SketchEngine.Instantiate <SkiaManager>();
     SketchInfo       = SketchEngine.Instantiate <SketchInfo>();
     SketchInfo.Init(this);
     Width  = 1000;
     Height = 200;
 }
Example #8
0
        protected override void OnInstantiated()
        {
            base.OnInstantiated();
            var sketchInfo = SketchEngine.FindObjectByType <SketchInfo>();

            RectTransform      = new RectTransform(sketchInfo);
            SketchInputManager = SketchEngine.FindObjectByType <SketchInputManager>();
            SketchInputManager.PointerMoved    += SketchInputManager_PointerMoved;
            SketchInputManager.PointerReleased += SketchInputManager_PointerReleased;
            SketchInputManager.PointerPressed  += SketchInputManager_PointerPressed;
        }
Example #9
0
        public void PaintSurface(SkiaManager skiaManager, SKCanvas canvas)
        {
            var     sketchInfo = SketchEngine.FindObjectByType <SketchInfo>();
            SKPoint leftDown   = new SKPoint(0, 0);
            SKPoint leftUp     = new SKPoint(0, sketchInfo.Sketch.Height);
            SKPoint rightUp    = new SKPoint(sketchInfo.Sketch.Width, sketchInfo.Sketch.Height);
            SKPoint rightDown  = new SKPoint(sketchInfo.Sketch.Width, 0);

            canvas.DrawLine(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(leftDown), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(leftUp), _BorderPaint);
            canvas.DrawLine(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(leftUp), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(rightUp), _BorderPaint);
            canvas.DrawLine(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(rightUp), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(rightDown), _BorderPaint);
            canvas.DrawLine(skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(rightDown), skiaManager.SketchSpaceToCanvasSpaceMatrix.MapPoint(leftDown), _BorderPaint);
        }
Example #10
0
        private void InputManager_PointerEntered(object sender, IPointer e)
        {
            SketchPointer sketchPointer = new SketchPointer(this, e);

            lock (_SketchPointersReadyToEnterLock)
            {
                _SketchPointersReadyToEnter.Add(sketchPointer);
            }
            PointerInfoCache cache = new PointerInfoCache(sketchPointer, -1, PointerInfoCacheEvent.Entered);

            lock (_PointerInfoCachesLock)
            {
                _PointerInfoCaches.Enqueue(cache);
            }
            SketchEngine.RegisterForNextUpdate(this);
        }
Example #11
0
        private void InputManager_PointerExited(object sender, IPointer e)
        {
            SketchPointer sketchPointer = null;

            lock (_SketchPointersListLock)
            {
                sketchPointer = SketchPointersList.Find((obj) =>
                {
                    if (obj.Pointer == e)
                    {
                        return(true);
                    }
                    return(false);
                });
            }
            if (sketchPointer == null)
            {
                lock (_SketchPointersReadyToEnterLock)
                {
                    sketchPointer = _SketchPointersReadyToEnter.Find((obj) =>
                    {
                        if (obj.Pointer == e)
                        {
                            return(true);
                        }
                        return(false);
                    });
                }
            }
            if (sketchPointer != null)
            {
                lock (_SketchPointersReadyToExitLock)
                {
                    _SketchPointersReadyToExit.Add(sketchPointer);
                }
                var cache = new PointerInfoCache(sketchPointer, sketchPointer.LatestPointerInfoCache.HitLayer, PointerInfoCacheEvent.Exited);
                lock (_PointerInfoCachesLock)
                {
                    _PointerInfoCaches.Enqueue(cache);
                }
            }
            SketchEngine.RegisterForNextUpdate(this);
        }
Example #12
0
        private void InputManager_PointerPressed(object sender, IPointer e)
        {
            SketchPointer sketchPointer = null;

            lock (_SketchPointersListLock)
            {
                sketchPointer = SketchPointersList.Find((obj) =>
                {
                    if (obj.Pointer == e)
                    {
                        return(true);
                    }
                    return(false);
                });
            }
            if (sketchPointer == null)
            {
                lock (_SketchPointersReadyToEnterLock)
                {
                    sketchPointer = _SketchPointersReadyToEnter.Find((obj) =>
                    {
                        if (obj.Pointer == e)
                        {
                            return(true);
                        }
                        return(false);
                    });
                }
            }

            if (sketchPointer != null)
            {
                var cache = new PointerInfoCache(sketchPointer, 0, PointerInfoCacheEvent.Pressed);
                //throw new NotImplementedException("Do Remember implement Hit test and get layer");


                lock (_PointerInfoCachesLock)
                {
                    _PointerInfoCaches.Enqueue(cache);
                }
            }
            SketchEngine.RegisterForNextUpdate(this);
        }
Example #13
0
        public Task _UpdataTask()
        {
            Task task = Task.Run(() => {
                TimeSpan frameTimer        = TimeSpan.Zero;
                DateTime lastFrameDateTime = DateTime.Now;
                TimeSpan frameRateTimeSpan = new TimeSpan(0, 0, 0, 0, (int)(1 / DesiredFrameRate * 1000));
                while (true)
                {
                    DateTime startUpdateDateTime = DateTime.Now;
                    lock (UpdateTheadLock)
                    {
                        SketchEngine.Update((float)frameTimer.TotalSeconds);
                    }
                    var updateTimeSpan = DateTime.Now - startUpdateDateTime;
                    var sleepTimespan  = frameRateTimeSpan - updateTimeSpan;
                    if (sleepTimespan > TimeSpan.FromMilliseconds(0))
                    {
                        System.Threading.Thread.Sleep((int)sleepTimespan.TotalMilliseconds);
                    }
                }
            });

            return(task);
        }
Example #14
0
 public void InvalidCanvas()
 {
     SketchEngine.RegisterForNextUpdate(this);
 }
Example #15
0
 public void Init(Action invalidateViewFunc, SKMatrix sketchSpaceToCanvasSpaceMatrix)
 {
     SketchEngine.RegisterForNextUpdate(this);
     InvalidateView = invalidateViewFunc;
     SketchSpaceToCanvasSpaceMatrix = sketchSpaceToCanvasSpaceMatrix;
 }
 protected override void Start()
 {
     base.Start();
     SkiaManager = SketchEngine.FindObjectByType <SkiaManager>();
 }
Example #17
0
 public void Start()
 {
     SketchEngine.Update(0);
     //RunSketchTask = _UpdataTask();
     RunSketchTask = _RunTask();
 }