// Token: 0x060041D7 RID: 16855 RVA: 0x000F1E98 File Offset: 0x000F0098
 internal void Process(Transform transform, Camera renderCamera, global::dfList <Touch> touches, bool retainFocus)
 {
     for (int i = 0; i < touches.Count; i++)
     {
         Touch        touch = touches[i];
         Ray          ray   = renderCamera.ScreenPointToRay(touch.position);
         float        num   = renderCamera.farClipPlane - renderCamera.nearClipPlane;
         RaycastHit[] hits  = Physics.RaycastAll(ray, num, renderCamera.cullingMask);
         global::dfInputManager.controlUnderMouse = this.clipCast(transform, hits);
         if (global::dfInputManager.controlUnderMouse == null && touch.phase == null)
         {
             this.untracked.Add(touch.fingerId);
         }
         else if (this.untracked.Contains(touch.fingerId))
         {
             if (touch.phase == 3)
             {
                 this.untracked.Remove(touch.fingerId);
             }
         }
         else
         {
             global::dfInputManager.TouchInputManager.TouchRaycast        info = new global::dfInputManager.TouchInputManager.TouchRaycast(global::dfInputManager.controlUnderMouse, touch, ray);
             global::dfInputManager.TouchInputManager.ControlTouchTracker controlTouchTracker = this.tracked.FirstOrDefault((global::dfInputManager.TouchInputManager.ControlTouchTracker x) => x.IsTrackingFinger(info.FingerID));
             if (controlTouchTracker != null)
             {
                 controlTouchTracker.Process(info);
             }
             else
             {
                 bool flag = false;
                 for (int j = 0; j < this.tracked.Count; j++)
                 {
                     if (this.tracked[j].Process(info))
                     {
                         flag = true;
                         break;
                     }
                 }
                 if (!flag && global::dfInputManager.controlUnderMouse != null)
                 {
                     if (!this.tracked.Any((global::dfInputManager.TouchInputManager.ControlTouchTracker x) => x.control == global::dfInputManager.controlUnderMouse))
                     {
                         if (global::dfInputManager.controlUnderMouse == null)
                         {
                             Debug.Log("Tracking touch with no control: " + touch.fingerId);
                         }
                         global::dfInputManager.TouchInputManager.ControlTouchTracker controlTouchTracker2 = new global::dfInputManager.TouchInputManager.ControlTouchTracker(this.manager, global::dfInputManager.controlUnderMouse);
                         this.tracked.Add(controlTouchTracker2);
                         controlTouchTracker2.Process(info);
                     }
                 }
             }
         }
     }
 }
            // Token: 0x060041E0 RID: 16864 RVA: 0x000F27F4 File Offset: 0x000F09F4
            private bool canFireClickEvent(global::dfInputManager.TouchInputManager.TouchRaycast info, global::dfInputManager.TouchInputManager.TouchRaycast touch)
            {
                if (this.manager.TouchClickRadius <= 0)
                {
                    return(true);
                }
                float num = Vector2.Distance(info.position, touch.position);

                return(num < (float)this.manager.TouchClickRadius);
            }
 // Token: 0x060041DF RID: 16863 RVA: 0x000F22AC File Offset: 0x000F04AC
 public bool Process(global::dfInputManager.TouchInputManager.TouchRaycast info)
 {
     if (this.IsDragging)
     {
         if (!this.capture.Contains(info.FingerID))
         {
             return(false);
         }
         if (info.Phase == 2)
         {
             return(true);
         }
         if (info.Phase == 4)
         {
             this.control.OnDragEnd(new global::dfDragEventArgs(this.control, global::dfDragDropState.Cancelled, this.dragData, info.ray, info.position));
             this.dragState = global::dfDragDropState.None;
             this.touches.Clear();
             this.capture.Clear();
             return(true);
         }
         if (info.Phase != 3)
         {
             return(true);
         }
         if (info.control == null || info.control == this.control)
         {
             this.control.OnDragEnd(new global::dfDragEventArgs(this.control, global::dfDragDropState.CancelledNoTarget, this.dragData, info.ray, info.position));
             this.dragState = global::dfDragDropState.None;
             this.touches.Clear();
             this.capture.Clear();
             return(true);
         }
         global::dfDragEventArgs dfDragEventArgs = new global::dfDragEventArgs(info.control, global::dfDragDropState.Dragging, this.dragData, info.ray, info.position);
         info.control.OnDragDrop(dfDragEventArgs);
         if (!dfDragEventArgs.Used || dfDragEventArgs.State != global::dfDragDropState.Dropped)
         {
             dfDragEventArgs.State = global::dfDragDropState.Cancelled;
         }
         global::dfDragEventArgs dfDragEventArgs2 = new global::dfDragEventArgs(this.control, dfDragEventArgs.State, this.dragData, info.ray, info.position);
         dfDragEventArgs2.Target = info.control;
         this.control.OnDragEnd(dfDragEventArgs2);
         this.dragState = global::dfDragDropState.None;
         this.touches.Clear();
         this.capture.Clear();
         return(true);
     }
     else if (!this.touches.ContainsKey(info.FingerID))
     {
         if (info.control != this.control)
         {
             return(false);
         }
         this.touches[info.FingerID] = info;
         if (this.touches.Count == 1)
         {
             this.control.OnMouseEnter(info);
             if (info.Phase == null)
             {
                 this.capture.Add(info.FingerID);
                 this.control.OnMouseDown(info);
             }
             return(true);
         }
         if (info.Phase == null)
         {
             this.control.OnMouseUp(info);
             this.control.OnMouseLeave(info);
             List <Touch>             activeTouches = this.getActiveTouches();
             global::dfTouchEventArgs args          = new global::dfTouchEventArgs(this.control, activeTouches, info.ray);
             this.control.OnMultiTouch(args);
         }
         return(true);
     }
     else
     {
         if (info.Phase == 4 || info.Phase == 3)
         {
             global::dfInputManager.TouchInputManager.TouchRaycast touch = this.touches[info.FingerID];
             this.touches.Remove(info.FingerID);
             if (this.touches.Count == 0)
             {
                 if (this.capture.Contains(info.FingerID))
                 {
                     if (this.canFireClickEvent(info, touch) && info.control == this.control)
                     {
                         if (info.touch.tapCount > 1)
                         {
                             this.control.OnDoubleClick(info);
                         }
                         else
                         {
                             this.control.OnClick(info);
                         }
                     }
                     this.control.OnMouseUp(info);
                 }
                 this.control.OnMouseLeave(info);
                 this.capture.Remove(info.FingerID);
                 return(true);
             }
             this.capture.Remove(info.FingerID);
             if (this.touches.Count == 1)
             {
                 global::dfTouchEventArgs args2 = this.touches.Values.First <global::dfInputManager.TouchInputManager.TouchRaycast>();
                 this.control.OnMouseEnter(args2);
                 this.control.OnMouseDown(args2);
                 return(true);
             }
         }
         if (this.touches.Count > 1)
         {
             List <Touch>             activeTouches2 = this.getActiveTouches();
             global::dfTouchEventArgs args3          = new global::dfTouchEventArgs(this.control, activeTouches2, info.ray);
             this.control.OnMultiTouch(args3);
             return(true);
         }
         if (!this.IsDragging && info.Phase == 2)
         {
             if (info.control == this.control)
             {
                 this.control.OnMouseHover(info);
                 return(true);
             }
             return(false);
         }
         else
         {
             bool flag = this.capture.Contains(info.FingerID) && this.dragState == global::dfDragDropState.None && info.Phase == 1;
             if (flag)
             {
                 global::dfDragEventArgs dfDragEventArgs3 = info;
                 this.control.OnDragStart(dfDragEventArgs3);
                 if (dfDragEventArgs3.State == global::dfDragDropState.Dragging && dfDragEventArgs3.Used)
                 {
                     this.dragState = global::dfDragDropState.Dragging;
                     this.dragData  = dfDragEventArgs3.Data;
                     return(true);
                 }
                 this.dragState = global::dfDragDropState.Denied;
             }
             if (info.control != this.control && !this.capture.Contains(info.FingerID))
             {
                 this.control.OnMouseLeave(info);
                 this.touches.Remove(info.FingerID);
                 return(true);
             }
             this.control.OnMouseMove(info);
             return(true);
         }
     }
 }