Beispiel #1
0
    /// <summary>
    /// Compare gesture with recognizer
    /// </summary>
    /// <param name="gestureResult">Gesture result.</param>
    void CheckGesture(Result gestureResult)
    {
        if (gestureResult.Score > gestureThreshold)
        {
            // Check against current gesture
            GestureObject gestureObject = gestureHolders[0].holder.GetComponentInChildren <GestureObject> ();
            if (gestureResult.GestureClass == gestureObject.name)
            {
                // If auto game mode, move player to first animal position
                if (GameManager.instance.gameMode == GameMode.Auto)
                {
                    float animalX = AnimalManager.instance.GetFirstAnimalX();
                    // Only spawn hand if animal exists
                    if (animalX != Mathf.Infinity)
                    {
                        player.transform.position = new Vector3(animalX, player.transform.position.y);
                        AnimalManager.instance.AnimalsShift();

                        Instantiate(hand, player.transform.position, Quaternion.identity);
                    }
                }
                else
                {
                    // Spawn hand object at wherever player is located
                    Instantiate(hand, player.transform.position, Quaternion.identity);
                }
                CreateNewGesture();
            }
        }
    }
    public void StartCapture(GestureObject listener)
    {
        if (InGamePause.instance.GetIsPaused()) return;

        _capturingGestures = true;
        _listenerObject = listener;
        _gradientIndices.Clear();
        _currentGradientStartPosition = Input.mousePosition;
        CursorManager.instance.ChangeCursorStatus(CursorManager.CursorGestureStatus.Capturing);
    }
Beispiel #3
0
		/****************************************************
		 * Gesture Listeners
		 **/
		public void GestureListener ( GestureObject p_gesture )
		{
			m_dragonStateMachine.Trigger(p_gesture);
		}
Beispiel #4
0
		// + LA 092713: Refactored Trigger method
		public void Trigger ( GestureObject p_gesture )
		{
			bool _isHitinInteractiveArea			= m_hitCollider.GetIsHitAt(p_gesture.position,true);
			bool _isSwipeValid						= m_hitCollider.GetIsHitAt(m_startPoint,true);
			
			GameObject TouchObject 				  	= null;
			StatsManager.Instance.DragonTouchPart 	= "";
			
			if( p_gesture.hit.collider != null )
			{
				StatsManager.Instance.DragonTouchPart = p_gesture.hit.collider.gameObject.tag;
				TouchObject 					      = p_gesture.hit.collider.gameObject;
			}
			
			// Event Params
			string strEvent = "";
			string strEventType = "";
			
			# region Gesture Up
			if( p_gesture.type == GestureManager.GestureType.Up )
			{
				strEvent = "Event_Up";
				strEventType = "Type_Touch";
				
				m_rubMeter.Disable();
				//m_soapParticle.SetActive( false );
				
				#region Rubbing temp fix on Touch Up 
				if(StatsManager.Instance.DragonState == "Rubbing" && this.IsInteractible())
				{	
					m_rubbingTargetDirection = Vector2.zero;
					m_rubbingObjectIndex.Clear();
					UpdateRubbingPosition(0.8f);
				}
				#endregion
				
				
				
				bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture Down
			else if( p_gesture.type == GestureManager.GestureType.Down )
			{
//				strEvent = "Event_Down";
//				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					
					strEvent = "Event_Down";
					strEventType = "Type_Touch";
					
					if( StatsManager.Instance.DragonState == "Rubbing" && this.IsInteractible() )
					{
						if(m_rubbingTargetDirection == m_rubbingDirection &&  TouchObject != null)
						{
							m_rubbingTargetDirection = Vector2.zero;
							m_rubbingDirection = Vector2.zero;
							switch(p_gesture.hit.collider.gameObject.name)
							{
							case "RubTopCollider":
								m_rubbingTargetDirection = new Vector2(0,1);
								break;
							case "RubBottomCollider":
								m_rubbingTargetDirection = new Vector2(0,-1);
								break;
							case "RubLeftCollider":
								m_rubbingTargetDirection = new Vector2(-1,0);
								break;
							case "RubRightCollider":
								m_rubbingTargetDirection = new Vector2(1,0);
								break;
							}
							UpdateRubbingPosition(0.5f);
						}
					}
					
					break;
				case StatsManager.MODE_IUC:
					
					strEvent = "Event_Down";
					strEventType = "Type_Touch";
					
					if( !JawCruncher.IsThrownJC() )
					{
						PettingMain.Instance.GestureManager.EnableHold();
						StatsManager.Instance.touchPosition = p_gesture.position;
						m_fastSwipeCounter = 0.0f;
					}
					
					break;
					
				case StatsManager.MODE_ACT1:
					strEvent = "Event_Down";
					strEventType = "Type_Touch";
					
					break;
					
				case StatsManager.MODE_DRAGONSALVE:
					strEvent = "Event_Down";
					strEventType = "Type_Touch";
					
					break;
				}
			}
			#endregion
			#region Gesture Tap / Double Tap
			else if( p_gesture.type == GestureManager.GestureType.Tap )
			{
				if( p_gesture.tapCount == 2 )
				{
					switch( StatsManager.Instance.DragonMode )
					{
						case StatsManager.MODE_NORMAL:
							if( _isHitinInteractiveArea )
							{
								strEventType = "Type_Touch";
								strEvent = "Event_DoubleTap";
								StatsManager.Instance.ResetRubCount();
								// + ET  091913 TEMP ON/OFF OF RUBBING COLLIDERS
								StopCoroutine("SetColliderVisible");
								StartCoroutine(SetColliderVisible(0.5f));
								// - ET 
							}
						break;
						
						case StatsManager.MODE_IUC:
						break;
						
						case StatsManager.MODE_WATERBUCKET:
							/*
							if( TouchObject.transform.parent.name.Contains("WaterBucket") )
							{
								strEventType = "Type_From_Inventory";
								strEvent = "Event_Water_Bucket";	
							}
							// + LA 092713: This is to not conflict with the other double tap event
							else
							{
								strEventType = "Type_Touch";
								strEvent = "Event_DoubleTap";
							}
							//*/
						break;
						
						case StatsManager.MODE_TOUCHMOMENT:
						break;
						
						case StatsManager.MODE_ACT1:
						
						
						if( TutorialController.GTutState == TutorialController.ETutorialState.PostPetting )
						{
							if( _isHitinInteractiveArea )
							{
								strEventType = "Type_Touch";
								strEvent = "Event_DoubleTap";
							}
						}
							
						if( TutorialController.GTutState == TutorialController.ETutorialState.Petting )
						{
							if( _isHitinInteractiveArea )
							{
								strEventType = "Type_Touch";
								strEvent = "Event_DoubleTap";
								
								// + ET 110513 SUCCESS BURST
								Vector3 pos = m_feedbackCamera.camera.ScreenToWorldPoint( new Vector3( p_gesture.position.x, p_gesture.position.y, 2 ));
								m_successBurst.transform.position=pos;
								m_successParticle.Play();
								// - ET
								
								StatsManager.Instance.ResetRubCount();
								// + ET  091913 TEMP ON/OFF OF RUBBING COLLIDERS
								StopCoroutine("SetColliderVisible");
								StartCoroutine(SetColliderVisible(0.5f));
								// - ET 
							}
						}
						
						if( StatsManager.Instance.DragonState == "Analyzing_Near" )
						{
							if( TouchObject != null && TouchObject.transform.name.Contains("Floor") )
							{
								strEventType = "Type_Touch";
								strEvent = "Event_DoubleTap";
							}
						}
						
						break;
					}
					
					m_bwillDoubleTap 	= true;
				}
				else if( p_gesture.tapCount == 1 )
				{
//					strEventType = "Type_Touch";
//					strEvent = "Event_Tap";
					switch( StatsManager.Instance.DragonMode ) 
					{
						case StatsManager.MODE_IUC:
							
							strEventType = "Type_Touch";
							strEvent = "Event_Tap";
							
							JawCruncherStateController controller = PettingMain.Instance.DragonGameObject.GetComponent< JawCruncherStateController >();
								
							if( controller.SetGetState == JawCruncherStateController.JC_STATE.FixNF  
							&&  controller != null
							&&  controller.m_bIsEnableToTap )
							{
								Vector3 pos = m_feedbackCamera.camera.ScreenToWorldPoint( new Vector3( p_gesture.position.x, p_gesture.position.y, 2 ));
								m_successBurst.transform.position=pos;
								m_successParticle.Play();
								controller.SetGetState = JawCruncherStateController.JC_STATE.Drop;
							}
						break;
						
						case StatsManager.MODE_WATERBUCKET:
							if( TouchObject != null && TouchObject.transform.parent.name.Contains("WaterBucket") )
							{
								strEventType = "Type_From_Inventory";
								strEvent = "Event_Water_Bucket";
								Vector3 pos = m_feedbackCamera.camera.ScreenToWorldPoint( new Vector3( p_gesture.position.x, p_gesture.position.y, 2 ));
								m_successBurst.transform.position=pos;
								m_successParticle.Play();
							}
								
							else
							{
								strEventType = "Type_From_Inventory";
								strEvent = "Event_Outcome_Blast";
							}
						break;
						
						case StatsManager.MODE_ACT1:
							if( TouchObject != null && TouchObject.transform.name.Contains("Floor") )
							{
								strEventType = "Type_Touch";
								strEvent = "Event_Tap";
							}
						break;
						
						case StatsManager.MODE_NORMAL:
							strEventType = "Type_Touch";
							strEvent = "Event_Tap";
						break;
					}
				}
			}
			#endregion
			#region Gesture Move
			else if( p_gesture.type == GestureManager.GestureType.Move )
			{
				strEvent = "Event_Move";
				strEventType = "Type_Touch";
				
				if( StatsManager.Instance.DragonState == "Rubbing" && this.IsInteractible() )
				{
					bool bIsRubbingTrigger = true;
					
					if(TouchObject != null)
					{
						if( m_rubbingDirection == m_rubbingTargetDirection )
						{
							switch( StatsManager.Instance.DragonMode )
							{
							case StatsManager.MODE_ACT1:
							case StatsManager.MODE_NORMAL:
								switch(TouchObject.name)
								{
								case "RubTopCollider":
									m_rubbingObjectIndex.Enqueue(new Vector2(0,1));
									break;
								case "RubBottomCollider":
									m_rubbingObjectIndex.Enqueue(new Vector2(0,-1));
									break;
								case "RubLeftCollider":
									m_rubbingObjectIndex.Enqueue(new Vector2(-1,0));
									break;
								case "RubRightCollider":
									m_rubbingObjectIndex.Enqueue(new Vector2(1,0));
									break;
								default :
									m_rubbingObjectIndex.Enqueue(new Vector2(0,0));
									bIsRubbingTrigger = false;
									break;
								}
								break;
								
							case StatsManager.MODE_DRAGONSALVE:
								switch(TouchObject.name)
								{
								case "LeftCollider":
									m_rubbingObjectIndex.Enqueue(new Vector2(-1,0));
									break;
								case "RightCollider":
									m_rubbingObjectIndex.Enqueue(new Vector2(1,0));
									break;
								default :
									m_rubbingObjectIndex.Enqueue(new Vector2(0,0));
									bIsRubbingTrigger = false;
									break;
								}
								break;
								
							case StatsManager.MODE_BATH:
								switch(TouchObject.name)
								{
								case "LeftCollider":
									if( p_gesture.hit.point.x > 0.5f )
										m_rubbingObjectIndex.Enqueue(new Vector2(-1,0)); 
									else 
										m_rubbingObjectIndex.Enqueue(new Vector2(-1,1));
									if( p_gesture.hit.point.x < 0.7f )
										DentalParticles.Instance.Apply( p_gesture.hit.point, TouchObject.transform, 0.1f, 0.2f );
									break;
								case "RightCollider":
									if( p_gesture.hit.point.x < 0.5f )
										m_rubbingObjectIndex.Enqueue(new Vector2(1,0));
									else
										m_rubbingObjectIndex.Enqueue(new Vector2(1,1));
									if( p_gesture.hit.point.x < 0.27f )
										DentalParticles.Instance.Apply( p_gesture.hit.point, TouchObject.transform, 0.1f, 0.2f );
									break;
								default :
									m_rubbingObjectIndex.Enqueue(new Vector2(0,0));
									bIsRubbingTrigger = false;
									break;
								}
								break;
								
							case StatsManager.MODE_DENTALKIT:
								switch(TouchObject.name)
								{
								case "Teeth":
									DentalParticles.Instance.Apply( p_gesture.hit.point, TouchObject.transform, 0.01f, 0.02f );
									break;
								}
								
								break;
							}
							
							while(m_rubbingObjectIndex.Count>5)
							{
								m_rubbingObjectIndex.Dequeue();
							}
								
							Vector2 sum = Vector2.zero;
							foreach( Vector2 index in m_rubbingObjectIndex ) 
							{
								sum += index;
							}
							sum.x = sum.x / m_rubbingObjectIndex.Count;
							sum.y = sum.y / m_rubbingObjectIndex.Count;
							m_rubbingTargetDirection = sum.normalized;
							UpdateRubbingPosition(0.5f);
						}
					}
					else
					{
						if(m_rubbingTargetDirection != Vector2.zero)
						{
							m_rubbingObjectIndex.Clear();
							m_rubbingTargetDirection = Vector2.zero;
							UpdateRubbingPosition(0.5f);	
						}
						bIsRubbingTrigger = false;
					}
						
					Vector3 tempCenterPos 	    = Camera.main.ScreenToViewportPoint(new Vector3(p_gesture.position.x, p_gesture.position.y, 0));
					const float CENTER_VIEWPORT = 0.50f;
					const float TEMP_THRESHOLD  = 0.25f;
						 
					/*
					*	Immediate fix to center the rubbing position 
					*	Also to make the "RUBBING PARTICLE" centered
					
					if(	( CENTER_VIEWPORT + TEMP_THRESHOLD ) >= tempCenterPos.x
					&&  ( CENTER_VIEWPORT - TEMP_THRESHOLD ) <= tempCenterPos.x
					&&  ( CENTER_VIEWPORT + TEMP_THRESHOLD ) >= tempCenterPos.y
					&&  ( CENTER_VIEWPORT - TEMP_THRESHOLD ) <= tempCenterPos.y	)*/
					if ( bIsRubbingTrigger )
					{
						m_eventTimer.RestartScheduler();
	                    m_eventTimer.PauseScheduler();
						m_sprint9Demo.PauseScheduler();
							
						if (m_lastTouchOBject == null
						||	( TouchObject != null && m_lastTouchOBject != TouchObject ) )
						{
							m_lastTouchOBject = TouchObject;
							m_rubMeter.UpdatePosition(m_lastTouchOBject.transform.position);
						}
							
						m_rubMeter.Enable();
							
						if(m_curRubLength <= 250.0f)
						{
							m_curRubLength += p_gesture.velocity;
								
							if( Utility.RANDOM_INT(0,100) < 10 && m_curRubLength <= 200 )
							{
								// +KJ:08022013 
								//	TODO: Adjust this one and encode all at the tables
								// 	NOTE: Put all the triggers on the States listed below.
								//  The poses under rubbing state are:
								//	1) Pose_PettingHead
								// 	2) Pose_DragonSalve
								//	3) Pose_ToothBrush
								//	4) Pose_SoapAndBrush
									
								#region Dragon Poses
								if( StatsManager.Instance.DragonPose == "Pose_PettingHead" )
								{
										
								}
								else if( StatsManager.Instance.DragonPose == "Pose_DragonSalve" )
								{
										
								}
								else if( StatsManager.Instance.DragonPose == "Pose_DentalKit" )
								{
										
								}
								else if( StatsManager.Instance.DragonPose == "Pose_Bath" )
								{
										
								}
								#endregion
							}
						}
						else 
						{
							float completionPercentage = ((float)StatsManager.Instance.CurrentRubCount / (float)StatsManager.Instance.MaxRubCount);
							completionPercentage = Mathf.Clamp01(completionPercentage);
							
							if( StatsManager.Instance.DragonMode == StatsManager.MODE_DENTALKIT )
							{
								Color headColor 		= m_head.renderer.materials[1].color;
								Color tongueColor 		= m_tongue.renderer.materials[1].color;
								float alphaValue 		= 1.0f - completionPercentage;
								
								headColor.a 			= alphaValue;
								tongueColor.a 			= alphaValue;
							
								m_head.renderer.materials[1].color = headColor;
								m_tongue.renderer.materials[1].color = tongueColor;
							}
							
							m_rubMeter.UpdateCompletion(completionPercentage);
								
							m_curRubLength = 0.0f;
							StatsManager.Instance.UpdateRubCount();
								
							// + LA 091013: This is where we'll put reaction after the rubbing phase
								
							if( StatsManager.Instance.CurrentRubCount > StatsManager.Instance.MaxRubCount )
							{
								if( StatsManager.Instance.DragonPose == "Pose_PettingHead" )
								{
									// + LA 091013: This is to be replaced with a new reaction
									// NOTE: This has two variations
									// 1) Normal Pet Done (When the petting is completed in the parts other than the lower neck)
									// 2) Play dead like action (When the petting is completed in the lower neck)
									// - LA
									for(int i = 0; i<m_rubbingColliders.Count; i++)	m_rubbingColliders[i].SetActive(false);
									bool bIsSweetSpotHit = false;
									if( m_rubbingDirection.x > 0f && m_rubbingDirection.y >= 0f)	
										bIsSweetSpotHit = true;	
									
									m_rubbingTargetDirection = Vector2.zero;
									UpdateRubbingPosition(0.3f);
									
									if( TutorialController.GTutState == TutorialController.ETutorialState.Petting )
									{
										this.Reaction("Type_Petting", "Event_Petting_Done");

									}
									else
									{
										if(bIsSweetSpotHit)	this.Reaction("Type_Petting", "Event_Petting_Done_Sweet_Spot");
										else 				this.Reaction("Type_Petting", "Event_Petting_Done");
									}
									PettingMain.Instance.ShowUI("InventoryPanel");
									PettingMain.Instance.ShowUI("MainUI");
									
								}
								else if( StatsManager.Instance.DragonPose == "Pose_DragonSalve" )
								{
									this.Reaction("Type_Rubbing", "Event_Dragon_Salve_Done"); // aries:10182013 done dragon salve. 
									PettingMain.Instance.ShowUI("InventoryPanel");
									PettingMain.Instance.ShowUI("MainUI");
								}
								else if( StatsManager.Instance.DragonPose == "Pose_DentalKit" )
								{
									this.Reaction( "Type_Rubbing", "Event_Dental_Kit_Done" );
									this.SetMouthCollidersActive( false );
									DentalParticles.Instance.Reset();
									PettingMain.Instance.ShowUI("InventoryPanel");
									PettingMain.Instance.ShowUI("MainUI");
								}
								else if( StatsManager.Instance.DragonPose == "Pose_Bath" )
								{	
									Debug.Log( "Done" );
									this.Reaction("Type_Rubbing", "Event_Bath_Done");
									DentalParticles.Instance.Reset();
									PettingMain.Instance.ShowUI("InventoryPanel");
									PettingMain.Instance.ShowUI("MainUI");
								}
							
								StatsManager.Instance.ResetRubCount();
							}
						}
						return;
					}	
					else
					{
						m_rubMeter.Disable();
					}
				}
			}
			#endregion
			#region Gesture SwipeUp
			else if( p_gesture.type == GestureManager.GestureType.Swipe 
				&& p_gesture.direction == FingerGestures.SwipeDirection.Up 
				&& _isSwipeValid )
			{
				strEvent = "Event_SwipeUp";
				strEventType = "Type_Touch";
				bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture SwipeDown
			else if( p_gesture.type == GestureManager.GestureType.Swipe 
				&& p_gesture.direction == FingerGestures.SwipeDirection.Down 
				&& _isSwipeValid)
			{
				strEvent = "Event_SwipeDown";
				strEventType = "Type_Touch";
				//bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture SwipeLeft
			else if( p_gesture.type == GestureManager.GestureType.Swipe 
				&& p_gesture.direction == FingerGestures.SwipeDirection.Left 
				&& _isSwipeValid)
			{
				strEvent = "Event_SwipeLeft";
				strEventType = "Type_Touch";
				
				//bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture SwipeRight
			else if( p_gesture.type == GestureManager.GestureType.Swipe 
				&& p_gesture.direction == FingerGestures.SwipeDirection.Right 
				&& _isSwipeValid)
			{
				strEvent = "Event_SwipeRight";
				strEventType = "Type_Touch";
				
				//bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture Swipe
			else if( p_gesture.type == GestureManager.GestureType.Swipe )
			{
				strEvent = "Event_Swipe";
				strEventType = "Type_Touch";
				
				bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture Hold
			else if( p_gesture.type == GestureManager.GestureType.Hold )
			{
				strEvent = "Event_Hold";
				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					
					break;
					
				case StatsManager.MODE_IUC:
					
					if( !JawCruncher.IsThrownJC() )
					{
						StatsManager.Instance.touchPosition = p_gesture.position;
						m_fastSwipeCounter = 0.0f;
						//m_holdParticle.gameObject.GetComponent<FollowComponent>().SeekPoint(p_gesture.position);
						//m_holdParticle.gameObject.GetComponent<FollowComponent>().lerpSpeed = 1.0f;
						//m_holdParticle.Play();
						JawCruncher.EnableFollowFingerJC();
					}
					
					break;
					
				case StatsManager.MODE_DRAGONSALVE:
					
					break;
				}
			}
			#endregion
			#region Gesture Hold_Move
			else if( p_gesture.type == GestureManager.GestureType.Hold_Move )
			{
				strEvent = "Event_Hold_Move";
				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					break;
				case StatsManager.MODE_IUC:
					if( !JawCruncher.IsThrownJC() )
					{
						StatsManager.Instance.touchPosition = p_gesture.position;
						JawCruncher.EnableFollowFingerJC();
					}
					break;	
				case StatsManager.MODE_DRAGONSALVE:
					break;
				}
			}
			#endregion
			#region Gesture Hold_Move_Fast
			else if( p_gesture.type == GestureManager.GestureType.Hold_Move_Fast )
			{
				strEvent = "Event_Hold_Move_Fast";
				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					
					break;
					
				case StatsManager.MODE_IUC:
					
					if( !JawCruncher.IsThrownJC() )
					{
						
						StatsManager.Instance.touchPosition = p_gesture.position;
						JawCruncher.EnableFollowFingerJC();
					}
					
					break;
					
				case StatsManager.MODE_DRAGONSALVE:
					
					break;
				}
			}
			#endregion
			#region Gesture Hold_Up
			else if( p_gesture.type == GestureManager.GestureType.Hold_Up )
			{
//				strEvent = "Event_Hold_Up";
//				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					
					break;
					
				case StatsManager.MODE_IUC:
					
					strEvent = "Event_Hold_Up";
					strEventType = "Type_Touch";
					
					if( !JawCruncher.IsThrownJC() )
					{
						StatsManager.Instance.touchPosition = p_gesture.position;
						JawCruncher.DisableFollowFingerJC();
						JawCruncher.DropJC();
						m_fastSwipeCounter = 0.0f;
					}
					
					break;
					
				case StatsManager.MODE_DRAGONSALVE:
					
					break;
					
				case StatsManager.MODE_DENTALKIT:
					//m_soapParticle.SetActive( false );
					break;
					
				case StatsManager.MODE_ACT1:
					
					if( CarePlayNFController.GetPetAnimController().IsCurAnimStateOnSub( ERigType.Body, "TouchMoment", "TouchMomentWaitingIdle" ) )
					{
						strEvent = "Event_Hold_Up";
						strEventType = "Type_Touch";
					}
					
					if( CarePlayNFController.GetPetAnimController().IsCurAnimStateOnSub( ERigType.Body, "TouchMoment", "TouchMomentToMidground" ) )
					{
						float currentAnimTime = CarePlayNFController.GetPetAnimController().GetCurAnimNormTime( ERigType.Body );
						
						if( currentAnimTime <= 0.4f )
						{
							strEvent = "Event_Hold_Up";
							strEventType = "Type_Touch";
						}
					}
					
					break;
				}
				
				bSatisfiedGesture = false;
			}
			#endregion
			#region Gesture Hold_Swipe
			else if( p_gesture.type == GestureManager.GestureType.Hold_Swipe )
			{
				strEvent = "Event_Hold_Swipe";
				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					
					break;
					
				case StatsManager.MODE_IUC:
					
					if( !JawCruncher.IsThrownJC() )
					{
						StatsManager.Instance.touchPosition = p_gesture.position;
						JawCruncher.ThrowJC(p_gesture.screenHead, p_gesture.screenTail, p_gesture.velocity);
					}
					
					break;
					
				case StatsManager.MODE_DRAGONSALVE:
					
					break;
				}
			}
			#endregion
			#region Gesture Hold_Fake_Swipe
			else if( p_gesture.type == GestureManager.GestureType.Hold_Fake_Swipe )
			{
				strEvent = "Event_Hold_Fake_Swipe";
				strEventType = "Type_Touch";
				
				switch( StatsManager.Instance.DragonMode )
				{
				case StatsManager.MODE_NORMAL:
					
					break;
					
				case StatsManager.MODE_IUC:
					
					if( !JawCruncher.IsThrownJC() )
					{
						GestureManager.SwipeWorldPos( p_gesture.screenHead, p_gesture.screenTail );
						StatsManager.Instance.touchPosition = p_gesture.position;
						JawCruncher.EnableFollowFingerJC();
					}
					
					break;
					
				case StatsManager.MODE_DRAGONSALVE:
					
					break;
				}
				
				bSatisfiedGesture = false;
			}
			#endregion
			else
			{
				m_holdParticle.Stop();
			}
			
			// + LA 103013: This is for any triggered reaction
			switch( StatsManager.Instance.DragonMode )
			{
			case StatsManager.MODE_ACT1:
				
				if( StatsManager.Instance.DragonState == "Coming_Down" )
				{
					strEventType = "Type_Touch";
					strEvent = "Event_AnyInteraction";
				}
				
				if( StatsManager.Instance.DragonState == "TouchMoment_Foreground" )
				{
					Debug.Log ( "Event: " + strEvent );
					if( strEvent != "Event_Hold" && 
						strEvent != "Event_Down" &&
						strEvent != "Event_Up" &&
						strEvent != "Event_Move" )
					{
						strEventType = "Type_Touch";
						strEvent = "Event_AnyInteraction";
					}
				}
				
				break;
			}
			
			if(p_gesture.type != GestureManager.GestureType.Move)
			{
				m_curRubLength = 0.0f;
			}
			
			StatsManager.Instance.currentEventType = strEventType;
			StatsManager.Instance.currentEvent = strEvent;
			
			// trigger gestures for Tutorial
			if( !TutorialDialogueController.Instance.TriggerGesture(strEvent) )
			{
				D.Log("Tutorial is Active:"+TutorialDialogueController.Instance.IsActive+" Cannot Play Action with Event:"+strEvent+" \n");
				return;
			}
			
			// block gestures. for Tutorial
			if( !TutorialController.Instance.IsValidGestureForTutorial( strEventType, strEvent, p_gesture ) )
			{
				D.Log("Dragon::Trigger Gesture:"+strEvent+" is not valid during TutorialState:"+TutorialController.GTutState+" \n");
				return;
			}
			
			// trigger gestures
			this.GestureReaction(strEventType, strEvent, p_gesture);
			m_delegate.CheckInventoryEvents( strEventType, strEvent, StatsManager.Instance.DragonTouchPart );
		}	
Beispiel #5
0
		private void GestureEnablingMethod ( GestureObject p_gesture, List<List<string>> p_events )
		{
			if( p_gesture == null )
				return;
			
			if( p_events != m_gestures )
				return;
			
			// Sanity checking if the state is not interactible
			if( !this.IsInteractible() )
				return;
			
			// Sanity Checking for Water Splash Animations to avoid spam actions on Water Bucket
			if( StatsManager.Instance.currentReaction == "Dragon_Splash_Upward"
				|| StatsManager.Instance.currentReaction == "Dragon_Splash_Front"
				|| StatsManager.Instance.currentReaction == "Dragon_Splash_Front_To_Fetching"
				|| StatsManager.Instance.currentReaction == "Dragon_Splash_Front_To_Feeding"
				|| StatsManager.Instance.currentReaction == "Dragon_Splash_To_Dragon_Salve"
			){
				return;
			}
			
			if( ( p_gesture.type == GestureManager.GestureType.Swipe || ( p_gesture.type == GestureManager.GestureType.Tap && p_gesture.tapCount == 2 ) )
			){
				//PettingMain.Instance.AnimateSuccessAnimation();
				Vector3 pos = m_feedbackCamera.camera.ScreenToWorldPoint( new Vector3(m_endPoint.x,m_endPoint.y,2));
				m_successBurst.transform.position=pos;
				m_successParticle.Play();
				
				m_doubleTapParticle.GetComponent<FollowComponent>().Point(m_endPoint);
				m_doubleTapParticle.Play();
			}
		}
Beispiel #6
0
		/** Reaction ********************************************/
		public bool GestureReaction ( string p_eventType, string p_event, GestureObject p_gesture )
		{
			if( p_eventType == "" || p_event == "" )
				return false;
			
#if UNITY_EDITOR
			ETestActionOverride retVal = (ETestActionOverride)OverrideReaction(m_debugOverrideActionSequence);
			if(retVal != ETestActionOverride.CONTINUE)
				return retVal == ETestActionOverride.TRUE;
#endif
			List<string> evts = new List<string>();
			evts.Add(p_eventType);
			evts.Add(p_event);
			
			// test & special case for FakeSwipe
			if( p_eventType == "Type_Touch"
				&& p_event == "Event_Hold_Fake_Swipe" 
			){
				List<List<string>> tempGestureEvt = new List<List<string>>();
				tempGestureEvt.Add(evts);
				if( this.ProcessReactions(tempGestureEvt) )
				{
					bSatisfiedGesture = true;
					this.GestureEnablingMethod(p_gesture, m_gestures);
				}
				return true;
			}
			
			m_gestures.Add(evts);
			m_triggeredGesture = p_gesture;
			
			return true;
		}
Beispiel #7
0
		public static void BurstForBoomAndFish( GestureObject p_gesture )
		{
			Vector3 pos = m_feedbackCamera.camera.ScreenToWorldPoint( new Vector3( p_gesture.position.x, p_gesture.position.y, 2 ));
			
			m_successBurst.transform.position=pos;
			m_successParticle.Play();
		}
 private void EndCapture()
 {
     _capturingGestures = false;
     _listenerObject.ReceiveGesture(AnalyzeGesture());
     _listenerObject = null;
 }
 private void CancelCapture()
 {
     _listenerObject = null;
     _capturingGestures = false;
 }