internal void AddFingerCollider(Hi5_Glove_Interaction_Finger finger)
 {
     if (!fingerColliders.ContainsKey(finger.m_finger_type))
     {
         fingerColliders.Add(finger.m_finger_type, finger);
     }
 }
 internal void AddPinch2Collider(Hi5_Glove_Interaction_Finger finger)
 {
     if (mDicState.ContainsKey(E_Hand_State.EPinch2))
     {
         (mDicState[E_Hand_State.EPinch2] as Hi5_Glove_State_Pinch2).AddFingerCollider(finger);
     }
 }
Пример #3
0
 internal protected void SetAttribute(int boneIndex,
                                      Hi5_Glove_Interaction_Finger_Type fingerType,
                                      Hi5_Glove_Interaction_Finger finger)
 {
     mBoneIndex  = boneIndex;
     mFingerType = fingerType;
     mFinger     = finger;
 }
 internal void AddFingerCollider(Hi5_Glove_Interaction_Finger finger)
 {
     //if (fingerColliders.Count >= 2)
     //    return;
     if (!fingerColliders.ContainsKey(finger.m_finger_type))
     {
         fingerColliders.Add(finger.m_finger_type, finger);
     }
     if (!fingerColliderVecotr3.ContainsKey(finger.m_finger_type))
     {
         fingerColliderVecotr3.Add(finger.m_finger_type, finger.GetPinch2OneToFour());
     }
     else
     {
         fingerColliderVecotr3[finger.m_finger_type] = finger.GetPinch2OneToFour();
     }
 }
        // Update is called once per frame
        override public void Update(float deltaTime)
        {
            if (fingerColliders.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EThumb))
            {
                Hi5_Glove_Interaction_Finger fingerThumb = fingerColliders[Hi5_Glove_Interaction_Finger_Type.EThumb];
                Hi5_Glove_Interaction_Finger otherFinger = null;
                if (fingerColliders.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EIndex))
                {
                    otherFinger = fingerColliders[Hi5_Glove_Interaction_Finger_Type.EIndex];
                }
                else if (fingerColliders.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EMiddle))
                {
                    otherFinger = fingerColliders[Hi5_Glove_Interaction_Finger_Type.EMiddle];
                }
                if (fingerThumb != null && otherFinger != null)
                {
//                    Vector3 point = new Vector3((fingerThumb.GetTailPosition().x + otherFinger.GetTailPosition().x) / 2,
//                                                (fingerThumb.GetTailPosition().y + otherFinger.GetTailPosition().y) / 2,
//                                                (fingerThumb.GetTailPosition().z + otherFinger.GetTailPosition().z) / 2);
//                    Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(objectId);
//                    if (item != null)
//                        item.transform.position = point;

                    //Debug.Log("Pich2 position"+ point);
                }
            }
            if (fingerColliders.Count > 1)
            {
                // Debug.Log("fingerColliders.Count > 1" );
                bool isRelease  = false;
                int  countValue = 0;
                foreach (KeyValuePair <Hi5_Glove_Interaction_Finger_Type, Hi5_Glove_Interaction_Finger> item in fingerColliders)
                {
                    ////碰撞释放
                    //if (!item.Value.IsTailColliderById(objectId))
                    //{
                    //    isRelease = true;

                    //}
                    //角度释放
                    if (fingerColliders[item.Key].IsPinch2Realease(Hi5_Interaction_Const.FingerPinch2Release))
                    {
                        isRelease = true;
                        return;
                    }
                }
                if (fingerColliders.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EThumb))
                {
                    Hi5_Glove_Interaction_Finger fingerThumb = fingerColliders[Hi5_Glove_Interaction_Finger_Type.EThumb];
                    Hi5_Glove_Interaction_Finger otherFinger = null;
                    if (fingerColliders.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EIndex))
                    {
                        otherFinger = fingerColliders[Hi5_Glove_Interaction_Finger_Type.EIndex];
                    }
                    else if (fingerColliders.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EMiddle))
                    {
                        otherFinger = fingerColliders[Hi5_Glove_Interaction_Finger_Type.EMiddle];
                    }
                    if (fingerThumb != null && otherFinger != null)
                    {
                        Vector3 tempThumb = fingerThumb.GetTailPosition();
                        Vector3 tempOther = otherFinger.GetTailPosition();
                        float   distance  = Vector3.Distance(tempThumb, tempOther);
                        if (distance > 0.080f)
                        {
                            isRelease = true;
                        }
                    }
                }
                if (isRelease || countValue >= 2)
                {
                    mState.ChangeState(E_Hand_State.ERelease);
                    Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageUnPinchObject2, (object)Hand.mPinchObjectId, Hand);
                }
                else
                {
                }
            }
            else
            {
                mState.ChangeState(E_Hand_State.ERelease);
                Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageUnPinchObject2, (object)Hand.mPinchObjectId, Hand);
            }
        }
Пример #6
0
        private void AssignPNHandJoints(Transform handBase, string handPrefix, string handIn)
        {
            mFingers.Clear();
            Transform temp = handBase.Search(handPrefix + "Thumb1");

            m_ThumbFingerTransforms.Add(handBase.Search(handPrefix + "Thumb1"));
            m_ThumbFingerTransforms.Add(m_ThumbFingerTransforms[0].Find(handPrefix + "Thumb2"));
            m_ThumbFingerTransforms.Add(m_ThumbFingerTransforms[1].Find(handPrefix + "Thumb3"));
            m_ThumbFingerTransforms.Add(m_ThumbFingerTransforms[2].Find(handPrefix + "Thumb4"));
            Hi5_Glove_Interaction_Finger tempFingerinteraction = temp.GetComponent <Hi5_Glove_Interaction_Finger>();

            if (tempFingerinteraction != null)
            {
                mFingers.Add(Hi5_Glove_Interaction_Finger_Type.EThumb, tempFingerinteraction);
                tempFingerinteraction.AddChildNode(m_ThumbFingerTransforms);
                tempFingerinteraction.SetHi5Hand(this);
            }


            temp = handBase.Search(handIn + "Index");
            m_IndexFingerTransforms.Add(handBase.Search(handPrefix + "Index1"));
            m_IndexFingerTransforms.Add(m_IndexFingerTransforms[0].Find(handPrefix + "Index2"));
            m_IndexFingerTransforms.Add(m_IndexFingerTransforms[1].Find(handPrefix + "Index3"));
            m_IndexFingerTransforms.Add(m_IndexFingerTransforms[2].Find(handPrefix + "Index4"));
            tempFingerinteraction = temp.GetComponent <Hi5_Glove_Interaction_Finger>();
            if (tempFingerinteraction != null)
            {
                mFingers.Add(Hi5_Glove_Interaction_Finger_Type.EIndex, tempFingerinteraction);
                tempFingerinteraction.AddChildNode(m_IndexFingerTransforms);
                tempFingerinteraction.SetHi5Hand(this);
                //tempFingerinteraction.SetHi5Message(mMessage, this);
            }


            temp = handBase.Search(handIn + "Middle");
            m_MiddleFingerTransforms.Add(handBase.Search(handPrefix + "Middle1"));
            m_MiddleFingerTransforms.Add(m_MiddleFingerTransforms[0].Find(handPrefix + "Middle2"));
            m_MiddleFingerTransforms.Add(m_MiddleFingerTransforms[1].Find(handPrefix + "Middle3"));
            m_MiddleFingerTransforms.Add(m_MiddleFingerTransforms[2].Find(handPrefix + "Middle4"));
            tempFingerinteraction = temp.GetComponent <Hi5_Glove_Interaction_Finger>();
            if (tempFingerinteraction != null)
            {
                mFingers.Add(Hi5_Glove_Interaction_Finger_Type.EMiddle, tempFingerinteraction);
                tempFingerinteraction.AddChildNode(m_MiddleFingerTransforms);
                tempFingerinteraction.SetHi5Hand(this);
                //tempFingerinteraction.SetHi5Message(mMessage, this);
            }


            temp = handBase.Search(handIn + "Ring");
            m_RingFingerTransforms.Add(handBase.Search(handPrefix + "Ring1"));
            m_RingFingerTransforms.Add(m_RingFingerTransforms[0].Find(handPrefix + "Ring2"));
            m_RingFingerTransforms.Add(m_RingFingerTransforms[1].Find(handPrefix + "Ring3"));
            m_RingFingerTransforms.Add(m_RingFingerTransforms[2].Find(handPrefix + "Ring4"));
            tempFingerinteraction = temp.GetComponent <Hi5_Glove_Interaction_Finger>();
            if (tempFingerinteraction != null)
            {
                mFingers.Add(Hi5_Glove_Interaction_Finger_Type.ERing, tempFingerinteraction);
                tempFingerinteraction.AddChildNode(m_RingFingerTransforms);
                tempFingerinteraction.SetHi5Hand(this);
                //tempFingerinteraction.SetHi5Message(mMessage, this);
            }

            temp = handBase.Search(handIn + "Pinky");
            m_PinkyFingerTransforms.Add(handBase.Search(handPrefix + "Pinky1"));
            m_PinkyFingerTransforms.Add(m_PinkyFingerTransforms[0].Find(handPrefix + "Pinky2"));
            m_PinkyFingerTransforms.Add(m_PinkyFingerTransforms[1].Find(handPrefix + "Pinky3"));
            m_PinkyFingerTransforms.Add(m_PinkyFingerTransforms[2].Find(handPrefix + "Pinky4"));
            tempFingerinteraction = temp.GetComponent <Hi5_Glove_Interaction_Finger>();
            if (tempFingerinteraction != null)
            {
                mFingers.Add(Hi5_Glove_Interaction_Finger_Type.EPinky, tempFingerinteraction);
                tempFingerinteraction.AddChildNode(m_PinkyFingerTransforms);
                tempFingerinteraction.SetHi5Hand(this);
                //tempFingerinteraction.SetHi5Message(mMessage, this);
            }
        }