90 lines
3.0 KiB
C#
90 lines
3.0 KiB
C#
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<SplineRenderer>();
|
|
this.meshRenderer = splineRenderer.GetComponent<MeshRenderer>();
|
|
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(attachedGameElement, this);
|
|
}
|
|
}
|
|
|
|
namespace Beatmap
|
|
{
|
|
public class TrackRendererSubmoduleAutoOrient_BM : Submodule_BM
|
|
{
|
|
public string renderMaterialName;
|
|
|
|
public TrackRendererSubmoduleAutoOrient_BM()
|
|
{
|
|
|
|
}
|
|
|
|
public TrackRendererSubmoduleAutoOrient_BM(GameElement attachedElement,
|
|
TrackRendererSubmodule trackRendererSubmodule) : base(attachedElement)
|
|
{
|
|
renderMaterialName = trackRendererSubmodule.renderMaterial.name;
|
|
}
|
|
|
|
public override void ExecuteBM()
|
|
{
|
|
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
|
Track track = attachedElement as Track;
|
|
track.trackRendererSubmodule = new TrackRendererSubmodule(track);//TODO: Implement Material
|
|
}
|
|
|
|
public override void DuplicateBM(GameElement attached)
|
|
{
|
|
Track track = attached as Track;
|
|
track.trackRendererSubmodule = new TrackRendererSubmodule(track);//TODO: Implement Material
|
|
}
|
|
}
|
|
}
|
|
} |