perf
This commit is contained in:
@@ -20,14 +20,19 @@ namespace Ichni.RhythmGame
|
||||
public bool enableEmission;
|
||||
public float emissionIntensity;
|
||||
public bool zWrite;
|
||||
public Vector2 uvScale;
|
||||
public Vector2 uvOffset;
|
||||
|
||||
public TrackRendererSubmodule(Track track, bool enableEmission, float emissionIntensity, bool zWrite) : base(track)
|
||||
public TrackRendererSubmodule(Track track, bool enableEmission, float emissionIntensity, bool zWrite,
|
||||
Vector2 uvScale, Vector2 uvOffset) : base(track)
|
||||
{
|
||||
this.enableEmission = enableEmission;
|
||||
this.emissionIntensity = emissionIntensity;
|
||||
this.materialThemeBundleName = String.Empty;
|
||||
this.materialName = String.Empty;
|
||||
this.zWrite = zWrite;
|
||||
this.uvScale = uvScale;
|
||||
this.uvOffset = uvOffset;
|
||||
|
||||
if (!HaveSameSubmodule)
|
||||
{
|
||||
@@ -45,6 +50,8 @@ namespace Ichni.RhythmGame
|
||||
renderMaterial = mat;
|
||||
meshRenderer.material = renderMaterial;
|
||||
}
|
||||
|
||||
meshRenderer.InitializeShader();
|
||||
}
|
||||
|
||||
public override void Refresh()
|
||||
@@ -52,6 +59,7 @@ namespace Ichni.RhythmGame
|
||||
SetEnableZWrite();
|
||||
SetEnableEmission();
|
||||
SetEmissionIntensity();
|
||||
SetUV();
|
||||
|
||||
if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable)
|
||||
{
|
||||
@@ -86,6 +94,12 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
meshRenderer.material.SetColor("_EmissionColor", Color.white * Mathf.Pow(2, emissionIntensity));
|
||||
}
|
||||
|
||||
protected void SetUV()
|
||||
{
|
||||
meshGenerator.uvScale = uvScale;
|
||||
meshGenerator.uvOffset = uvOffset;
|
||||
}
|
||||
}
|
||||
|
||||
#region AutoOrient
|
||||
@@ -94,8 +108,9 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public SplineRenderer splineRenderer;
|
||||
|
||||
public TrackRendererSubmoduleAutoOrient(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite)
|
||||
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.AddComponent<SplineRenderer>();
|
||||
this.meshRenderer = splineRenderer.GetComponent<MeshRenderer>();
|
||||
@@ -108,6 +123,7 @@ namespace Ichni.RhythmGame
|
||||
this.meshRenderer.material = renderMaterial;
|
||||
this.splineRenderer.color = Color.white;
|
||||
this.splineRenderer.uvRotation = 90;
|
||||
this.splineRenderer.uvMode = MeshGenerator.UVMode.UniformClip;
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
@@ -125,7 +141,8 @@ namespace Ichni.RhythmGame
|
||||
public bool enableEmission;
|
||||
public float emissionIntensity;
|
||||
public bool zWrite;
|
||||
|
||||
public Vector2 uvScale = Vector2.one;
|
||||
public Vector2 uvOffset = Vector2.zero;
|
||||
public TrackRendererSubmoduleAutoOrient_BM()
|
||||
{
|
||||
|
||||
@@ -144,7 +161,7 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
||||
Track track = attachedElement as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -154,7 +171,7 @@ namespace Ichni.RhythmGame
|
||||
public override void DuplicateBM(GameElement attached)
|
||||
{
|
||||
Track track = attached as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -171,8 +188,9 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public PathGenerator pathGenerator;
|
||||
|
||||
public TrackRendererSubmodulePathGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite)
|
||||
public TrackRendererSubmodulePathGenerator(Track track, bool enableEmission, float emissionIntensity,
|
||||
bool zWrite, Vector2 uvScale, Vector2 uvOffset, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset)
|
||||
{
|
||||
this.pathGenerator = track.AddComponent<PathGenerator>();
|
||||
this.meshRenderer = pathGenerator.GetComponent<MeshRenderer>();
|
||||
@@ -185,6 +203,7 @@ namespace Ichni.RhythmGame
|
||||
this.meshRenderer.material = renderMaterial;
|
||||
this.pathGenerator.color = Color.white;
|
||||
this.pathGenerator.uvRotation = 90;
|
||||
this.pathGenerator.uvMode = MeshGenerator.UVMode.UniformClip;
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
@@ -202,7 +221,8 @@ namespace Ichni.RhythmGame
|
||||
public bool enableEmission;
|
||||
public float emissionIntensity;
|
||||
public bool zWrite;
|
||||
|
||||
public Vector2 uvScale = Vector2.one;
|
||||
public Vector2 uvOffset = Vector2.zero;
|
||||
public TrackRendererSubmodulePathGenerator_BM()
|
||||
{
|
||||
|
||||
@@ -221,7 +241,7 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
||||
Track track = attachedElement as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -231,7 +251,7 @@ namespace Ichni.RhythmGame
|
||||
public override void DuplicateBM(GameElement attached)
|
||||
{
|
||||
Track track = attached as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -249,9 +269,9 @@ namespace Ichni.RhythmGame
|
||||
public TubeGenerator tubeGenerator;
|
||||
public int sideCount;
|
||||
|
||||
public TrackRendererSubmoduleTubeGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite,
|
||||
int sideCount, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite)
|
||||
public TrackRendererSubmoduleTubeGenerator(Track track, bool enableEmission, float emissionIntensity,
|
||||
bool zWrite, int sideCount, Vector2 uvScale, Vector2 uvOffset, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset)
|
||||
{
|
||||
this.sideCount = sideCount;
|
||||
|
||||
@@ -267,6 +287,7 @@ namespace Ichni.RhythmGame
|
||||
this.tubeGenerator.color = Color.white;
|
||||
this.tubeGenerator.uvRotation = 90;
|
||||
this.tubeGenerator.sides = sideCount;
|
||||
this.tubeGenerator.uvMode = MeshGenerator.UVMode.UniformClip;
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
@@ -285,7 +306,8 @@ namespace Ichni.RhythmGame
|
||||
public float emissionIntensity;
|
||||
public bool zWrite;
|
||||
public int sideCount;
|
||||
|
||||
public Vector2 uvScale = Vector2.one;
|
||||
public Vector2 uvOffset = Vector2.zero;
|
||||
public TrackRendererSubmoduleTubeGenerator_BM()
|
||||
{
|
||||
|
||||
@@ -305,7 +327,7 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
||||
Track track = attachedElement as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -315,7 +337,7 @@ namespace Ichni.RhythmGame
|
||||
public override void DuplicateBM(GameElement attached)
|
||||
{
|
||||
Track track = attached as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -332,8 +354,9 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public SurfaceGenerator surface;
|
||||
|
||||
public TrackRendererSubmoduleSurface(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite)
|
||||
public TrackRendererSubmoduleSurface(Track track, bool enableEmission, float emissionIntensity,
|
||||
bool zWrite, Vector2 uvScale, Vector2 uvOffset, Material material = null) :
|
||||
base(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset)
|
||||
{
|
||||
this.surface = track.AddComponent<SurfaceGenerator>();
|
||||
this.meshRenderer = surface.GetComponent<MeshRenderer>();
|
||||
@@ -346,6 +369,7 @@ namespace Ichni.RhythmGame
|
||||
this.meshRenderer.material = renderMaterial;
|
||||
this.surface.color = Color.white;
|
||||
this.surface.uvRotation = 90;
|
||||
this.surface.uvMode = MeshGenerator.UVMode.UniformClip;
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
@@ -363,7 +387,9 @@ namespace Ichni.RhythmGame
|
||||
public bool enableEmission;
|
||||
public float emissionIntensity;
|
||||
public bool zWrite;
|
||||
|
||||
public Vector2 uvScale = Vector2.one;
|
||||
public Vector2 uvOffset = Vector2.zero;
|
||||
|
||||
public TrackRendererSubmoduleSurface_BM()
|
||||
{
|
||||
|
||||
@@ -382,7 +408,7 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
||||
Track track = attachedElement as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
@@ -392,7 +418,7 @@ namespace Ichni.RhythmGame
|
||||
public override void DuplicateBM(GameElement attached)
|
||||
{
|
||||
Track track = attached as Track;
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite);
|
||||
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite, uvScale, uvOffset);
|
||||
if (materialName.Trim() != String.Empty)
|
||||
{
|
||||
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
|
||||
|
||||
Reference in New Issue
Block a user