using System.Collections; using System.Collections.Generic; using Dreamteck.Splines; using Lean.Pool; using UniRx; using UnityEngine; namespace Ichni.RhythmGame { /// /// 在轨道上根据百分比进行运动的点 /// public class TrackPercentPoint : BaseElement { public Track track; public SplinePositioner trackPositioner; public FlexibleFloat trackPercent; public static TrackPercentPoint GenerateElement(string elementName, Track track, FlexibleFloat trackPercent) { TrackPercentPoint point = LeanPool.Spawn(EditorManager.instance.basePrefabs.emptyObject, track.transform).AddComponent(); point.NewInitialize(elementName, track, trackPercent); point.SetParent(track); return point; } private void NewInitialize(string elementName, Track track, FlexibleFloat trackPercent) { base.NewInitialize(elementName); this.track = track; this.trackPositioner = gameObject.AddComponent(); this.trackPositioner.spline = track.trackPathSubmodule.path; this.trackPercent = trackPercent; } public void Update() { if (trackPercent.animations.Count > 0) { trackPercent.UpdateFlexibleFloat(EditorManager.instance.songModule.songTime); if (trackPercent.returnType == FlexibleReturnType.MiddleExecuting) { trackPositioner.SetPercent(trackPercent.value); } } } } }