Inspector内容开始填充完善

This commit is contained in:
SoulliesOfficial
2025-02-17 14:46:14 -05:00
parent d77e1a0f70
commit 8d4772532f
84 changed files with 4340 additions and 208 deletions

View File

@@ -51,13 +51,7 @@ namespace Ichni.RhythmGame
public override void AfterInitialize()
{
base.AfterInitialize();
Refresh();
if (track.trackPathSubmodule.pathNodeList.Count > 3)
{
track.trackPathSubmodule.ClosePath(track.trackPathSubmodule.isClosed);
}
}
}

View File

@@ -43,13 +43,104 @@ namespace Ichni.RhythmGame
(trackTimeSubmodule as TrackTimeSubmoduleMovable)?.UpdateTrackPart();
}
}
public override void AfterInitialize()
{
if (trackPathSubmodule != null && trackPathSubmodule.pathNodeList.Count > 3)
{
trackPathSubmodule.ClosePath();
}
}
public override void Refresh()
{
trackPathSubmodule?.Refresh();
trackTimeSubmodule?.Refresh();
trackRendererSubmodule?.Refresh();
}
}
public partial class Track
{
public override void SaveBM()
{
matchedBM = new Beatmap.Track_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM);
matchedBM = new Track_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM);
}
public override void SetUpInspector()
{
base.SetUpInspector();
var container = inspector.GenerateContainer("Track");
var trackPathButton = inspector.GenerateButton(this, container, "Track Path",
() =>
{
trackPathSubmodule = new TrackPathSubmodule(this, TrackSpaceType.CatmullRom,
TrackSamplingType.TimeDistributed, false);
inspector.SetInspector(this);
});
var trackTimeMovableButton = inspector.GenerateButton(this, container, "Track Time Movable",
() =>
{
trackTimeSubmodule = new TrackTimeSubmoduleMovable(this, 0, 1, 1, AnimationCurveType.Linear);
inspector.SetInspector(this);
});
var trackTimeStaticButton = inspector.GenerateButton(this, container, "Track Time Static",
() =>
{
trackTimeSubmodule = new TrackTimeSubmoduleStatic(this, 1, AnimationCurveType.Linear);
inspector.SetInspector(this);
});
var trackRendererAutoOrientButton = inspector.GenerateButton(this, container, "Track Renderer Auto Orient",
() =>
{
trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(this);
inspector.SetInspector(this);
});
var trackRendererPathGeneratorButton = inspector.GenerateButton(this, container,
"Track Renderer Path Generator",
() =>
{
trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(this);
inspector.SetInspector(this);
});
if (trackPathSubmodule != null)
{
trackPathButton.button.interactable = false;
trackPathSubmodule.SetUpInspector();
}
if (trackTimeSubmodule != null)
{
trackTimeMovableButton.button.interactable = false;
trackTimeStaticButton.button.interactable = false;
trackTimeSubmodule.SetUpInspector();
}
if (trackRendererSubmodule != null)
{
trackRendererAutoOrientButton.button.interactable = false;
trackRendererPathGeneratorButton.button.interactable = false;
trackRendererSubmodule.SetUpInspector();
}
var displacementButton = inspector.GenerateButton(this, container, "Displacement",
() =>
{
Displacement.GenerateElement("New Displacement", Guid.NewGuid(), new List<string>(), true, this,
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
});
var swirlButton = inspector.GenerateButton(this, container, "Swirl",
() =>
{
Swirl.GenerateElement("New Swirl", Guid.NewGuid(), new List<string>(), true, this,
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
});
}
}

View File

@@ -1,3 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Dreamteck.Splines;
@@ -39,9 +40,9 @@ namespace Ichni.RhythmGame
path.space = SplineComputer.Space.Local;
}
public void ClosePath(bool close)
public void ClosePath()
{
if (close)
if (isClosed)
{
path.Close();
}
@@ -49,8 +50,6 @@ namespace Ichni.RhythmGame
{
path.Break();
}
isClosed = close;
}
public void SetTrackSpaceType(int spaceType)
@@ -79,6 +78,13 @@ namespace Ichni.RhythmGame
inspector.GenerateDropdown(this, container, "Space Type", typeof(Track.TrackSpaceType), nameof(trackSpaceType));
var trackSamplingDropdown =
inspector.GenerateDropdown(this, container, "Sampling Type", typeof(Track.TrackSamplingType), nameof(trackSamplingType));
var isClosedToggle =
inspector.GenerateToggle(this, container, "Is Closed", nameof(isClosed));
isClosedToggle.AddListenerFunction(_ => ClosePath());
var generatePathNodeButton = inspector.GenerateButton(this, container, "Generate Path Node", () =>
{
PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, track);
});
}
}

View File

@@ -23,6 +23,8 @@ namespace Ichni.RhythmGame
}
}
#region AutoOrient
public class TrackRendererSubmoduleAutoOrient : TrackRendererSubmodule
{
public SplineRenderer splineRenderer;
@@ -40,13 +42,18 @@ namespace Ichni.RhythmGame
this.splineRenderer.color = Color.white;
}
public override void InitialRefresh()
public override void Refresh()
{
if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable)
{
splineRenderer.clipFrom = 0;
splineRenderer.clipTo = 0;
}
else
{
splineRenderer.clipFrom = 0;
splineRenderer.clipTo = 1;
}
}
public override void SaveBM()
@@ -56,7 +63,7 @@ namespace Ichni.RhythmGame
public override void SetUpInspector()
{
var container = inspector.GenerateContainer("Track Renderer Auto Orient");
}
}
@@ -72,7 +79,7 @@ namespace Ichni.RhythmGame
}
public TrackRendererSubmoduleAutoOrient_BM(GameElement attachedElement,
TrackRendererSubmodule trackRendererSubmodule) : base(attachedElement)
TrackRendererSubmoduleAutoOrient trackRendererSubmodule) : base(attachedElement)
{
renderMaterialName = trackRendererSubmodule.renderMaterial.name;
}
@@ -81,16 +88,98 @@ namespace Ichni.RhythmGame
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
Track track = attachedElement as Track;
track.trackRendererSubmodule = new TrackRendererSubmodule(track);//TODO: Implement Material
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track); //TODO: Implement Material
track.submoduleList.Add(track.trackRendererSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
Track track = attached as Track;
track.trackRendererSubmodule = new TrackRendererSubmodule(track);//TODO: Implement Material
track.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(track); //TODO: Implement Material
track.submoduleList.Add(track.trackRendererSubmodule);
}
}
}
#endregion
#region PathGenerator
public class TrackRendererSubmodulePathGenerator : TrackRendererSubmodule
{
public PathGenerator pathGenerator;
public TrackRendererSubmodulePathGenerator(Track track, Material material = null) : base(track)
{
this.pathGenerator = track.AddComponent<PathGenerator>();
this.meshRenderer = pathGenerator.GetComponent<MeshRenderer>();
this.meshGenerator = pathGenerator;
this.renderMaterial = material == null ? EditorManager.instance.basePrefabs.defaultTrackMaterial : material;
this.pathGenerator.spline = track.trackPathSubmodule.path;
this.pathGenerator.clipFrom = 0;
this.pathGenerator.clipTo = 1;
this.meshRenderer.material = renderMaterial;
this.pathGenerator.color = Color.white;
}
public override void Refresh()
{
if (track.trackTimeSubmodule is TrackTimeSubmoduleMovable)
{
pathGenerator.clipFrom = 0;
pathGenerator.clipTo = 0;
}
else
{
pathGenerator.clipFrom = 0;
pathGenerator.clipTo = 1;
}
}
public override void SaveBM()
{
matchedBM = new Beatmap.TrackRendererSubmodulePathGenerator_BM(attachedGameElement, this);
}
public override void SetUpInspector()
{
var container = inspector.GenerateContainer("Track Renderer Path Generator");
}
}
namespace Beatmap
{
public class TrackRendererSubmodulePathGenerator_BM : Submodule_BM
{
public string renderMaterialName;
public TrackRendererSubmodulePathGenerator_BM()
{
}
public TrackRendererSubmodulePathGenerator_BM(GameElement attachedElement,
TrackRendererSubmodulePathGenerator trackRendererSubmodule) : base(attachedElement)
{
renderMaterialName = trackRendererSubmodule.renderMaterial.name;
}
public override void ExecuteBM()
{
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
Track track = attachedElement as Track;
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track);//TODO: Implement Material
track.submoduleList.Add(track.trackRendererSubmodule);
}
public override void DuplicateBM(GameElement attached)
{
Track track = attached as Track;
track.trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(track);//TODO: Implement Material
track.submoduleList.Add(track.trackRendererSubmodule);
}
}
}
#endregion
}

View File

@@ -62,11 +62,31 @@ namespace Ichni.RhythmGame
(songTimeInTime - trackStartTime) / trackTotalTime);
return Mathf.Clamp01(per);
}
public override void SaveBM()
{
matchedBM = new Beatmap.TrackTimeSubmoduleMovable_BM(attachedGameElement, this);
}
public override void SetUpInspector()
{
var container = inspector.GenerateContainer("Track Time Movable");
var startTimeInputField =
inspector.GenerateInputField(this, container, "Start Time", nameof(trackStartTime));
var endTimeInputField = inspector.GenerateInputField(this, container, "End Time", nameof(trackEndTime));
var visibleTimeInputField =
inspector.GenerateInputField(this, container, "Visible Time Length", nameof(visibleTrackTimeLength));
var animationCurveDropdown = inspector.GenerateDropdown(this, container, "Animation Curve",
typeof(AnimationCurveType), nameof(animationCurveType));
var deleteButton = inspector.GenerateButton(this, container, "Delete",
() =>
{
Delete();
track.trackTimeSubmodule = null;
inspector.SetInspector(track);
track.Refresh();
});
}
}
namespace Beatmap
@@ -130,6 +150,23 @@ namespace Ichni.RhythmGame
{
matchedBM = new Beatmap.TrackTimeSubmoduleStatic_BM(attachedGameElement, this);
}
public override void SetUpInspector()
{
var container = inspector.GenerateContainer("Track Time Static");
var totalTimeInputField =
inspector.GenerateInputField(this, container, "Total Time", nameof(trackTotalTime));
var animationCurveDropdown = inspector.GenerateDropdown(this, container, "Animation Curve",
typeof(AnimationCurveType), nameof(animationCurveType));
var deleteButton = inspector.GenerateButton(this, container, "Delete",
() =>
{
Delete();
track.trackTimeSubmodule = null;
inspector.SetInspector(track);
track.Refresh();
});
}
}
namespace Beatmap