Files
ichni_Creator_Studio/Assets/Scripts/Animations/AnimationBase.cs
SoulliesOfficial 5f64c4faf8 基础内容-6
技术性调整;
Note效果;
2025-01-30 22:45:33 -05:00

56 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.Mathematics;
using UnityEngine;
namespace Ichni.RhythmGame
{
public abstract class AnimationBase : BaseElement
{
public BaseElement targetObject;
public FlexibleReturnType animationReturnType;
//public ICanHaveAnimation target;
public void NewInitialize(string elementName, BaseElement targetObject)
{
base.Initialize(elementName);
this.targetObject = targetObject;
SetParent(this.targetObject);
}
public virtual void SetTimeDuration(params FlexibleFloat[] flexibleFloats)
{
List<float> startTimes = new List<float>();
List<float> endTimes = new List<float>();
foreach (FlexibleFloat flexibleFloat in flexibleFloats)
{
flexibleFloat.Sort();
if (flexibleFloat.animations.Count > 0)
{
startTimes.Add(flexibleFloat.animations[0].startTime);
endTimes.Add(flexibleFloat.animations[^1].endTime);
}
}
timeDurationSubmodule = new TimeDurationSubmodule(this, startTimes.Min(), endTimes.Max());
}
public virtual void SetTimeDuration(float startTime, float endTime)
{
timeDurationSubmodule = new TimeDurationSubmodule(this, startTime, endTime);
}
protected abstract void UpdateAnimation(float songTime);
protected virtual void Update()
{
if (timeDurationSubmodule.CheckTimeInDuration(EditorManager.instance.songModule.songTime))
{
UpdateAnimation(EditorManager.instance.songModule.songTime);
}
}
}
}