using System; using System.Collections; using System.Collections.Generic; using Dreamteck.Splines; using Lean.Pool; using UnityEngine; namespace Ichni.RhythmGame { public partial class TrackHeadPoint : BaseElement { public Track track; public TrackTimeSubmoduleMovable trackTimeSubmoduleMovable; public SplinePositioner trackPositioner; public static TrackHeadPoint GenerateElement(string elementName, Guid id, List tags, Track track) { TrackHeadPoint head = Instantiate(EditorManager.instance.basePrefabs.emptyObject, track.transform) .AddComponent(); head.Initialize(elementName, id, tags); head.track = track; head.trackPositioner = head.gameObject.AddComponent(); head.trackPositioner.spline = track.trackPathSubmodule.path; head.trackTimeSubmoduleMovable = track.trackTimeSubmodule as TrackTimeSubmoduleMovable; head.SetParent(track); return head; } public void Update() { if (track.timeDurationSubmodule.CheckTimeInDuration(EditorManager.instance.songModule.songTime)) { trackPositioner.SetPercent(trackTimeSubmoduleMovable.headPercent); } } } public partial class TrackHeadPoint { public override void SaveBM() { matchedBM = new Beatmap.TrackHeadPoint_BM(elementName, elementGuid, tags, parentElement.matchedBM); } } namespace Beatmap { public class TrackHeadPoint_BM : BaseElement_BM { public TrackHeadPoint_BM() { } public TrackHeadPoint_BM(string elementName, Guid elementGuid, List tags, BaseElement_BM attachedElement) : base(elementName, elementGuid, tags, attachedElement) { } public override void ExecuteBM() { TrackHeadPoint.GenerateElement(elementName, elementGuid, tags, GetElement(attachedElementGuid) as Track); } public override BaseElement DuplicateBM(BaseElement parent) { return TrackHeadPoint.GenerateElement(elementName, elementGuid, tags, parent as Track); } } } }