45 lines
1.7 KiB
C#
45 lines
1.7 KiB
C#
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<SplineRenderer>();
|
|
this.meshRenderer = splineRenderer.GetComponent<MeshRenderer>();
|
|
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
|
|
|
|
}
|
|
|
|
}
|