Cross Track Point和Trail的进一步制作,修复Duplicate的Guid Bug
Ctrl+M切摄像机
This commit is contained in:
@@ -129,7 +129,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return PathNode.GenerateElement(elementName, elementGuid, tags, false, parent as Track, isShowingSphere);
|
||||
return PathNode.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent as Track, isShowingSphere);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ namespace Ichni.RhythmGame
|
||||
Track track = Instantiate(EditorManager.instance.basePrefabs.track, parentElement.transform).GetComponent<Track>();
|
||||
|
||||
track.Initialize(elementName, id, tags, isFirstGenerated, parentElement);
|
||||
|
||||
if(parentElement is ElementFolder folder) folder.trackList.Add(track);
|
||||
|
||||
return track;
|
||||
}
|
||||
@@ -60,6 +62,11 @@ namespace Ichni.RhythmGame
|
||||
trackTimeSubmodule?.Refresh();
|
||||
trackRendererSubmodule?.Refresh();
|
||||
}
|
||||
|
||||
public override void OnDelete()
|
||||
{
|
||||
if (parentElement is ElementFolder folder) folder.trackList.Remove(this);
|
||||
}
|
||||
}
|
||||
|
||||
public partial class Track
|
||||
@@ -114,21 +121,18 @@ namespace Ichni.RhythmGame
|
||||
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 generateContainer = inspector.GenerateContainer("Generate Elements"); //物体生成
|
||||
@@ -317,7 +321,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return Track.GenerateElement(elementName, elementGuid, tags, false, parent);
|
||||
return Track.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,14 +54,15 @@ namespace Ichni.RhythmGame
|
||||
|
||||
private void SetPoint()
|
||||
{
|
||||
if (nowAttachedTrackIndex != trackSwitch.value && trackSwitch.value >= 0 &&
|
||||
if (nowAttachedTrackIndex != trackSwitch.value &&
|
||||
trackSwitch.value >= 0 &&
|
||||
trackSwitch.value < trackListFolder.trackList.Count)
|
||||
{
|
||||
nowAttachedTrack = trackListFolder.trackList[trackSwitch.value];
|
||||
nowAttachedTrackIndex = trackSwitch.value;
|
||||
trackPositioner.spline = trackListFolder.trackList[trackSwitch.value].trackPathSubmodule.path;
|
||||
}
|
||||
|
||||
|
||||
trackPositioner.SetPercent(trackPercent.value);
|
||||
}
|
||||
|
||||
@@ -111,6 +112,9 @@ namespace Ichni.RhythmGame
|
||||
var generateCameraButton = inspector.GenerateButton(this, generateContainer, "Game Camera",
|
||||
() => GameCamera.GenerateElement("New Game Camera", Guid.NewGuid(), new List<string>(),
|
||||
true, this, GameCamera.CameraViewType.Perspective, 60, 10));
|
||||
var generateTrailButton = inspector.GenerateButton(this, generateContainer, "Trail",
|
||||
() => Trail.GenerateElement("New Trail", Guid.NewGuid(), new List<string>(),
|
||||
true, this, 1, true, 1, AnimationCurve.Constant(0,1,1)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -142,7 +146,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return CrossTrackPoint.GenerateElement(elementName, elementGuid, tags, false,
|
||||
return CrossTrackPoint.GenerateElement(elementName, Guid.NewGuid(), tags, false,
|
||||
parent as ElementFolder, trackSwitch, trackPercent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return TrackHeadPoint.GenerateElement(elementName, elementGuid, tags, false, parent as Track);
|
||||
return TrackHeadPoint.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent as Track);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return TrackPercentPoint.GenerateElement(elementName, elementGuid, tags, false, parent as Track,
|
||||
return TrackPercentPoint.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent as Track,
|
||||
trackPercent.ConvertToGameType());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using Dreamteck.Splines;
|
||||
using Ichni.Editor;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using Inspector = Ichni.Editor.Inspector;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
@@ -65,7 +66,16 @@ namespace Ichni.RhythmGame
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Track Renderer Auto Orient");
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
{
|
||||
Delete();
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,14 +101,12 @@ namespace Ichni.RhythmGame
|
||||
attachedElement = GameElement_BM.GetElement(attachedElementGuid);
|
||||
Track track = attachedElement as Track;
|
||||
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 TrackRendererSubmoduleAutoOrient(track); //TODO: Implement Material
|
||||
track.submoduleList.Add(track.trackRendererSubmodule);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -146,7 +154,16 @@ namespace Ichni.RhythmGame
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Track Renderer Path Generator");
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
{
|
||||
Delete();
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,14 +189,12 @@ namespace Ichni.RhythmGame
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,6 @@ namespace Ichni.RhythmGame
|
||||
public TrackTimeSubmoduleMovable(Track track, float trackStartTime, float trackEndTime,
|
||||
float visibleTrackTimeLength, AnimationCurveType animationCurveType) : base(track)
|
||||
{
|
||||
this.track.trackTimeSubmodule = this;
|
||||
this.trackStartTime = trackStartTime;
|
||||
this.trackEndTime = trackEndTime;
|
||||
this.trackTotalTime = trackEndTime - trackStartTime;
|
||||
|
||||
@@ -66,8 +66,14 @@ namespace Ichni.RhythmGame
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Trail");
|
||||
var visibleTimeLengthInputField = inspector.GenerateInputField(this, container, "Visible Time Length", nameof(visibleTimeLength));
|
||||
visibleTimeLengthInputField.AddListenerFunction(_ => trailRenderer.time = visibleTimeLength);
|
||||
|
||||
var isAutoOrientToggle = inspector.GenerateToggle(this, container, "Is Auto Orient", nameof(isAutoOrient));
|
||||
isAutoOrientToggle.AddListenerFunction(_ => trailRenderer.alignment = isAutoOrient ? LineAlignment.View : LineAlignment.TransformZ);
|
||||
|
||||
var widthMultiplierInputField = inspector.GenerateInputField(this, container, "Width Multiplier", nameof(widthMultiplier));
|
||||
widthMultiplierInputField.AddListenerFunction(_ => trailRenderer.widthMultiplier = widthMultiplier);
|
||||
|
||||
var widthCurveButton = inspector.GenerateButton(this, container, "Width Curve", () =>
|
||||
{
|
||||
var widthCurveWindow = inspector.GenerateCompositeParameterWindow(this, "Width Curve", nameof(widthCurve));
|
||||
@@ -128,7 +134,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return Trail.GenerateElement(elementName, elementGuid, tags,
|
||||
return Trail.GenerateElement(elementName, Guid.NewGuid(), tags,
|
||||
false, parent, visibleTimeLength,
|
||||
isAutoOrient, widthMultiplier, widthCurve);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user