Inspector内容开始填充完善
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user