同步
This commit is contained in:
@@ -60,6 +60,12 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public void ClosePath()
|
||||
{
|
||||
if (pathNodeList.Count == 2)
|
||||
{
|
||||
path.type = Spline.Type.Linear;
|
||||
path.sampleRate = 1;
|
||||
}
|
||||
|
||||
if (isClosed)
|
||||
{
|
||||
path.Close();
|
||||
@@ -95,7 +101,7 @@ namespace Ichni.RhythmGame
|
||||
SetPathNode(pathNode);
|
||||
}
|
||||
ClosePath();
|
||||
path.RebuildImmediate(true, true);
|
||||
path.RebuildImmediate();
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user