Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Collections.Generic;
- using UnityEngine;
- public class AnimationEventsHandler : MonoBehaviour
- {
- [SerializeField] private List<EventAction> _actions;
- private Dictionary<int, EventAction> _actionsDictionary = new Dictionary<int, EventAction>();
- private void OnValidate()
- {
- foreach (var eventAction in _actions)
- eventAction?.OnValidate();
- }
- private void Start()
- {
- InitActionsDictionary();
- }
- private void InitActionsDictionary()
- {
- _actionsDictionary = _actions.ToDictionary(action => (int) action);
- }
- public void CallEvent(AnimationEvent animationEvent)
- {
- if (_actionsDictionary.Count == 0) InitActionsDictionary();
- if (!_actionsDictionary.TryGetValue(animationEvent, out var action))
- action = _actions.Find(eventAction => (int) eventAction == (int) animationEvent);
- action?.Invoke();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement