using System; using Dreamteck.Splines; using Ichni.RhythmGame.Beatmap; using UniRx; using UnityEngine; namespace Ichni.RhythmGame { public class TrackRendererSubmoduleAutoOrient : TrackRendererSubmodule { #region [引擎组件] Components public SplineRenderer splineRenderer; #endregion #region [初始化] Initialization public TrackRendererSubmoduleAutoOrient(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Vector2 uvScale, Vector2 uvOffset, Material material = null) : base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset) { this.splineRenderer = track.trackRenderer.AddComponent(); this.meshRenderer = splineRenderer.GetComponent(); this.meshGenerator = splineRenderer; // 真正安全地仅激活该模块需要用到的引擎 this.splineRenderer.enabled = true; this.renderMaterial = material == null ? GameManager.Instance.basePrefabs.defaultTrackMaterial : material; this.splineRenderer.spline = track.trackPathSubmodule.path; this.splineRenderer.doubleSided = true; this.splineRenderer.clipFrom = 0; this.splineRenderer.clipTo = 1; this.splineRenderer.updateMethod = SplineUser.UpdateMethod.Update; this.meshRenderer.material = renderMaterial; this.splineRenderer.color = Color.white; this.splineRenderer.uvRotation = 90; this.splineRenderer.uvMode = MeshGenerator.UVMode.UniformClip; SetMesh(); } #endregion } }