void OnFingertipTriggerExit(FingertipData fingertipData) { for (int i = 0; i < FingertipsInCollisionBounds.Count; i++) { int knownID = FingertipsInCollisionBounds[i].GetInstanceID(); int candidateID = fingertipData.Owner.GetInstanceID(); FingerFilter knownFilter = FingerTipFilters[i]; FingerFilter candidateFilter = fingertipData.finger; if (knownID == candidateID) { FingertipsInCollisionBounds.RemoveAt(i); FingerTipFilters.RemoveAt(i); fingerDots.RemoveAt(i); if (FingertipsInCollisionBounds.Count == 0) { CancelHover(); } } } }
void OnFingertipTriggerStay(FingertipData fingertipData) { }
void OnFingertipTriggerEnter(FingertipData fingertipData) { bool acceptFingertip = false; if ((fingertipData.finger == FingerFilter.index) && (RespondToIndex)) { acceptFingertip = true; } if ((fingertipData.finger == FingerFilter.middle) && (RespondToMiddle)) { acceptFingertip = true; } if ((fingertipData.finger == FingerFilter.thumb) && (RespondToThumb)) { acceptFingertip = true; } if (acceptFingertip) { if (FingertipsInCollisionBounds.Count == 0) { HandModel = fingertipData.HandModel; } else { // check incoming hand model to make sure it matches the existing one. int oldHandModelID = HandModel.GetInstanceID(); int newHandModelID = fingertipData.HandModel.GetInstanceID(); if (oldHandModelID != newHandModelID) { Debug.Log("Tried using two different hands at once to push a button. Ignoring second hand."); return; } else { int candidateID = fingertipData.Owner.GetInstanceID(); FingerFilter candidateFilter = fingertipData.finger; for (int i = 0; i < FingertipsInCollisionBounds.Count; i++) { FingerFilter knownFilter = FingerTipFilters[i]; int knownID = FingertipsInCollisionBounds[i].GetInstanceID(); if ((knownID == candidateID) || (knownFilter == candidateFilter)) { Debug.Log("Fingertip exists already, why wasn't it removed?"); return; } } } } FingertipsInCollisionBounds.Add(fingertipData.Owner); FingerTipFilters.Add(fingertipData.finger); fingerDots.Add(0); if (FingertipsInCollisionBounds.Count == 1) { Hover(); } } }