52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using UnityEngine.Events;
 | |
| 
 | |
| namespace UnityEngine.XR.Content.Animation
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Will receive triggers from the <see cref="AnimationEventActionBegin"/> and <see cref="AnimationEventActionFinished"/> classes,
 | |
|     /// and forward them to Unity Events.
 | |
|     /// </summary>
 | |
|     public class OnAnimationEvent : MonoBehaviour, IAnimationEventActionBegin, IAnimationEventActionFinished
 | |
|     {
 | |
|         [Serializable]
 | |
|         struct ActionEvent
 | |
|         {
 | |
|             public string m_Label;
 | |
|             public UnityEvent m_Action;
 | |
|         }
 | |
| 
 | |
|         [SerializeField]
 | |
|         ActionEvent[] m_ActionBeginEvents;
 | |
| 
 | |
|         [SerializeField]
 | |
|         ActionEvent[] m_ActionEndEvents;
 | |
| 
 | |
|         /// <inheritdoc />
 | |
|         public void ActionBegin(string label)
 | |
|         {
 | |
|             if (m_ActionBeginEvents == null)
 | |
|                 return;
 | |
| 
 | |
|             foreach (var currentAction in m_ActionBeginEvents)
 | |
|             {
 | |
|                 if (currentAction.m_Label == label)
 | |
|                     currentAction.m_Action.Invoke();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <inheritdoc />
 | |
|         public void ActionFinished(string label)
 | |
|         {
 | |
|             if (m_ActionEndEvents == null)
 | |
|                 return;
 | |
| 
 | |
|             foreach (var currentAction in m_ActionEndEvents)
 | |
|             {
 | |
|                 if (currentAction.m_Label == label)
 | |
|                     currentAction.m_Action.Invoke();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 |