示例#1
0
    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();
                }
            }
        }
    }
示例#2
0
 void OnFingertipTriggerStay(FingertipData fingertipData)
 {
 }
示例#3
0
    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();
            }
        }
    }