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) { } } } }