// TODO: the current logic is very incorrect. Change the logic for m_Touching and m_ObjectTouched
    public void OnTouched(GameObject finger, Collider other)
    {
        if (!m_Touching.Contains(finger))
        {
            m_Touching.Add(finger);
            m_LastPos.Add(finger.transform.position);
        }

        if (!m_ObjectTouched.Exists(obj => obj.finger == finger))
        {
            objectTouched obj = new objectTouched();
            obj.finger     = finger;
            obj.gameObject = other.gameObject;
            m_ObjectTouched.Add(obj);
        }
        else if (!m_FocusedObject)
        {
            //objectTouched touched;
            //touched.finger = null;
            //touched.gameObject = null;
            int index = m_ObjectTouched.FindIndex(obj => obj.finger == finger);
            if (index != -1)
            {
                objectTouched touched = m_ObjectTouched.Find(obj => obj.finger == finger);
                touched.gameObject = other.gameObject;
                m_ObjectTouched.RemoveAt(index);
                m_ObjectTouched.Add(touched);
            }
        }

        //if we're still just focused (not selected yet), change our focus
        //if (m_Touching.Count == 2 && (LeapInput.NumberOfFingers[0] == 2 || LeapInput.NumberOfFingers[1] == 2))
        if (LeapInput.NumberOfFingers[0] == 2 || LeapInput.NumberOfFingers[1] == 2)
        //if (m_Touching.Count == 2)
        {
            // only do this if it IS touched by 2 fingers, NOT if 1 finger touched the object, and the other
            // finger touched another
            List <objectTouched> l = m_ObjectTouched.FindAll(obj => obj.gameObject == other.gameObject);
            //if (!m_Selected && other.gameObject != m_FocusedObject &&
            //    m_ObjectTouched.FindAll(obj => obj.gameObject == other.gameObject).Count == 2)

            // TODO: is this a good method ????
            if (l.Count == 2 &&
                (l[0].finger.transform.parent.gameObject.transform.parent.gameObject == l[1].finger.transform.parent.gameObject.transform.parent.gameObject))
            {
                if (!m_Selected && other.gameObject != m_FocusedObject)
                {
                    //ClearFocus();
                    SetFocus(other.gameObject);
                }
            }
        }
    }
    // TODO: the current logic is very incorrect. Change the logic for m_Touching and m_ObjectTouched
    public void OnTouched(GameObject finger, Collider other)
    {
        if (!m_Touching.Contains(finger))
        {
            m_Touching.Add(finger);
            m_LastPos.Add(finger.transform.position);
        }

        if (!m_ObjectTouched.Exists (obj => obj.finger == finger))
        {
            objectTouched obj = new objectTouched();
            obj.finger = finger;
            obj.gameObject = other.gameObject;
            m_ObjectTouched.Add(obj);
        }
        else if (!m_FocusedObject)
        {
            //objectTouched touched;
            //touched.finger = null;
            //touched.gameObject = null;
            int index = m_ObjectTouched.FindIndex(obj => obj.finger == finger);
            if (index != -1){
                objectTouched touched = m_ObjectTouched.Find(obj => obj.finger == finger);
                touched.gameObject = other.gameObject;
                m_ObjectTouched.RemoveAt(index);
                m_ObjectTouched.Add(touched);
            }
        }

        //if we're still just focused (not selected yet), change our focus
        //if (m_Touching.Count == 2 && (LeapInput.NumberOfFingers[0] == 2 || LeapInput.NumberOfFingers[1] == 2))
        if (LeapInput.NumberOfFingers[0] == 2 || LeapInput.NumberOfFingers[1] == 2)
        //if (m_Touching.Count == 2)
        {
            // only do this if it IS touched by 2 fingers, NOT if 1 finger touched the object, and the other
            // finger touched another
            List<objectTouched> l = m_ObjectTouched.FindAll(obj => obj.gameObject == other.gameObject);
            //if (!m_Selected && other.gameObject != m_FocusedObject &&
            //    m_ObjectTouched.FindAll(obj => obj.gameObject == other.gameObject).Count == 2)

            // TODO: is this a good method ????
            if (l.Count == 2 &&
                (l[0].finger.transform.parent.gameObject.transform.parent.gameObject == l[1].finger.transform.parent.gameObject.transform.parent.gameObject))
            {
                if (!m_Selected && other.gameObject != m_FocusedObject)
                {
                    //ClearFocus();
                    SetFocus(other.gameObject);
                }
            }
        }
    }