Files
7d2dXG/Mods/0A-KFCommonUtilityLib/KFAttached/Animation/StateMachineBehaviours/AnimationInspectFix.cs
Nathaniel Cosford e06f2bd282 Add All Mods
2025-05-29 23:33:28 +09:30

71 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Animations.Rigging;
public class AnimationInspectFix : MonoBehaviour, IPlayableGraphRelated
{
[SerializeField]
private string inspectName = "Inspect";
[SerializeField]
private int layer = 0;
[SerializeField, Range(0, 1)]
private float finishTime = 1;
[SerializeField]
private bool useStateTag = false;
private static int inspectHash = Animator.StringToHash("weaponInspect");
private IAnimatorWrapper wrapper;
private void Awake()
{
}
private void Update()
{
if (wrapper == null || !wrapper.IsValid)
{
var animator = GetComponent<Animator>();
if (!animator)
{
Destroy(this);
return;
}
wrapper = animator.GetItemAnimatorWrapper();
}
if (useStateTag)
{
var stateInfo = wrapper.GetCurrentAnimatorStateInfo(layer);
if (stateInfo.IsTag(inspectName) && stateInfo.normalizedTime < finishTime)
{
wrapper.ResetTrigger(inspectHash);
}
}
else
{
var transInfo = wrapper.GetAnimatorTransitionInfo(layer);
if (transInfo.IsUserName(inspectName) && transInfo.normalizedTime < finishTime)
{
wrapper.ResetTrigger(inspectHash);
}
}
}
public MonoBehaviour Init(Transform playerAnimatorTrans, bool isLocalPlayer)
{
enabled = false;
var copy = isLocalPlayer ? playerAnimatorTrans.AddMissingComponent<AnimationInspectFix>() : null;
if (copy)
{
copy.enabled = true;
}
return copy;
}
public void Disable(Transform playerAnimatorTrans)
{
enabled = false;
}
}