// 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); } } } }