using System.Collections; using System.Collections.Generic; using System.Linq; using Unity.Mathematics; using UnityEngine; namespace Ichni.RhythmGame { public class TimeDurationSubmodule: SubmoduleBase { public bool isOverridingDuration; //是否手动设置了时间区间,开启时,子物体的时间区间将被忽略 public float startTime, endTime; //起止时间 public TimeDurationSubmodule() { isOverridingDuration = false; startTime = 0; endTime = 0; } public TimeDurationSubmodule(float startTime, float endTime) { this.isOverridingDuration = false; this.startTime = startTime; this.endTime = endTime; } public bool CheckTimeInDuration(float time, float offset = 0.2f) { return time >= startTime - offset && time <= endTime + offset; } public void SetDurationFromChildren(List children) { List durations = new List(); if (children.Count == 0) { return; } foreach (var child in children) { durations.Add(new float2(child.startTime, child.endTime)); } startTime = durations.Min(duration => duration.x); endTime = durations.Max(duration => duration.y); } } }