protected void init(Hi5_Glove_Interaction_Item objectItem) { mItem = objectItem; Hi5_Object_State_Pinch pinchState = new Hi5_Object_State_Pinch(); pinchState.Init(objectItem, this); Hi5_Object_State_Static releaseState = new Hi5_Object_State_Static(); releaseState.Init(objectItem, this); Hi5_Object_State_Move moveState = new Hi5_Object_State_Move(); moveState.Init(objectItem, this); Hi5_Object_State_Clap clapState = new Hi5_Object_State_Clap(); clapState.Init(objectItem, this); Hi5_Object_State_Poke pokeState = new Hi5_Object_State_Poke(); pokeState.Init(objectItem, this); //if (Hi5_Interaction_Const.TestFlyMoveNoUsedGravity) { Hi5_Object_State_Fly_Lift flyLift = new Hi5_Object_State_Fly_Lift(); flyLift.Init(objectItem, this); mDicState.Add(E_Object_State.EFlyLift, flyLift); } mDicState.Add(E_Object_State.EPinch, pinchState); mDicState.Add(E_Object_State.EStatic, releaseState); mDicState.Add(E_Object_State.EMove, moveState); mDicState.Add(E_Object_State.EClap, clapState); mDicState.Add(E_Object_State.EPoke, pokeState); mCurrentState = releaseState; }
void Pinch2Object(string messageKey, object param1, object param2, object param3, object param4) { if (messageKey.CompareTo(Hi5_MessageKey.messagePinchObject2) == 0) { List <int> objectIds = param1 as List <int>; Hi5_Glove_Interaction_Hand hand = param2 as Hi5_Glove_Interaction_Hand; int objectId = (int)param3; if (mObjectDic.ContainsKey(objectId)) { //ruige 加入判断 Hi5_Glove_Interaction_Item pinchObject = mObjectDic[objectId]; if (pinchObject != null && pinchObject.mObjectType == EObject_Type.ECommon) { hand.AddPinch2Object(pinchObject.transform, hand.mVisibleHand.palm); pinchObject.SetIsKinematic(true); pinchObject.ChangeState(E_Object_State.EPinch); Hi5_Object_State_Base state = pinchObject.mstatemanager.GetState(E_Object_State.EPinch); if (state != null && (state is Hi5_Object_State_Pinch)) { Hi5_Object_State_Pinch pinchState = state as Hi5_Object_State_Pinch; if (hand.m_IsLeftHand) { pinchState.SetPinchHand(Hi5_Object_Pinch_Type.ELeft, hand); } else { pinchState.SetPinchHand(Hi5_Object_Pinch_Type.ERight, hand); } } } } } }
void FlyPinchObject(string messageKey, object param1, object param2, object param3, object param4) { if (messageKey.CompareTo(Hi5_MessageKey.messageFlyPinchObject) == 0) { List <int> objectIds = param1 as List <int>; Hi5_Glove_Interaction_Hand hand = param2 as Hi5_Glove_Interaction_Hand; int objectId = (int)param3; if (mObjectDic.ContainsKey(objectId)) { // Debug.Log("FlyPinchObject"); Hi5_Glove_Interaction_Item pinchObject = mObjectDic[objectId]; if (pinchObject != null && pinchObject.mObjectType == EObject_Type.ECommon) { hand.AddPinchObject(pinchObject.transform, hand.mVisibleHand.palm); pinchObject.SetIsKinematic(true); //pinchObject.transform.position = hand.mPalm.transform.position; pinchObject.ChangeState(E_Object_State.EPinch); Hi5_Object_State_Base state = pinchObject.mstatemanager.GetState(E_Object_State.EPinch); if (state != null && (state is Hi5_Object_State_Pinch)) { Hi5_Object_State_Pinch pinchState = state as Hi5_Object_State_Pinch; //pinchState.isTestRelease = true; if (hand.m_IsLeftHand) { pinchState.SetPinchHand(Hi5_Object_Pinch_Type.ELeft, hand); } else { pinchState.SetPinchHand(Hi5_Object_Pinch_Type.ERight, hand); } } } } //if (objectIds != null && objectIds.Count > 0 && mObjectDic.ContainsKey(objectIds[0])) //{ // Hi5_Glove_Interraction_Item pinchObject = mObjectDic[objectIds[0]]; // hand.AddPinchObject(pinchObject.transform); // pinchObject.SetIsKinematic(true); // pinchObject.ChangeState(E_Object_State.EPinch); //} } }
void PinchObject(string messageKey, object param1, object param2, object param3, object param4) { if (messageKey.CompareTo(Hi5_MessageKey.messagePinchObject) == 0) { List <int> objectIds = param1 as List <int>; Hi5_Glove_Interaction_Hand hand = param2 as Hi5_Glove_Interaction_Hand; int objectId = (int)param3; if (mObjectDic.ContainsKey(objectId)) { Hi5_Glove_Interaction_Item pinchObject = mObjectDic[objectId]; hand.AddPinchObject(pinchObject.transform); pinchObject.SetIsKinematic(true); pinchObject.ChangeState(E_Object_State.EPinch); Hi5_Object_State_Base state = pinchObject.mstatemanager.GetState(E_Object_State.EPinch); if (state != null && (state is Hi5_Object_State_Pinch)) { Hi5_Object_State_Pinch pinchState = state as Hi5_Object_State_Pinch; if (hand.m_IsLeftHand) { pinchState.SetPinchHand(Hi5_Object_Pinch_Type.ELeft, hand); } else { pinchState.SetPinchHand(Hi5_Object_Pinch_Type.ERight, hand); } } } //if (objectIds != null && objectIds.Count > 0 && mObjectDic.ContainsKey(objectIds[0])) //{ // Hi5_Glove_Interraction_Item pinchObject = mObjectDic[objectIds[0]]; // hand.AddPinchObject(pinchObject.transform); // pinchObject.SetIsKinematic(true); // pinchObject.ChangeState(E_Object_State.EPinch); //} } }
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); } } } } } } }