using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace Ichni.RhythmGame
{
public abstract partial class AnimationBase : GameElement, IHaveTimeDurationSubmodule
{
public GameElement animatedObject;
public FlexibleReturnType animationReturnType;
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
public override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
}
public override void AfterInitialize()
{
base.AfterInitialize();
float delay = GameManager.instance.songInformation.delay;
if (timeDurationSubmodule.CheckTimeInDuration(delay))
{
UpdateAnimation(GameManager.instance.songTime);
}
}
///
/// 更新动画
///
/// 歌曲时间
protected abstract void UpdateAnimation(float songTime);
protected virtual void Update()
{
if (!GameManager.instance.audioManager.isUpdating)
{
return;
}
if (timeDurationSubmodule.CheckTimeInDuration(GameManager.instance.songTime))
{
UpdateAnimation(GameManager.instance.songTime);
}
}
///
/// 施加时间偏移,即移动所有Flexible参数的时间
///
///
public virtual void ApplyTimeOffset(float offset)
{
timeDurationSubmodule.startTime += offset;
timeDurationSubmodule.endTime += offset;
}
}
namespace Beatmap
{
public abstract class AnimationBase_BM : GameElement_BM
{
public AnimationBase_BM()
{
}
public AnimationBase_BM(string elementName, Guid elementGuid, List tags,
GameElement_BM attachedElement) : base(elementName, elementGuid, tags, attachedElement)
{
}
}
}
}