Ejemplo n.º 1
0
 // Find all GestureActivator components contained within this activators children
 public void DiscoverActivators()
 {
     // Clear the current list
     if (FindActivatorsInChildren)
     {
         Activators.Clear();
         for (int childIndex = 0; childIndex < transform.childCount; ++childIndex)
         {
             GestureActivator childActivator = transform.GetChild(childIndex).GetComponent <GestureActivator>();
             if (childActivator != null) // If an activator was found, add it to the list
             {
                 Activators.Add(childActivator);
             }
         }
     }
 }
Ejemplo n.º 2
0
    // Define the condition to activate the gesture.
    // This is True if all child activators are True
    public override bool IsGestureActive()
    {
        if (Activators.Count == 0)
        {
            return(false);
        }

        if (m_isActive)
        { // Stay active until the final gesture is deactivated
            m_isActive = Activators[Activators.Count - 1].IsGestureActive();
            if (!m_isActive)
            {
                ResetSequence();
            }
        }
        else
        { // Perform logic to activate this gesture
            if (Activators[m_nextInSequence].IsGestureActive())
            {
                Debug.Log(string.Format("Activated Sequence index {0}", m_nextInSequence));
                m_previousGesture = Activators[m_nextInSequence];
                ++m_nextInSequence;
                m_isActive = m_nextInSequence == Activators.Count;

                if (m_isActive)
                {
                    Debug.Log("Sequence gesture activated");
                }
            }
            else
            {
                if (m_previousGesture != null && m_previousGesture.IsGestureActive())
                {
                    m_lastActivatedTime = Time.time; // If the previous gesture is still active don't reset the sequence
                }
                if (Time.time - m_lastActivatedTime > MaxDelay)
                {
                    ResetSequence();
                }
            }
        }

        return(m_isActive);
    }
Ejemplo n.º 3
0
 void ResetSequence()
 {
     m_previousGesture = null;
     m_nextInSequence  = 0;
 }