This commit is contained in:
SoulliesOfficial
2026-04-03 10:53:11 -04:00
parent e7b890686d
commit 1bc9af280b
177 changed files with 4029 additions and 3302 deletions

View File

@@ -37,20 +37,6 @@ namespace Ichni.RhythmGame
{
this.track.trackRendererSubmodule = this;
}
// 【盲区修复】: 在启用所需的轨道生成器前,强行将对象池残留里的其他轨道生成器打入休眠状态,以防止管网和曲线同屏出现重叠!
DisableAllGenerators();
}
private void DisableAllGenerators()
{
if (track.trackRenderer == null) return;
if (track.trackRenderer.TryGetComponent(out SplineRenderer sr)) sr.enabled = false;
if (track.trackRenderer.TryGetComponent(out PathGenerator pg)) pg.enabled = false;
if (track.trackRenderer.TryGetComponent(out TubeGenerator tg)) tg.enabled = false;
if (track.trackRenderer.TryGetComponent(out SurfaceGenerator sg)) sg.enabled = false;
if (track.trackRenderer.TryGetComponent(out MeshRenderer mr)) mr.enabled = false;
}
#endregion
@@ -79,8 +65,6 @@ namespace Ichni.RhythmGame
protected void SetMesh()
{
this.meshGenerator.enabled = true;
if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable trackTimeSubmoduleMovable)
{
meshGenerator.clipFrom = trackTimeSubmoduleMovable.tailPercent;
@@ -91,10 +75,6 @@ namespace Ichni.RhythmGame
meshGenerator.clipFrom = 0;
meshGenerator.clipTo = 1;
}
this.meshRenderer.enabled = true;
// 短暂激活生成网格后,为了性能再度关闭自身的实时刷新。
this.meshGenerator.enabled = false;
}
protected void SetEnableEmission() => meshRenderer.material.SetInt("_Emission", enableEmission ? 1 : 0);

View File

@@ -1,6 +1,7 @@
using System;
using Dreamteck.Splines;
using Ichni.RhythmGame.Beatmap;
using UniRx;
using UnityEngine;
namespace Ichni.RhythmGame
@@ -16,16 +17,16 @@ namespace Ichni.RhythmGame
bool zWrite, Vector2 uvScale, Vector2 uvOffset, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset)
{
this.splineRenderer = track.trackRenderer.GetComponent<SplineRenderer>();
this.splineRenderer = track.trackRenderer.AddComponent<SplineRenderer>();
this.meshRenderer = splineRenderer.GetComponent<MeshRenderer>();
this.meshGenerator = splineRenderer;
// 真正安全地仅激活该模块需要用到的引擎
this.splineRenderer.enabled = true;
this.meshGenerator.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;

View File

@@ -1,6 +1,7 @@
using System;
using Dreamteck.Splines;
using Ichni.RhythmGame.Beatmap;
using UniRx;
using UnityEngine;
namespace Ichni.RhythmGame
@@ -16,15 +17,15 @@ namespace Ichni.RhythmGame
bool zWrite, Vector2 uvScale, Vector2 uvOffset, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset)
{
this.pathGenerator = track.trackRenderer.GetComponent<PathGenerator>();
this.pathGenerator = track.trackRenderer.AddComponent<PathGenerator>();
this.meshRenderer = pathGenerator.GetComponent<MeshRenderer>();
this.meshGenerator = pathGenerator;
this.pathGenerator.enabled = true;
this.meshGenerator.enabled = true;
this.renderMaterial = material == null ? GameManager.Instance.basePrefabs.defaultTrackMaterial : material;
this.pathGenerator.spline = track.trackPathSubmodule.path;
this.pathGenerator.doubleSided = true;
this.pathGenerator.clipFrom = 0;
this.pathGenerator.clipTo = 1;
this.pathGenerator.updateMethod = SplineUser.UpdateMethod.Update;

View File

@@ -16,15 +16,15 @@ namespace Ichni.RhythmGame
bool zWrite, Vector2 uvScale, Vector2 uvOffset, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset)
{
this.surface = track.trackRenderer.GetComponent<SurfaceGenerator>();
this.surface = track.trackRenderer.AddComponent<SurfaceGenerator>();
this.meshRenderer = surface.GetComponent<MeshRenderer>();
this.meshGenerator = surface;
this.surface.enabled = true;
this.meshGenerator.enabled = true;
this.renderMaterial = material == null ? GameManager.Instance.basePrefabs.defaultTrackMaterial : material;
this.surface.spline = track.trackPathSubmodule.path;
this.surface.doubleSided = true;
this.surface.clipFrom = 0;
this.surface.clipTo = 1;
this.surface.updateMethod = SplineUser.UpdateMethod.Update;

View File

@@ -19,12 +19,11 @@ namespace Ichni.RhythmGame
{
this.sideCount = sideCount;
this.tubeGenerator = track.trackRenderer.GetComponent<TubeGenerator>();
this.tubeGenerator = track.trackRenderer.AddComponent<TubeGenerator>();
this.meshRenderer = tubeGenerator.GetComponent<MeshRenderer>();
this.meshGenerator = tubeGenerator;
this.tubeGenerator.enabled = true;
this.meshGenerator.enabled = true;
this.renderMaterial = material == null ? GameManager.Instance.basePrefabs.defaultTrackMaterial : material;
this.tubeGenerator.spline = track.trackPathSubmodule.path;