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