Files
ichni_Creator_Studio/Assets/Scripts/Animations/AnimationBase.cs
SoulliesOfficial 39b4a5e7ff 基础内容-5
主题包;
测试NoteVisual与NoteEffect;
LookAt旋转动画与FlexibleBool
动画杂项
控制台初步
2025-01-29 23:49:18 -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.NewInitialize(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(startTimes.Min(), endTimes.Max());
}
public virtual void SetTimeDuration(float startTime, float endTime)
{
timeDurationSubmodule = new TimeDurationSubmodule(startTime, endTime);
}
protected abstract void UpdateAnimation(float songTime);
protected virtual void Update()
{
if (timeDurationSubmodule.CheckTimeInDuration(EditorManager.instance.songModule.songTime))
{
UpdateAnimation(EditorManager.instance.songModule.songTime);
}
}
}
}