override protected void OnTriggerEnter(Collider other) { if (!isTrigger) { base.OnTriggerEnter(other); Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageObjectReset, null, null); isTrigger = true; } }
internal bool IsFlyPinch() { List <int> pinchs4; //isPinch = Hand.mState.mJudgeMent.IsPinch(out pinchs4, out ObjectId); //if(!isPinch) int ObjectId = -1000; bool isPinch = mHand.mState.mJudgeMent.IsFlyIngPinch(out pinchs4, out ObjectId); if (isPinch) { Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(ObjectId); float dis = Mathf.Abs(item.PlaneY - item.transform.position.y); if (item != null && item.state == E_Object_State.EMove && (item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EThrowMove || item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EFree) && !item.mstatemanager.GetMoveState().IsProtectionFly() && dis > (0.1f * item.GetHeight())) { if (item.mObjectType == EObject_Type.ECommon) { Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageFlyPinchObject, pinchs4, mHand, ObjectId); Hi5_Glove_State_Base baseState = mState.GetBaseState(E_Hand_State.EPinch); if (baseState != null) { (baseState as Hi5_Glove_State_Pinch).isPinchCollider = true; (baseState as Hi5_Glove_State_Pinch).objectId = ObjectId; } item.transform.position = mHand.GetThumbAndMiddlePoin(); item.CleanRecord(); mState.ChangeState(E_Hand_State.EPinch); Hi5_Glove_Interaction_Hand handTemp = mHand; // if (handTemp.m_IsLeftHand) // { // Debug.Log ("Left pinch"); // } { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(item.idObject, item.mObjectType, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(item.idObject, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } return(true); } } } return(false); }
void AngelPinchRelease() { Dictionary <Hi5_Glove_Interaction_Finger_Type, Hi5_Glove_Interaction_Finger> fingers = Hand.mFingers; bool isRelease = false; int releaseCount = 0; if (fingers.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EThumb)) { if (fingers[Hi5_Glove_Interaction_Finger_Type.EThumb].IsPinchRelease) { releaseCount++; //isRelease = true; } } if (fingers.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EMiddle)) { //Debug.Log("Hi5_Glove_Interaction_Finger_Type.EMiddle"); if (fingers[Hi5_Glove_Interaction_Finger_Type.EMiddle].IsPinchRelease) { // Debug.Log("Hi5_Glove_Interaction_Finger_Type.EMiddle true"); releaseCount++; } } if (fingers.ContainsKey(Hi5_Glove_Interaction_Finger_Type.EIndex)) { //Debug.Log("Hi5_Glove_Interaction_Finger_Type.EIndex"); if (fingers[Hi5_Glove_Interaction_Finger_Type.EIndex].IsPinchRelease) { //Debug.Log("Hi5_Glove_Interaction_Finger_Type.EIndex true"); releaseCount++; } } else if (fingers.ContainsKey(Hi5_Glove_Interaction_Finger_Type.ERing)) { //Debug.Log("Hi5_Glove_Interaction_Finger_Type.ERing"); if (fingers[Hi5_Glove_Interaction_Finger_Type.ERing].IsPinchRelease) { // Debug.Log("Hi5_Glove_Interaction_Finger_Type.ERing true"); releaseCount++; } } if (releaseCount >= 2) { isRelease = true; } if (isRelease) { mState.ChangeState(E_Hand_State.ERelease); Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageUnPinchObject, (object)Hand.mPinchObjectId, Hand); if (Hand != null) { Hand.mPinchObjectId = -1; } } }
private void OnEnable() { Hi5_Interaction_Message.GetInstance().RegisterMessage(PinchObject, Hi5_MessageKey.messagePinchObject); Hi5_Interaction_Message.GetInstance().RegisterMessage(FlyPinchObject, Hi5_MessageKey.messageFlyPinchObject); Hi5_Interaction_Message.GetInstance().RegisterMessage(GetObjectById, Hi5_MessageKey.messageGetObjecById); Hi5_Interaction_Message.GetInstance().RegisterMessage(UnPinchObject, Hi5_MessageKey.messageUnPinchObject); Hi5_Interaction_Message.GetInstance().RegisterMessage(Pinch2Object, Hi5_MessageKey.messagePinchObject2); Hi5_Interaction_Message.GetInstance().RegisterMessage(UnPinch2Object, Hi5_MessageKey.messageUnPinchObject2); Hi5_Interaction_Message.GetInstance().RegisterMessage(LiftObject, Hi5_MessageKey.messageLiftObject); //mObjectDic.Clear(); }
internal bool IsPinch2() { List <int> pinchs2; List <Hi5_Glove_Interaction_Finger> fingers = null; int ObjectId = -1000; bool isPinch2 = mHand.mState.mJudgeMent.IsPinch2(out pinchs2, out fingers, out ObjectId); Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(ObjectId); if (item != null && item.mObjectType == EObject_Type.ECommon && item.mstatemanager != null && item.mstatemanager.GetMoveState() != null && (item.state == E_Object_State.EStatic || item.state == E_Object_State.EPinch || item.state == E_Object_State.EFlyLift || item.state == E_Object_State.EClap || (item.state == E_Object_State.EMove && item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EPlaneMove) || (item.state == E_Object_State.EMove && item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EFree))) { if (isPinch2 && pinchs2 != null && pinchs2.Count > 0 && fingers != null) { foreach (Hi5_Glove_Interaction_Finger tempItem in fingers) { tempItem.NotifyEnterPinch2State(); } Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messagePinchObject2, pinchs2, mHand, ObjectId); Hi5_Glove_State_Base baseState = mState.GetBaseState(E_Hand_State.EPinch2); if (baseState != null) { (baseState as Hi5_Glove_State_Pinch2).objectId = ObjectId; } item.CleanRecord(); Hi5_Glove_Interaction_Hand handTemp = mHand; mState.ChangeState(E_Hand_State.EPinch2); { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(item.idObject, item.mObjectType, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(item.idObject, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } return(true); } } return(false); }
internal bool IsLift() { int objectId = 0; // Hi5_Glove_Interaction_Finger_Type fingType; bool islift = mHand.mState.mJudgeMent.IsLift(out objectId); Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(objectId); if (item != null && item.mObjectType == EObject_Type.ECommon && (item.state == E_Object_State.EStatic || /*|| item.state == E_Object_State.EPinch || item.state == E_Object_State.EFlyLift || item.state == E_Object_State.EClap*/ (item.state == E_Object_State.EMove)) && islift) { Hi5_Glove_State_Lift liftState = mHand.mState.GetBaseState(E_Hand_State.ELift) as Hi5_Glove_State_Lift; liftState.objectId = objectId; Hi5_Glove_Interaction_Hand handTemp = mHand; Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageLiftObject, mHand, objectId); if (Hi5_Interaction_Const.TestChangeState) { mState.ChangeState(E_Hand_State.ELift); } { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(item.idObject, item.mObjectType, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.ELift); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(item.idObject, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.ELift); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } //Hi5_Glove_Interaction_Object_Event_Data data = new Hi5_Glove_Interaction_Object_Event_Data(); //if (Hand.m_IsLeftHand) // data.mHandType = EHandType.EHandLeft; //else // data.mHandType = EHandType.EHandRight; //data.mObjectType = item.mObjectType; //data.mEventType = EEventType.ELift; //data.mObjectId = item.idObject; //Hi5InteractionManger.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); return(true); } return(false); }
public static Hi5_Interaction_Message GetInstance() { if (instance == null) { lock (_lock) { if (instance == null) { instance = new Hi5_Interaction_Message(); } } } return(instance); }
protected void OnDisable() { Hi5_Interaction_Message.GetInstance().UnRegisterMessage(Reset, Hi5_MessageKey.messageObjectReset); }
protected void OnEnable() { originalPosition = transform.position; originalRotation = transform.rotation; Hi5_Interaction_Message.GetInstance().RegisterMessage(Reset, Hi5_MessageKey.messageObjectReset); }
internal bool IsPinch() { if (mHand.gameObject.GetComponent <Hi5_Glove_Property>() != null) { if (!mHand.gameObject.GetComponent <Hi5_Glove_Property>().Property_Data.IsPinch) { return(false); } } List <int> pinchs; int ObjectId = -1; bool isPinch = mHand.mState.mJudgeMent.IsPinch(out pinchs, out ObjectId); if (isPinch && !(mHand.GetRecognitionState() == Hi5_Glove_Gesture_Recognition_State.EFist) && !(mHand.GetRecognitionState() == Hi5_Glove_Gesture_Recognition_State.EIndexPoint)) { Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(ObjectId); if (item != null && item.mObjectType == EObject_Type.ECommon && item.mstatemanager != null && item.mstatemanager.GetMoveState() != null && (item.state == E_Object_State.EStatic || item.state == E_Object_State.EPinch || item.state == E_Object_State.EFlyLift || item.state == E_Object_State.EClap || (item.state == E_Object_State.EMove && item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EPlaneMove))) { Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messagePinchObject, pinchs, mHand, ObjectId); //isPinchCollider Hi5_Glove_State_Base baseState = mState.GetBaseState(E_Hand_State.EPinch); if (baseState != null) { (baseState as Hi5_Glove_State_Pinch).isPinchCollider = true; (baseState as Hi5_Glove_State_Pinch).objectId = ObjectId; } if (item != null && item.state == E_Object_State.EMove && (item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EThrowMove || item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EFree) && !item.mstatemanager.GetMoveState().IsProtectionFly()) { bool ContactIsSelf = false; float distance = Hi5_Interaction_Const.GetDistance(mHand.mPalm.transform, item, out ContactIsSelf); if (ContactIsSelf) { Vector3 offset = new Vector3(mHand.mPalm.transform.position.x - item.transform.position.x, mHand.mPalm.transform.position.y - item.transform.position.y, mHand.mPalm.transform.position.z - item.transform.position.z).normalized; offset = offset * distance; } } item.CleanRecord(); Hi5_Glove_Interaction_Hand handTemp = mHand; mHand.mGestureRecognition.CleanRecord(); mState.ChangeState(E_Hand_State.EPinch); { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(item.idObject, item.mObjectType, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(item.idObject, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } return(true);; } return(false); } return(false); }
private bool IsPinchOne(out List <int> pinchs, out int ObjectId) { bool resultbool = false; List <int> thumbs; bool thumb = Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.EThumb].IsPinchTrigger(out thumbs); List <int> indexs; bool index = Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.EIndex].IsPinchTrigger(out indexs); List <int> mids; bool mid = Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.EMiddle].IsPinchTrigger(out mids); List <int> rings; bool ring = Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.ERing].IsPinchTrigger(out rings); List <int> results = null; if (thumb) { if (index && mid) { List <int> intersects = indexs.Intersect(mids).ToList(); if (intersects != null && intersects.Count > 0) { results = thumbs.Intersect(intersects).ToList(); } } else if (ring && mid) { List <int> intersects = rings.Intersect(mids).ToList(); if (intersects != null && intersects.Count > 0) { results = thumbs.Intersect(intersects).ToList(); } } } int distanceminId = -1; if (results != null && results.Count > 0) { List <int> listresult = new List <int>(); if (Hand.mPalm != null) { List <int> removeIds = new List <int>(); foreach (int id in results) { Transform temp = null; //mPalm.JudgeObjectHandInside(); List <Hi5_Glove_Interaction_Item> array = new List <Hi5_Glove_Interaction_Item>(); Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messageGetObjecById, (object)id, (object)array); if (array != null && array.Count > 0) { Transform value = array[0].transform; if (!Hand.mPalm.JudgeObjectHandInside(value)) { removeIds.Add(id); } } //else // Debug.Log("temp = empty"); } listresult = results.Except(removeIds).ToList(); } float distanceMin = 20.0f; for (int i = 0; i < listresult.Count; i++) { int objectIdTemp = listresult[i]; Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(objectIdTemp); if (item != null) { bool ContactIsSelf = false; float distance = Hi5_Interaction_Const.GetDistance(mHand.mPalm.transform, item, out ContactIsSelf); if (ContactIsSelf) { if (distance < distanceMin) { distanceMin = distance; distanceminId = objectIdTemp; } } } } //没用 if (listresult != null && listresult.Count > 0) { pinchs = results; if (thumb) { Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.EThumb].NotifyEnterPinchState(); } if (index) { Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.EIndex].NotifyEnterPinchState(); } if (mid) { Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.EMiddle].NotifyEnterPinchState(); } if (ring) { Hand.mFingers[Hi5_Glove_Interaction_Finger_Type.ERing].NotifyEnterPinchState(); } resultbool = true; } else { pinchs = null; } } else { pinchs = null; } if (distanceminId != -1) { ObjectId = distanceminId; return(true); } else { ObjectId = -1; return(false); } }
// 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); } }
void UnPinchObject(string messageKey, object param1, object param2, object param3, object param4) { if (messageKey.CompareTo(Hi5_MessageKey.messageUnPinchObject) == 0) { //Debug.Log ("UnPinchObject"); int objectId = (int)param1; Hi5_Glove_Interaction_Hand hand = param2 as Hi5_Glove_Interaction_Hand; if (mObjectDic.ContainsKey(objectId)) { Hi5_Glove_Interaction_Item pinchObject = mObjectDic[objectId]; if (pinchObject != null && pinchObject.mObjectType == EObject_Type.ECommon) { Hi5_Object_State_Base state = pinchObject.mstatemanager.GetState(E_Object_State.EPinch); bool isRelease = false; bool OtherHandRelease = false; if (state != null && state is Hi5_Object_State_Pinch) { Hi5_Object_State_Pinch pinchState = state as Hi5_Object_State_Pinch; if (pinchState != null && !pinchState.isTestRelease) { if (hand.m_IsLeftHand) { isRelease = pinchState.CancelPinchHand(Hi5_Object_Pinch_Type.ELeft, out OtherHandRelease); } else { isRelease = pinchState.CancelPinchHand(Hi5_Object_Pinch_Type.ERight, out OtherHandRelease); } } } if (OtherHandRelease) { Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messagePinchOtherHandRelease, hand, objectId); } if (isRelease) { if (!pinchObject.isTouchPlane) { //Debug.Log ("!pinchObject.isTouchPlane"); pinchObject.ChangeState(E_Object_State.EMove); pinchObject.CalculateThrowMove(hand.mPalm.transform, hand); pinchObject.CleanRecord(); // if (Hi5_Interaction_Const.TestChangeState) // hand.mState.ChangeState(E_Hand_State.ERelease); { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(pinchObject.idObject, pinchObject.mObjectType, hand.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.EMove); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(pinchObject.idObject, hand.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.EThrow); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } } else { Debug.Log("pinchObject.isTouchPlane"); //if (Hi5_Interaction_Const.TestChangeState) hand.mState.ChangeState(E_Hand_State.ERelease); pinchObject.ChangeState(E_Object_State.EStatic); Hi5_Object_State_Static staticState = pinchObject.mstatemanager.GetState(E_Object_State.EStatic) as Hi5_Object_State_Static; staticState.ResetPreTransform(); { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(pinchObject.idObject, pinchObject.mObjectType, hand.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.EStatic); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(pinchObject.idObject, hand.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.ERelease); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } } } } } } }
virtual protected void OnDisable() { Hi5_Interaction_Message.GetInstance().RegisterMessage(PichOtherHandRealse, Hi5_MessageKey.messagePinchObject); }
virtual protected void OnEnable() { Hi5_Interaction_Message.GetInstance().RegisterMessage(PichOtherHandRealse, Hi5_MessageKey.messageLiftObject); //m_TriggerCount.Clear(); }
internal bool IsPinch() { List <int> pinchs; int ObjectId = -1; bool isPinch = mHand.mState.mJudgeMent.IsPinch(out pinchs, out ObjectId); if (isPinch) { Hi5_Glove_Interaction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(ObjectId); if (item != null && item.mObjectType == EObject_Type.ECommon && item.mstatemanager != null && item.mstatemanager.GetMoveState() != null && (item.state == E_Object_State.EStatic || item.state == E_Object_State.EPinch || item.state == E_Object_State.EFlyLift || item.state == E_Object_State.EClap || (item.state == E_Object_State.EMove && item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EPlaneMove))) { Hi5_Interaction_Message.GetInstance().DispenseMessage(Hi5_MessageKey.messagePinchObject, pinchs, mHand, ObjectId); //isPinchCollider Hi5_Glove_State_Base baseState = mState.GetBaseState(E_Hand_State.EPinch); if (baseState != null) { (baseState as Hi5_Glove_State_Pinch).isPinchCollider = true; (baseState as Hi5_Glove_State_Pinch).objectId = ObjectId; } //Hi5_Glove_Interraction_Item item = Hi5_Interaction_Object_Manager.GetObjectManager().GetItemById(ObjectId); if (item != null && item.state == E_Object_State.EMove && (item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EThrowMove || item.mstatemanager.GetMoveState().mMoveType == Hi5ObjectMoveType.EFree) && !item.mstatemanager.GetMoveState().IsProtectionFly()) { bool ContactIsSelf = false; float distance = Hi5_Interaction_Const.GetDistance(mHand.mPalm.transform, item, out ContactIsSelf); if (ContactIsSelf) { Vector3 offset = new Vector3(mHand.mPalm.transform.position.x - item.transform.position.x, mHand.mPalm.transform.position.y - item.transform.position.y, mHand.mPalm.transform.position.z - item.transform.position.z).normalized; offset = offset * distance; //item.transform.position = new Vector3(item.transform.position.x + offset.x, // item.transform.position.y + offset.y, // item.transform.position.z + offset.z); } } item.CleanRecord(); Hi5_Glove_Interaction_Hand handTemp = mHand; mState.ChangeState(E_Hand_State.EPinch); // if (handTemp.m_IsLeftHand) // { // Debug.Log ("Left pinch"); // } { Hi5_Glove_Interaction_Object_Event_Data data = Hi5_Glove_Interaction_Object_Event_Data.Instance(item.idObject, item.mObjectType, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventObjectType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); } { Hi5_Glove_Interaction_Hand_Event_Data data = Hi5_Glove_Interaction_Hand_Event_Data.Instance(item.idObject, handTemp.m_IsLeftHand ? EHandType.EHandLeft : EHandType.EHandRight, EEventHandType.EPinch); Hi5InteractionManager.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageHandEvent, (object)data, null); } //Hi5_Glove_Interaction_Object_Event_Data data = new Hi5_Glove_Interaction_Object_Event_Data(); //if (Hand.m_IsLeftHand) // data.mHandType = EHandType.EHandLeft; //else // data.mHandType = EHandType.EHandRight; //data.mObjectType = item.mObjectType; //data.mEventType = EEventType.EPinch; //data.mObjectId = item.idObject; //Hi5InteractionManger.Instance.GetMessage().DispenseMessage(Hi5_Glove_Interaction_Message.Hi5_MessageMessageKey.messageObjectEvent, (object)data, null); return(true);; } return(false); } return(false); }