private void updateCancelled(List <int> pointers)
        {
#if UNITY_5_6_OR_NEWER
            samplerUpdateCancelled.Begin();
#endif

            var cancelledCount = pointers.Count;
            var list           = pointerListPool.Get();
            for (var i = 0; i < cancelledCount; i++)
            {
                var     id = pointers[i];
                Pointer pointer;
                if (!idToPointer.TryGetValue(id, out pointer))
                {
#if TOUCHSCRIPT_DEBUG
                    if (DebugMode)
                    {
                        Debug.LogWarning("TouchScript > Id [" + id +
                                         "] was in CANCELLED list but no pointer with such id found.");
                    }
#endif
                    continue;
                }
                idToPointer.Remove(id);
                this.pointers.Remove(pointer);
                pressedPointers.Remove(pointer);
                list.Add(pointer);

#if TOUCHSCRIPT_DEBUG
                pLogger.Log(pointer, PointerEvent.Cancelled);
#endif

                tmpPointer = pointer;
                layerManager.ForEach(_layerCancelPointer);
                tmpPointer = null;

#if TOUCHSCRIPT_DEBUG
                if (DebugMode)
                {
                    removeDebugFigureForPointer(pointer);
                }
#endif
            }

            if (pointersCancelledInvoker != null)
            {
                pointersCancelledInvoker.InvokeHandleExceptions(this, PointerEventArgs.GetCachedEventArgs(list));
            }

            for (var i = 0; i < cancelledCount; i++)
            {
                var pointer = list[i];
                pointer.InputSource.INTERNAL_DiscardPointer(pointer);
            }
            pointerListPool.Release(list);

#if UNITY_5_6_OR_NEWER
            samplerUpdateCancelled.End();
#endif
        }
        private void updateReleased(List <int> pointers)
        {
#if UNITY_5_6_OR_NEWER
            samplerUpdateReleased.Begin();
#endif

            var releasedCount = pointers.Count;
            var list          = pointerListPool.Get();
            for (var i = 0; i < releasedCount; i++)
            {
                var     id = pointers[i];
                Pointer pointer;
                if (!idToPointer.TryGetValue(id, out pointer))
                {
#if TOUCHSCRIPT_DEBUG
                    if (DebugMode)
                    {
                        Debug.LogWarning("TouchScript > Id [" + id + "] was in RELEASED list but no pointer with such id found.");
                    }
#endif
                    continue;
                }
                list.Add(pointer);
                pressedPointers.Remove(pointer);

#if TOUCHSCRIPT_DEBUG
                pLogger.Log(pointer, PointerEvent.Released);
#endif

                var layer = pointer.GetPressData().Layer;
                if (layer != null)
                {
                    layer.INTERNAL_ReleasePointer(pointer);
                }

#if TOUCHSCRIPT_DEBUG
                if (DebugMode)
                {
                    addDebugFigureForPointer(pointer);
                }
#endif
            }

            if (pointersReleasedInvoker != null)
            {
                pointersReleasedInvoker.InvokeHandleExceptions(this, PointerEventArgs.GetCachedEventArgs(list));
            }

            releasedCount = list.Count;
            for (var i = 0; i < releasedCount; i++)
            {
                var pointer = list[i];
                pointer.INTERNAL_ClearPressData();
            }
            pointerListPool.Release(list);

#if UNITY_5_6_OR_NEWER
            samplerUpdateReleased.End();
#endif
        }
Example #3
0
        private void updateUpdated(List <int> pointers)
        {
            samplerUpdateUpdated.Begin();

            var updatedCount = pointers.Count;
            var list         = pointerListPool.Get();

            for (var i = 0; i < updatedCount; i++)
            {
                var     id = pointers[i];
                Pointer pointer;
                if (!idToPointer.TryGetValue(id, out pointer))
                {
#if TOUCHSCRIPT_DEBUG
                    if (DebugMode)
                    {
                        Debug.LogWarning("TouchScript > Id [" + id +
                                         "] was in UPDATED list but no pointer with such id found.");
                    }
#endif
                    continue;
                }
                list.Add(pointer);

#if TOUCHSCRIPT_DEBUG
                pLogger.Log(pointer, PointerEvent.Updated);
#endif

                var layer = pointer.GetPressData().Layer;
                if (layer != null)
                {
                    layer.INTERNAL_UpdatePointer(pointer);
                }
                else
                {
                    tmpPointer = pointer;
                    layerManager.ForEach(_layerUpdatePointer);
                    tmpPointer = null;
                }

#if TOUCHSCRIPT_DEBUG
                if (DebugMode)
                {
                    addDebugFigureForPointer(pointer);
                }
#endif
            }

            if (pointersUpdatedInvoker != null)
            {
                pointersUpdatedInvoker.InvokeHandleExceptions(this, PointerEventArgs.GetCachedEventArgs(list));
            }
            pointerListPool.Release(list);

            samplerUpdateUpdated.End();
        }
Example #4
0
        private void updatePressed(List <int> pointers)
        {
            samplerUpdatePressed.Begin();

            var pressedCount = pointers.Count;
            var list         = pointerListPool.Get();

            for (var i = 0; i < pressedCount; i++)
            {
                var     id = pointers[i];
                Pointer pointer;
                if (!idToPointer.TryGetValue(id, out pointer))
                {
#if TOUCHSCRIPT_DEBUG
                    if (DebugMode)
                    {
                        Debug.LogWarning("TouchScript > Id [" + id +
                                         "] was in PRESSED list but no pointer with such id found.");
                    }
#endif
                    continue;
                }
                list.Add(pointer);
                pressedPointers.Add(pointer);

                HitData hit = pointer.GetOverData();
                if (hit.Layer != null)
                {
                    pointer.INTERNAL_SetPressData(hit);
                    hit.Layer.INTERNAL_PressPointer(pointer);
                }

#if TOUCHSCRIPT_DEBUG
                pLogger.Log(pointer, PointerEvent.Pressed);
#endif

#if TOUCHSCRIPT_DEBUG
                if (DebugMode)
                {
                    addDebugFigureForPointer(pointer);
                }
#endif
            }

            if (pointersPressedInvoker != null)
            {
                pointersPressedInvoker.InvokeHandleExceptions(this, PointerEventArgs.GetCachedEventArgs(list));
            }
            pointerListPool.Release(list);

            samplerUpdatePressed.End();
        }
        private void updateAdded(List <Pointer> pointers)
        {
            if (samplerUpdateAdded == null)
            {
                return;
            }

            samplerUpdateAdded.Begin();

            var addedCount = pointers.Count;
            var list       = pointerListPool.Get();

            for (var i = 0; i < addedCount; i++)
            {
                var pointer = pointers[i];
                list.Add(pointer);
                this.pointers.Add(pointer);
                idToPointer.Add(pointer.Id, pointer);

#if TOUCHSCRIPT_DEBUG
                pLogger.Log(pointer, PointerEvent.Added);
#endif

                tmpPointer = pointer;
                layerManager.ForEach(_layerAddPointer);
                tmpPointer = null;

#if TOUCHSCRIPT_DEBUG
                if (DebugMode)
                {
                    addDebugFigureForPointer(pointer);
                }
#endif
            }

            if (pointersAddedInvoker != null)
            {
                pointersAddedInvoker.InvokeHandleExceptions(this, PointerEventArgs.GetCachedEventArgs(list));
            }
            pointerListPool.Release(list);

            samplerUpdateAdded.End();
        }