Chapter 2初步

This commit is contained in:
SoulliesOfficial
2025-04-19 13:07:43 -04:00
parent f16ecbfbcf
commit bb88c2a77c
75 changed files with 6734 additions and 46 deletions

View File

@@ -113,25 +113,25 @@ namespace Ichni.RhythmGame
var trackRendererAutoOrientButton =
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Auto Orient", () =>
{
trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(this, false, 0);
trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(this, false, 0, true);
inspectorMain.SetInspector(this);
});
var trackRendererPathGeneratorButton =
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Path Generator", () =>
{
trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(this, false, 0);
trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(this, false, 0, true);
inspectorMain.SetInspector(this);
});
var trackRenderTubeGeneratorButton =
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Tube Generator", () =>
{
trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(this, false, 0, 4);
trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(this, false, 0, true, 4);
inspectorMain.SetInspector(this);
});
var trackRendererSurfaceButton =
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Surface", () =>
{
trackRendererSubmodule = new TrackRendererSubmoduleSurface(this, false, 0);
trackRendererSubmodule = new TrackRendererSubmoduleSurface(this, false, 0, true);
inspectorMain.SetInspector(this);
});
@@ -174,10 +174,10 @@ namespace Ichni.RhythmGame
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
}); //旋转
var scaleButton = inspector.GenerateButton(this, animationSubcontainer, "Scale", () =>
{
Swirl.GenerateElement("New Scale", Guid.NewGuid(), new List<string>(), true, this,
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
}); //缩放
{
Swirl.GenerateElement("New Scale", Guid.NewGuid(), new List<string>(), true, this,
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
}); //缩放
if (trackPathSubmodule != null)
{
trackPathButton.button.interactable = false;

View File

@@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrackExtraModifier : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 04670c6ef20b0154d8da910c6b5b6189
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -21,14 +21,16 @@ namespace Ichni.RhythmGame
public string materialName;
public bool enableEmission;
public float emissionIntensity;
public bool zWrite;
public TrackRendererSubmodule(Track track, bool enableEmission, float emissionIntensity) : base(track)
public TrackRendererSubmodule(Track track, bool enableEmission, float emissionIntensity, bool zWrite) : base(track)
{
this.track.trackRendererSubmodule = this;
this.enableEmission = enableEmission;
this.emissionIntensity = emissionIntensity;
this.materialThemeBundleName = String.Empty;
this.materialName = String.Empty;
this.zWrite = zWrite;
}
public void ApplyMaterial(string materialThemeBundleName, string materialName)
@@ -45,6 +47,7 @@ namespace Ichni.RhythmGame
public override void Refresh()
{
SetEnableZWrite();
SetEnableEmission();
SetEmissionIntensity();
@@ -74,6 +77,10 @@ namespace Ichni.RhythmGame
var container = inspector.GenerateContainer("Track Renderer Auto Orient");
var zWriteSettings = container.GenerateSubcontainer(3);
var zWriteToggle =
inspector.GenerateToggle(this, zWriteSettings, "Enable ZWrite", nameof(zWrite))
.AddListenerFunction(SetEnableZWrite);
var emissionSettings = container.GenerateSubcontainer(3);
var enableEmissionToggle =
inspector.GenerateToggle(this, emissionSettings, "Enable Emission", nameof(enableEmission))
@@ -81,7 +88,7 @@ namespace Ichni.RhythmGame
var emissionIntensityInputField =
inspector.GenerateInputField(this, emissionSettings, "Emission Intensity", nameof(emissionIntensity))
.AddListenerFunction(SetEmissionIntensity);
var materialSettings = container.GenerateSubcontainer(3);
var themeBundleDropdown = inspector
.GenerateDropdown(this, materialSettings, "Theme Bundle", ThemeBundleManager.instance.selectedThemeBundleList, nameof(materialThemeBundleName))
@@ -116,6 +123,11 @@ namespace Ichni.RhythmGame
meshRenderer.material.SetInt("_Emission", enableEmission ? 1 : 0);
}
protected void SetEnableZWrite()
{
meshRenderer.material.SetInt("_ZWrite", zWrite ? 1 : 0);
}
protected void SetEmissionIntensity()
{
meshRenderer.material.SetColor("_EmissionColor", Color.white * Mathf.Pow(2, emissionIntensity));
@@ -128,8 +140,8 @@ namespace Ichni.RhythmGame
{
public SplineRenderer splineRenderer;
public TrackRendererSubmoduleAutoOrient(Track track, bool enableEmission, float emissionIntensity, Material material = null) :
base(track, enableEmission, emissionIntensity)
public TrackRendererSubmoduleAutoOrient(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite)
{
this.splineRenderer = track.AddComponent<SplineRenderer>();
this.meshRenderer = splineRenderer.GetComponent<MeshRenderer>();
@@ -157,6 +169,7 @@ namespace Ichni.RhythmGame
public string materialName;
public bool enableEmission;
public float emissionIntensity;
public bool zWrite;
public TrackRendererSubmoduleAutoOrient_BM()
{
@@ -176,7 +189,7 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
Track track = attachedElement as Track;
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity);
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -186,7 +199,7 @@ namespace Ichni.RhythmGame
public override void DuplicateBM(GameElement attached)
{
Track track = attached as Track;
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity);
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track, enableEmission, emissionIntensity, zWrite);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -203,8 +216,8 @@ namespace Ichni.RhythmGame
{
public PathGenerator pathGenerator;
public TrackRendererSubmodulePathGenerator(Track track, bool enableEmission, float emissionIntensity, Material material = null) :
base(track, enableEmission, emissionIntensity)
public TrackRendererSubmodulePathGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite)
{
this.pathGenerator = track.AddComponent<PathGenerator>();
this.meshRenderer = pathGenerator.GetComponent<MeshRenderer>();
@@ -232,6 +245,7 @@ namespace Ichni.RhythmGame
public string materialName;
public bool enableEmission;
public float emissionIntensity;
public bool zWrite;
public TrackRendererSubmodulePathGenerator_BM()
{
@@ -251,7 +265,7 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
Track track = attachedElement as Track;
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity);
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -261,7 +275,7 @@ namespace Ichni.RhythmGame
public override void DuplicateBM(GameElement attached)
{
Track track = attached as Track;
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity);
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track, enableEmission, emissionIntensity, zWrite);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -279,8 +293,9 @@ namespace Ichni.RhythmGame
public TubeGenerator tubeGenerator;
public int sideCount;
public TrackRendererSubmoduleTubeGenerator(Track track, bool enableEmission, float emissionIntensity, int sideCount, Material material = null) :
base(track, enableEmission, emissionIntensity)
public TrackRendererSubmoduleTubeGenerator(Track track, bool enableEmission, float emissionIntensity, bool zWrite,
int sideCount, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite)
{
this.sideCount = sideCount;
@@ -325,6 +340,7 @@ namespace Ichni.RhythmGame
public string materialName;
public bool enableEmission;
public float emissionIntensity;
public bool zWrite;
public int sideCount;
public TrackRendererSubmoduleTubeGenerator_BM()
@@ -346,7 +362,7 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
Track track = attachedElement as Track;
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, sideCount);
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -356,7 +372,7 @@ namespace Ichni.RhythmGame
public override void DuplicateBM(GameElement attached)
{
Track track = attached as Track;
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, sideCount);
track.trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(track, enableEmission, emissionIntensity, zWrite, sideCount);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -373,8 +389,8 @@ namespace Ichni.RhythmGame
{
public SurfaceGenerator surface;
public TrackRendererSubmoduleSurface(Track track, bool enableEmission, float emissionIntensity, Material material = null) :
base(track, enableEmission, emissionIntensity)
public TrackRendererSubmoduleSurface(Track track, bool enableEmission, float emissionIntensity, bool zWrite, Material material = null) :
base(track, enableEmission, emissionIntensity, zWrite)
{
this.surface = track.AddComponent<SurfaceGenerator>();
this.meshRenderer = surface.GetComponent<MeshRenderer>();
@@ -402,6 +418,7 @@ namespace Ichni.RhythmGame
public string materialName;
public bool enableEmission;
public float emissionIntensity;
public bool zWrite;
public TrackRendererSubmoduleSurface_BM()
{
@@ -421,7 +438,7 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
Track track = attachedElement as Track;
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity);
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);
@@ -431,7 +448,7 @@ namespace Ichni.RhythmGame
public override void DuplicateBM(GameElement attached)
{
Track track = attached as Track;
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity);
track.trackRendererSubmodule = new TrackRendererSubmoduleSurface(track, enableEmission, emissionIntensity, zWrite);
if (materialName.Trim() != String.Empty)
{
track.trackRendererSubmodule.ApplyMaterial(materialThemeBundleName, materialName);

View File

@@ -86,6 +86,8 @@ namespace Ichni.Editor
positionText.Key.transform.position = positionText.Value + new Vector3(gridScale / 6, 0, gridScale / 12);
float scaleFactor = gridScale * 1.5f;
positionText.Key.transform.localScale = new Vector3(scaleFactor, scaleFactor, scaleFactor);
Vector3 direction = EditorManager.instance.cameraManager.currentCamera.transform.position - positionText.Key.transform.position;
positionText.Key.transform.forward = -direction.normalized;
}
}
}