using System.Collections; using System.Collections.Generic; using Dreamteck.Splines; using Unity.VisualScripting; using UnityEngine; namespace Ichni.RhythmGame { public class TrackRendererSubmodule : TrackSubmodule { public MeshGenerator meshGenerator; public MeshRenderer meshRenderer; public Material renderMaterial; public TrackRendererSubmodule(Track track) : base(track) { this.track = track; this.track.trackRendererSubmodule = this; } public override void SaveBM() { throw new System.NotImplementedException(); } } public class TrackRendererSubmoduleAutoOrient : TrackRendererSubmodule { public SplineRenderer splineRenderer; public TrackRendererSubmoduleAutoOrient(Track track, Material material = null) : base(track) { this.splineRenderer = track.AddComponent(); this.meshRenderer = splineRenderer.GetComponent(); this.meshGenerator = splineRenderer; this.renderMaterial = material == null ? EditorManager.instance.basePrefabs.defaultTrackMaterial : material; this.splineRenderer.spline = track.trackPathSubmodule.path; this.splineRenderer.clipFrom = 0; this.splineRenderer.clipTo = 1; this.meshRenderer.material = renderMaterial; this.splineRenderer.color = Color.white; } public override void InitialRefresh() { if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable) { splineRenderer.clipFrom = 0; splineRenderer.clipTo = 0; } } public override void SaveBM() { matchedBM = new Beatmap.TrackRendererSubmoduleAutoOrient_BM(attachedElement, this); } } namespace Beatmap { public class TrackRendererSubmoduleAutoOrient_BM : Submodule_BM { public string renderMaterialName; public TrackRendererSubmoduleAutoOrient_BM() { } public TrackRendererSubmoduleAutoOrient_BM(BaseElement attachedElement, TrackRendererSubmodule trackRendererSubmodule) : base(attachedElement) { renderMaterialName = trackRendererSubmodule.renderMaterial.name; } public override void ExecuteBM() { attachedElement = GetElement(attachedElementGuid); (attachedElement as Track).trackRendererSubmodule = new TrackRendererSubmodule(attachedElement as Track); } public override void DuplicateBM(BaseElement attached) { (attached as Track).trackRendererSubmodule = new TrackRendererSubmodule(attached as Track); } } } }