/// <summary>
    ///
    /// </summary>
    /// <param name="eventData"></param>
    public void OnInputUp(InputEventData eventData)
    {
        _EventState = GROUPEVENT.Idle;
        _EventValue = Vector4.zero;

        _IIS = null;
        _IDs.Clear();
        _Fingers.Clear();
    }
    /// <summary>
    ///
    /// </summary>
    public void SeperatingEvent()
    {
        //Debug.Log("Event Stats :" + _EventState);
        //Excuting Condition
        if (_EventState != GROUPEVENT.Idle)
        {
            return;
        }
        if (_Fingers.Count < 2)
        {
            return;
        }

        foreach (KeyValuePair <uint, Finger> pair in _Fingers)
        {
            uint   key   = pair.Key;
            Finger value = pair.Value;

            //Step1. Checking GroupPush & GroupPull
            {
                Vector3 DeltaPosition = (value.OrinPosition - value.ViewPosition);

                if (
                    Mathf.Abs(DeltaPosition.x) < 0.09f &&
                    Mathf.Abs(DeltaPosition.y) < 0.09f &&
                    Mathf.Abs(DeltaPosition.z) > 0.02f)
                {
                    _EventState = GROUPEVENT.PushAndPull;
                    return;
                }
            }

            //Step2. Checking Drag & Select
            {
                Vector3 DeltaPosition = (value.OrinPosition - value.ViewPosition);
                float   Threshold     = DeltaPosition.x + DeltaPosition.y;

                if (
                    Mathf.Abs(DeltaPosition.x) > 0.09f &&
                    Mathf.Abs(DeltaPosition.y) > 0.09f &&
                    Mathf.Abs(DeltaPosition.z) < 0.02f)
                {
                    _EventState = GROUPEVENT.PartialSelect;
                    return;
                }
            }

            //Step3. ?
            {
            }
        }
    }
 // Use this for initialization
 void Start()
 {
     _IDs        = new Queue <uint>();
     _Fingers    = new Dictionary <uint, Finger>();
     _EventState = GROUPEVENT.Idle;
 }