51 lines
1.7 KiB
C#
51 lines
1.7 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());
|
|
}
|
|
|
|
protected abstract void UpdateAnimation(float songTime);
|
|
|
|
protected virtual void Update()
|
|
{
|
|
if (timeDurationSubmodule.CheckTimeInDuration(EditorManager.instance.songModule.songTime))
|
|
{
|
|
UpdateAnimation(EditorManager.instance.songModule.songTime);
|
|
}
|
|
}
|
|
}
|
|
} |