Tanoda
ByNameAnimatorOverrideAnimationClipMapper.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using TriLibCore.General;
3using TriLibCore.Utils;
4using UnityEngine;
5
6namespace TriLibCore.Mappers
7{
9 [CreateAssetMenu(menuName = "TriLib/Mappers/Animation Clip/By Name Animator Override Animation Clip Mapper", fileName = "ByNameAnimatorOverrideAnimationClipMapper")]
11 {
15 [Header("Left = Animator Override Clip Names, Right = Loaded Clip Names")]
17
21 public bool CaseInsensitive = true;
22
24 public override AnimationClip[] MapArray(AssetLoaderContext assetLoaderContext, AnimationClip[] sourceAnimationClips)
25 {
27 {
28 for (var i = 0; i < sourceAnimationClips.Length; i++)
29 {
30 var animationClip = sourceAnimationClips[i];
31 var overrides = new List<KeyValuePair<AnimationClip, AnimationClip>>(AnimatorOverrideController.overridesCount);
32 AnimatorOverrideController.GetOverrides(overrides);
33 for (var j = 0; j < overrides.Count; j++)
34 {
35 var kvp = overrides[j];
36 var keyName = kvp.Key.name;
37 var clipName = animationClip.name;
38 if (StringComparer.Matches(StringComparisonMode, CaseInsensitive, keyName, clipName))
39 {
40 overrides[j] = new KeyValuePair<AnimationClip, AnimationClip>(kvp.Key, animationClip);
41 }
42 }
43
44 AnimatorOverrideController.ApplyOverrides(overrides);
45 }
46 }
47 return base.MapArray(assetLoaderContext, sourceAnimationClips);
48 }
49 }
50}
Represents a Mapper used to fill Animator Override Animation Clips.
AnimatorOverrideController AnimatorOverrideController
Animator controller override to use on the animator.
Represents a Mapper that finds Animator Override Animation Clips by name-matching.
override AnimationClip[] MapArray(AssetLoaderContext assetLoaderContext, AnimationClip[] sourceAnimationClips)
StringComparisonMode StringComparisonMode
String comparison mode to use on the mapping.