mirror of
https://github.com/Dongyifengs/AssetStudio-Genshin-MoYi.git
synced 2025-05-06 11:29:18 +08:00
59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
|
|||
|
namespace AssetStudio
|
|||
|
{
|
|||
|
public class AnimationClipOverride
|
|||
|
{
|
|||
|
public PPtr<AnimationClip> m_OriginalClip;
|
|||
|
public PPtr<AnimationClip> m_OverrideClip;
|
|||
|
|
|||
|
public AnimationClipOverride(ObjectReader reader)
|
|||
|
{
|
|||
|
m_OriginalClip = new PPtr<AnimationClip>(reader);
|
|||
|
m_OverrideClip = new PPtr<AnimationClip>(reader);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public sealed class AnimatorOverrideController : RuntimeAnimatorController
|
|||
|
{
|
|||
|
public PPtr<RuntimeAnimatorController> m_Controller;
|
|||
|
public AnimationClipOverride[] m_Clips;
|
|||
|
|
|||
|
public AnimatorOverrideController(ObjectReader reader) : base(reader)
|
|||
|
{
|
|||
|
m_Controller = new PPtr<RuntimeAnimatorController>(reader);
|
|||
|
|
|||
|
int numOverrides = reader.ReadInt32();
|
|||
|
m_Clips = new AnimationClipOverride[numOverrides];
|
|||
|
for (int i = 0; i < numOverrides; i++)
|
|||
|
{
|
|||
|
m_Clips[i] = new AnimationClipOverride(reader);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override bool IsContainsAnimationClip(AnimationClip clip)
|
|||
|
{
|
|||
|
AnimationClip animationClip;
|
|||
|
foreach (AnimationClipOverride overClip in m_Clips)
|
|||
|
{
|
|||
|
if (overClip.m_OriginalClip.TryGet(out animationClip) && animationClip.Equals(clip))
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
else if (overClip.m_OverrideClip.TryGet(out animationClip) && animationClip.Equals(clip))
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
if (m_Controller.TryGet(out var baseController))
|
|||
|
{
|
|||
|
return baseController.IsContainsAnimationClip(clip);
|
|||
|
}
|
|||
|
return false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|