重构inspector!
This commit is contained in:
@@ -97,9 +97,12 @@ namespace Ichni.RhythmGame
|
||||
base.SetUpInspector();
|
||||
|
||||
var container = inspector.GenerateContainer("Path Node");
|
||||
var indexText = inspector.GenerateHintText(this, container, "Index: " + index);
|
||||
var isShowingSphereToggle = inspector.GenerateToggle(this, container, "Is Showing Sphere", nameof(isShowingSphere));
|
||||
isShowingSphereToggle.AddListenerFunction(() => SetPathNodeSphere(isShowingSphere));
|
||||
|
||||
var pathNodeSettings = container.GenerateSubcontainer(3);
|
||||
var indexText = inspector.GenerateHintText(this, pathNodeSettings, "Index: " + index);
|
||||
var isShowingSphereToggle =
|
||||
inspector.GenerateToggle(this, pathNodeSettings, "Is Showing Sphere", nameof(isShowingSphere))
|
||||
.AddListenerFunction(() => SetPathNodeSphere(isShowingSphere));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -84,118 +84,94 @@ namespace Ichni.RhythmGame
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
base.SetUpInspector();
|
||||
|
||||
var trackSubmodulesContainer = inspector.GenerateContainer("Track Submodules"); //次级模块
|
||||
var trackPathButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Path",
|
||||
() =>
|
||||
{
|
||||
trackPathSubmodule = new TrackPathSubmodule(this, TrackSpaceType.CatmullRom,
|
||||
TrackSamplingType.TimeDistributed, false, false);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
var trackTimeMovableButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Time Movable",
|
||||
() =>
|
||||
//次级模块
|
||||
var trackSubmodulesContainer = inspector.GenerateContainer("Track Submodules");
|
||||
var trackPathSubcontainer = trackSubmodulesContainer.GenerateSubcontainer(3);
|
||||
var trackPathButton = inspector.GenerateButton(this, trackPathSubcontainer, "Track Path", () =>
|
||||
{
|
||||
trackPathSubmodule = new TrackPathSubmodule(this, TrackSpaceType.CatmullRom,
|
||||
TrackSamplingType.TimeDistributed, false, false);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackTimeSubcontainer = trackSubmodulesContainer.GenerateSubcontainer(3);
|
||||
var trackTimeMovableButton =
|
||||
inspector.GenerateButton(this, trackTimeSubcontainer, "Track Time Movable", () =>
|
||||
{
|
||||
trackTimeSubmodule = new TrackTimeSubmoduleMovable(this, 0, 1, 1, AnimationCurveType.Linear);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
var trackTimeStaticButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Time Static",
|
||||
() =>
|
||||
var trackTimeStaticButton =
|
||||
inspector.GenerateButton(this, trackTimeSubcontainer, "Track Time Static", () =>
|
||||
{
|
||||
trackTimeSubmodule = new TrackTimeSubmoduleStatic(this, 1, AnimationCurveType.Linear);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackRendererAutoOrientButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Renderer Auto Orient",
|
||||
() =>
|
||||
var trackRendererSubcontainer = trackSubmodulesContainer.GenerateSubcontainer(3);
|
||||
var trackRendererAutoOrientButton =
|
||||
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Auto Orient", () =>
|
||||
{
|
||||
trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(this, false, 0);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackRendererPathGeneratorButton = inspector.GenerateButton(this, trackSubmodulesContainer,
|
||||
"Track Renderer Path Generator",
|
||||
() =>
|
||||
var trackRendererPathGeneratorButton =
|
||||
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Path Generator", () =>
|
||||
{
|
||||
trackRendererSubmodule = new TrackRendererSubmodulePathGenerator(this, false, 0);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackRenderTubeGeneratorButton = inspector.GenerateButton(this, trackSubmodulesContainer,
|
||||
"Track Renderer Tube Generator",
|
||||
() =>
|
||||
var trackRenderTubeGeneratorButton =
|
||||
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Tube Generator", () =>
|
||||
{
|
||||
trackRendererSubmodule = new TrackRendererSubmoduleTubeGenerator(this, false, 0, 4);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackRendererSurfaceButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Renderer Surface",
|
||||
() =>
|
||||
var trackRendererSurfaceButton =
|
||||
inspector.GenerateButton(this, trackRendererSubcontainer, "Track Renderer Surface", () =>
|
||||
{
|
||||
trackRendererSubmodule = new TrackRendererSubmoduleSurface(this, false, 0);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var generateContainer = inspector.GenerateContainer("Generate Elements"); //物体生成
|
||||
//物体生成
|
||||
var generateContainer = inspector.GenerateContainer("Generate Elements");
|
||||
var pathNodeSubcontainer = generateContainer.GenerateSubcontainer(3);
|
||||
var pathNodeButton = inspector.GenerateButton(this, pathNodeSubcontainer, "Path Node",
|
||||
() => { PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, this, true); }); //路径点
|
||||
|
||||
var pathNodeButton = inspector.GenerateButton(this, generateContainer, "Path Node",
|
||||
() =>
|
||||
{
|
||||
PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, this, true);
|
||||
}); //路径点
|
||||
|
||||
var trackPercentPointButton = inspector.GenerateButton(this, generateContainer, "Track Percent Point",
|
||||
() =>
|
||||
{
|
||||
TrackPercentPoint.GenerateElement("New Track Percent Point", Guid.NewGuid(), new List<string>(),
|
||||
true, this, new FlexibleFloat());
|
||||
}); //百分比点
|
||||
|
||||
var trackHeadPointButton = inspector.GenerateButton(this, generateContainer, "Track Head Point",
|
||||
() =>
|
||||
{
|
||||
TrackHeadPoint.GenerateElement("New Track Head Point", Guid.NewGuid(), new List<string>(),
|
||||
true, this);
|
||||
}); //头部点(必须先有TrackTimeSubmoduleMovable)
|
||||
var trackMajorPointSubcontainer = generateContainer.GenerateSubcontainer(3);
|
||||
var trackPercentPointButton = inspector.GenerateButton(this, trackMajorPointSubcontainer, "Track Percent Point",
|
||||
() => { TrackPercentPoint.GenerateElement("New Track Percent Point", Guid.NewGuid(), new List<string>(), true, this, new FlexibleFloat()); }); //百分比点
|
||||
var trackHeadPointButton = inspector.GenerateButton(this, trackMajorPointSubcontainer, "Track Head Point",
|
||||
() => { TrackHeadPoint.GenerateElement("New Track Head Point", Guid.NewGuid(), new List<string>(), true, this); }); //头部点(必须先有TrackTimeSubmoduleMovable)
|
||||
if (trackTimeSubmodule is not TrackTimeSubmoduleMovable) trackHeadPointButton.button.interactable = false;
|
||||
|
||||
var tapButton = inspector.GenerateButton(this, generateContainer, "Tap",
|
||||
() =>
|
||||
{
|
||||
Tap.GenerateElement("New Tap", Guid.NewGuid(), new List<string>(), true, this, 0f);
|
||||
}); //Note Tap
|
||||
var noteSubcontainer = generateContainer.GenerateSubcontainer(3);
|
||||
var tapButton = inspector.GenerateButton(this, noteSubcontainer, "Tap",
|
||||
() => { Tap.GenerateElement("New Tap", Guid.NewGuid(), new List<string>(), true, this, 0f); }); //Note Tap
|
||||
|
||||
var stayButton = inspector.GenerateButton(this, generateContainer, "Stay",
|
||||
() =>
|
||||
{
|
||||
Stay.GenerateElement("New Stay", Guid.NewGuid(), new List<string>(), true, this, 0f);
|
||||
}); //Note Stay
|
||||
var stayButton = inspector.GenerateButton(this, noteSubcontainer, "Stay",
|
||||
() => { Stay.GenerateElement("New Stay", Guid.NewGuid(), new List<string>(), true, this, 0f); }); //Note Stay
|
||||
|
||||
var holdButton = inspector.GenerateButton(this, generateContainer, "Hold",
|
||||
() =>
|
||||
{
|
||||
Hold.GenerateElement("New Hold", Guid.NewGuid(), new List<string>(), true, this, 0f, 1f);
|
||||
}); //Note Hold
|
||||
var holdButton = inspector.GenerateButton(this, noteSubcontainer, "Hold",
|
||||
() => { Hold.GenerateElement("New Hold", Guid.NewGuid(), new List<string>(), true, this, 0f, 1f); }); //Note Hold
|
||||
|
||||
var flickButton = inspector.GenerateButton(this, generateContainer, "Flick",
|
||||
() =>
|
||||
{
|
||||
Flick.GenerateElement("New Flick", Guid.NewGuid(), new List<string>(), true, this, 0f,
|
||||
new List<Vector2>());
|
||||
}); //Note Flick
|
||||
var flickButton = inspector.GenerateButton(this, noteSubcontainer, "Flick",
|
||||
() => { Flick.GenerateElement("New Flick", Guid.NewGuid(), new List<string>(), true, this, 0f, new List<Vector2>()); }); //Note Flick
|
||||
|
||||
var displacementButton = inspector.GenerateButton(this, generateContainer, "Displacement",
|
||||
() =>
|
||||
{
|
||||
Displacement.GenerateElement("New Displacement", Guid.NewGuid(), new List<string>(), true, this,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
}); //位移
|
||||
var animationSubcontainer = generateContainer.GenerateSubcontainer(3);
|
||||
var displacementButton = inspector.GenerateButton(this, animationSubcontainer, "Displacement", () =>
|
||||
{
|
||||
Displacement.GenerateElement("New Displacement", Guid.NewGuid(), new List<string>(), true, this,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
}); //位移
|
||||
|
||||
var swirlButton = inspector.GenerateButton(this, generateContainer, "Swirl",
|
||||
() =>
|
||||
{
|
||||
Swirl.GenerateElement("New Swirl", Guid.NewGuid(), new List<string>(), true, this,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
}); //旋转
|
||||
var swirlButton = inspector.GenerateButton(this, animationSubcontainer, "Swirl", () =>
|
||||
{
|
||||
Swirl.GenerateElement("New Swirl", Guid.NewGuid(), new List<string>(), true, this,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
}); //旋转
|
||||
|
||||
if (trackPathSubmodule != null)
|
||||
{
|
||||
@@ -220,18 +196,20 @@ namespace Ichni.RhythmGame
|
||||
trackRendererSurfaceButton.button.interactable = false;
|
||||
}
|
||||
|
||||
var toolsContainerTrack = inspector.GenerateContainer("Track Tools"); //轨道(整体)快捷工具
|
||||
var quickCopyButton = inspector.GenerateButton(this, toolsContainerTrack, "QuickCopy", () =>
|
||||
var trackToolsContainer = inspector.GenerateContainer("Track Tools"); //轨道(整体)快捷工具
|
||||
var trackToolsSubcontainer = trackToolsContainer.GenerateSubcontainer(3);
|
||||
var quickCopyButton = inspector.GenerateButton(this, trackToolsSubcontainer, "QuickCopy", () =>
|
||||
{
|
||||
IHaveInspection qcWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Quick Copy");
|
||||
var qcContainer = qcWindow.GenerateContainer();
|
||||
var xField = qcWindow.GenerateInputField(qcContainer, "X offset", "0");
|
||||
var yField = qcWindow.GenerateInputField(qcContainer, "Y offset", "0");
|
||||
var zField = qcWindow.GenerateInputField(qcContainer, "Z offset", "0");
|
||||
var timeField = qcWindow.GenerateInputField(qcContainer, "Time offset", "0");
|
||||
var iterationField = qcWindow.GenerateInputField(qcContainer, "Iteration", "0");
|
||||
var includeAnimationToggle = qcWindow.GenerateToggle(null, qcContainer, "Include Animation", string.Empty);
|
||||
qcWindow.GenerateButton(this, qcContainer, "Copy", () =>
|
||||
var qcSubcontainer = qcContainer.GenerateSubcontainer(3);
|
||||
var xField = qcWindow.GenerateInputField(qcSubcontainer, "X offset", "0");
|
||||
var yField = qcWindow.GenerateInputField(qcSubcontainer, "Y offset", "0");
|
||||
var zField = qcWindow.GenerateInputField(qcSubcontainer, "Z offset", "0");
|
||||
var timeField = qcWindow.GenerateInputField(qcSubcontainer, "Time offset", "0");
|
||||
var iterationField = qcWindow.GenerateInputField(qcSubcontainer, "Iteration", "0");
|
||||
var includeAnimationToggle = qcWindow.GenerateToggle(null, qcSubcontainer, "Include Animation", string.Empty);
|
||||
qcWindow.GenerateButton(this, qcSubcontainer, "Copy", () =>
|
||||
{
|
||||
Vector3 positionOffset = new Vector3(xField.GetValue<float>(), yField.GetValue<float>(), zField.GetValue<float>());
|
||||
float timeOffset = timeField.GetValue<float>();
|
||||
@@ -241,32 +219,34 @@ namespace Ichni.RhythmGame
|
||||
});
|
||||
}); //快速复制
|
||||
|
||||
var wholeTrackMoveButton = inspector.GenerateButton(this, toolsContainerTrack, "Whole Track Move", () =>
|
||||
var wholeTrackMoveButton = inspector.GenerateButton(this, trackToolsSubcontainer, "Whole Track Move", () =>
|
||||
{
|
||||
IHaveInspection wholeMoveWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Whole Track Move");
|
||||
var wmContainer = wholeMoveWindow.GenerateContainer();
|
||||
var xField = wholeMoveWindow.GenerateInputField(wmContainer, "X offset", "0");
|
||||
var yField = wholeMoveWindow.GenerateInputField(wmContainer, "Y offset", "0");
|
||||
var zField = wholeMoveWindow.GenerateInputField(wmContainer, "Z offset", "0");
|
||||
wholeMoveWindow.GenerateButton(this, wmContainer, "Move", () =>
|
||||
var wmSubcontainer = wmContainer.GenerateSubcontainer(3);
|
||||
var xField = wholeMoveWindow.GenerateInputField(wmSubcontainer, "X offset", "0");
|
||||
var yField = wholeMoveWindow.GenerateInputField(wmSubcontainer, "Y offset", "0");
|
||||
var zField = wholeMoveWindow.GenerateInputField(wmSubcontainer, "Z offset", "0");
|
||||
wholeMoveWindow.GenerateButton(this, wmSubcontainer, "Move", () =>
|
||||
{
|
||||
Vector3 positionOffset = new Vector3(xField.GetValue<float>(), yField.GetValue<float>(), zField.GetValue<float>());
|
||||
WholeTrackMove(positionOffset);
|
||||
});
|
||||
}); //整体移动
|
||||
|
||||
var wholeTrackSwirlButton = inspector.GenerateButton(this, toolsContainerTrack, "Whole Track Swirl", () =>
|
||||
var wholeTrackSwirlButton = inspector.GenerateButton(this, trackToolsSubcontainer, "Whole Track Swirl", () =>
|
||||
{
|
||||
IHaveInspection wholeSwirlWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Whole Track Swirl");
|
||||
var wsContainer = wholeSwirlWindow.GenerateContainer();
|
||||
var angleField = wholeSwirlWindow.GenerateInputField(wsContainer, "Angle", "0");
|
||||
var centerXField = wholeSwirlWindow.GenerateInputField(wsContainer, "Center X", "0");
|
||||
var centerYField = wholeSwirlWindow.GenerateInputField(wsContainer, "Center Y", "0");
|
||||
var centerZField = wholeSwirlWindow.GenerateInputField(wsContainer, "Center Z", "0");
|
||||
var axisDirXField = wholeSwirlWindow.GenerateInputField(wsContainer, "Axis Direction X", "0");
|
||||
var axisDirYField = wholeSwirlWindow.GenerateInputField(wsContainer, "Axis Direction Y", "0");
|
||||
var axisDirZField = wholeSwirlWindow.GenerateInputField(wsContainer, "Axis Direction Z", "0");
|
||||
wholeSwirlWindow.GenerateButton(this, wsContainer, "Swirl", () =>
|
||||
var wsSubcontainer = wsContainer.GenerateSubcontainer(3);
|
||||
var angleField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Angle", "0");
|
||||
var centerXField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Center X", "0");
|
||||
var centerYField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Center Y", "0");
|
||||
var centerZField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Center Z", "0");
|
||||
var axisDirXField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Axis Direction X", "0");
|
||||
var axisDirYField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Axis Direction Y", "0");
|
||||
var axisDirZField = wholeSwirlWindow.GenerateInputField(wsSubcontainer, "Axis Direction Z", "0");
|
||||
wholeSwirlWindow.GenerateButton(this, wsSubcontainer, "Swirl", () =>
|
||||
{
|
||||
float angle = angleField.GetValue<float>();
|
||||
Vector3 center = new Vector3(centerXField.GetValue<float>(), centerYField.GetValue<float>(), centerZField.GetValue<float>());
|
||||
@@ -293,16 +273,18 @@ namespace Ichni.RhythmGame
|
||||
// });
|
||||
// }); //整体翻转
|
||||
|
||||
var toolsContainerPathNode = inspector.GenerateContainer("Path Node Tools"); //路径点快捷工具
|
||||
var setAllPathNodeSphereButton = inspector.GenerateButton(this, toolsContainerPathNode,
|
||||
"Set All Path Node Sphere", () =>
|
||||
{
|
||||
bool firstPathNodeSphere = trackPathSubmodule.pathNodeList[0].isShowingSphere;
|
||||
SetAllPathNodeSphere(!firstPathNodeSphere);
|
||||
});
|
||||
var pathNodeToolsContainer = inspector.GenerateContainer("Path Node Tools"); //路径点快捷工具
|
||||
var pathNodeToolsSubcontainer = pathNodeToolsContainer.GenerateSubcontainer(3);
|
||||
var setAllPathNodeSphereButton =
|
||||
inspector.GenerateButton(this, pathNodeToolsSubcontainer, "Set All Path Node Sphere", () =>
|
||||
{
|
||||
bool firstPathNodeSphere = trackPathSubmodule.pathNodeList[0].isShowingSphere;
|
||||
SetAllPathNodeSphere(!firstPathNodeSphere);
|
||||
});
|
||||
|
||||
var setOnlyStartEndPathNodeSphereEnabledButton = inspector.GenerateButton(this, toolsContainerPathNode,
|
||||
"Only Start & End Path Node's sphere enabled", SetOnlyStartEndPathNodeSphereEnabled);
|
||||
var setOnlyStartEndPathNodeSphereEnabledButton =
|
||||
inspector.GenerateButton(this, pathNodeToolsSubcontainer, "Only Enable Start & End Path Node's sphere",
|
||||
SetOnlyStartEndPathNodeSphereEnabled);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -95,25 +95,27 @@ namespace Ichni.RhythmGame
|
||||
|
||||
base.SetUpInspector();
|
||||
var container = inspector.GenerateContainer("Cross Track Point");
|
||||
var trackSwitchButton = inspector.GenerateButton(this, container, "Track Switch",
|
||||
() =>
|
||||
var pointSettings = container.GenerateSubcontainer(3);
|
||||
var trackSwitchButton = inspector.GenerateButton(this, pointSettings, "Track Switch", () =>
|
||||
{
|
||||
inspector.GenerateCompositeParameterWindow(this, "Track Switch", nameof(trackSwitch)).SetAsFlexibleInt();
|
||||
});
|
||||
var trackPercentButton = inspector.GenerateButton(this, container, "Track Percent",
|
||||
() =>
|
||||
var trackPercentButton = inspector.GenerateButton(this, pointSettings, "Track Percent", () =>
|
||||
{
|
||||
inspector.GenerateCompositeParameterWindow(this, "Track Percent", nameof(trackPercent)).SetAsFlexibleFloat();
|
||||
});
|
||||
var pasteTrackListButton = inspector.GenerateButton(this, container, "Paste Track List", PasteTrackList);
|
||||
|
||||
var generateContainer = inspector.GenerateContainer("Generate");
|
||||
var generateCameraButton = inspector.GenerateButton(this, generateContainer, "Game Camera",
|
||||
var pasteTrackListButton = inspector.GenerateButton(this, pointSettings, "Paste Track List", PasteTrackList);
|
||||
|
||||
var generation = container.GenerateSubcontainer(3);
|
||||
var generateCameraButton = inspector.GenerateButton(this, generation, "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",
|
||||
var generateTrailButton = inspector.GenerateButton(this, generation, "Trail",
|
||||
() => Trail.GenerateElement("New Trail", Guid.NewGuid(), new List<string>(),
|
||||
true, this, 1, true, 1, AnimationCurve.Constant(0,1,1)));
|
||||
var environmentObjectButton = inspector.GenerateButton(this, generation, "Environment Object",
|
||||
() => TemporaryObject.GenerateElement("New Environment Object", Guid.NewGuid(), new List<string>(),
|
||||
true, this));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -93,17 +93,19 @@ namespace Ichni.RhythmGame
|
||||
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Track Percent Point");
|
||||
var trackPercentButton = inspector.GenerateButton(this, container, "Track Percent", () =>
|
||||
{
|
||||
inspector.GenerateCompositeParameterWindow(this, "Track Percent", nameof(trackPercent)).SetAsFlexibleFloat();
|
||||
});
|
||||
var pointSettings = container.GenerateSubcontainer(3);
|
||||
var trackPercentButton = inspector.GenerateButton(this, pointSettings, "Track Percent",
|
||||
() => { inspector.GenerateCompositeParameterWindow(this, "Track Percent", nameof(trackPercent)).SetAsFlexibleFloat(); });
|
||||
|
||||
var generateTrailButton = inspector.GenerateButton(this, container, "Generate Trail", () =>
|
||||
var generation = container.GenerateSubcontainer(3);
|
||||
var generateTrailButton = inspector.GenerateButton(this, generation, "Generate Trail", () =>
|
||||
{
|
||||
Trail.GenerateElement("New Trail", Guid.NewGuid(), new List<string>(),
|
||||
true, this, 1, true,
|
||||
1, AnimationCurve.Constant(0, 1, 1));
|
||||
Trail.GenerateElement("New Trail", Guid.NewGuid(), new List<string>(), true,
|
||||
this, 1, true, 1, AnimationCurve.Constant(0, 1, 1));
|
||||
});
|
||||
var environmentObjectButton = inspector.GenerateButton(this, generation, "Environment Object",
|
||||
() => TemporaryObject.GenerateElement("New Environment Object", Guid.NewGuid(), new List<string>(),
|
||||
true, this));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -117,25 +117,22 @@ namespace Ichni.RhythmGame
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Track Path");
|
||||
|
||||
var trackPathSubmoduleSettings = container.GenerateSubcontainer(3);
|
||||
var trackSpaceDropdown =
|
||||
inspector.GenerateDropdown(this, container, "Space Type", typeof(Track.TrackSpaceType), nameof(trackSpaceType));
|
||||
|
||||
inspector.GenerateDropdown(this, trackPathSubmoduleSettings, "Space Type", typeof(Track.TrackSpaceType), nameof(trackSpaceType));
|
||||
var trackSamplingDropdown =
|
||||
inspector.GenerateDropdown(this, container, "Sampling Type", typeof(Track.TrackSamplingType), nameof(trackSamplingType));
|
||||
|
||||
inspector.GenerateDropdown(this, trackPathSubmoduleSettings, "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, true);
|
||||
});
|
||||
|
||||
var showDisplayToggle = inspector.GenerateToggle(this, container, "Show Display", nameof(isShowingDisplay));
|
||||
showDisplayToggle.AddListenerFunction(() => SetDisplay(isShowingDisplay));
|
||||
inspector.GenerateToggle(this, trackPathSubmoduleSettings, "Is Closed", nameof(isClosed))
|
||||
.AddListenerFunction(ClosePath);
|
||||
var generatePathNodeButton = inspector.GenerateButton(this, trackPathSubmoduleSettings, "Generate Path Node", () =>
|
||||
{
|
||||
PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, track, true);
|
||||
});
|
||||
var showDisplayToggle = inspector.GenerateToggle(this, trackPathSubmoduleSettings, "Show Display", nameof(isShowingDisplay))
|
||||
.AddListenerFunction(() => SetDisplay(isShowingDisplay));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,50 @@ namespace Ichni.RhythmGame
|
||||
}
|
||||
public partial class TrackRendererSubmodule
|
||||
{
|
||||
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 emissionSettings = container.GenerateSubcontainer(3);
|
||||
var enableEmissionToggle =
|
||||
inspector.GenerateToggle(this, emissionSettings, "Enable Emission", nameof(enableEmission))
|
||||
.AddListenerFunction(SetEnableEmission);
|
||||
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))
|
||||
.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
if (materialThemeBundleName != String.Empty && ThemeBundleManager.instance.TryGetThemeBundle(materialThemeBundleName, out ThemeBundle themeBundle))
|
||||
{
|
||||
List<string> materialNameList = themeBundle.assetList_Material.ConvertAll(x => x.name);
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, materialSettings, "Material Name", materialNameList, nameof(materialName))
|
||||
.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
}
|
||||
else
|
||||
{
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, materialSettings, "Material Name", new List<string>(), nameof(materialName));
|
||||
objectNameDropdown.dropdown.interactable = false;
|
||||
}
|
||||
|
||||
var applyMaterialButton = inspector.GenerateButton(this, materialSettings, "Apply Material", () => { ApplyMaterial(materialThemeBundleName, materialName); });
|
||||
|
||||
var delete = container.GenerateSubcontainer(3);
|
||||
var deleteButton = inspector.GenerateButton(this, delete, "Delete", () =>
|
||||
{
|
||||
Delete();
|
||||
Object.Destroy(track.trackRendererSubmodule.meshGenerator);
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
}
|
||||
|
||||
protected void SetEnableEmission()
|
||||
{
|
||||
meshRenderer.material.SetInt("_Emission", enableEmission ? 1 : 0);
|
||||
@@ -103,50 +147,6 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
matchedBM = new TrackRendererSubmoduleAutoOrient_BM(attachedGameElement, this);
|
||||
}
|
||||
|
||||
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 enableEmissionToggle = inspector.GenerateToggle(this, container, "Enable Emission", nameof(enableEmission));
|
||||
enableEmissionToggle.AddListenerFunction(SetEnableEmission);
|
||||
|
||||
var emissionIntensityInputField = inspector.GenerateInputField(this, container, "Emission Intensity", nameof(emissionIntensity));
|
||||
emissionIntensityInputField.AddListenerFunction(SetEmissionIntensity);
|
||||
|
||||
var themeBundleDropdown = inspector.GenerateDropdown(this, container, "Theme Bundle", ThemeBundleManager.instance.selectedThemeBundleList, nameof(materialThemeBundleName));
|
||||
themeBundleDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
|
||||
if (materialThemeBundleName != String.Empty && ThemeBundleManager.instance.TryGetThemeBundle(materialThemeBundleName, out ThemeBundle themeBundle))
|
||||
{
|
||||
List<string> materialNameList = themeBundle.assetList_Material.ConvertAll(x => x.name);
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", materialNameList, nameof(materialName));
|
||||
objectNameDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
}
|
||||
else
|
||||
{
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", new List<string>(), nameof(materialName));
|
||||
objectNameDropdown.dropdown.interactable = false;
|
||||
}
|
||||
|
||||
var applyMaterialButton = inspector.GenerateButton(this, container, "Apply Material", () =>
|
||||
{
|
||||
ApplyMaterial(materialThemeBundleName, materialName);
|
||||
});
|
||||
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
{
|
||||
Delete();
|
||||
Object.Destroy(track.trackRendererSubmodule.meshGenerator);
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
@@ -222,50 +222,6 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
matchedBM = new TrackRendererSubmodulePathGenerator_BM(attachedGameElement, this);
|
||||
}
|
||||
|
||||
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 enableEmissionToggle = inspector.GenerateToggle(this, container, "Enable Emission", nameof(enableEmission));
|
||||
enableEmissionToggle.AddListenerFunction(SetEnableEmission);
|
||||
|
||||
var emissionIntensityInputField = inspector.GenerateInputField(this, container, "Emission Intensity", nameof(emissionIntensity));
|
||||
emissionIntensityInputField.AddListenerFunction(SetEmissionIntensity);
|
||||
|
||||
var themeBundleDropdown = inspector.GenerateDropdown(this, container, "Theme Bundle", ThemeBundleManager.instance.selectedThemeBundleList, nameof(materialThemeBundleName));
|
||||
themeBundleDropdown.AddListenerFunction(()=>inspectorMain.SetInspector(track));
|
||||
|
||||
if (materialThemeBundleName != String.Empty && ThemeBundleManager.instance.TryGetThemeBundle(materialThemeBundleName, out ThemeBundle themeBundle))
|
||||
{
|
||||
List<string> materialNameList = themeBundle.assetList_Material.ConvertAll(x => x.name);
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", materialNameList, nameof(materialName));
|
||||
objectNameDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
}
|
||||
else
|
||||
{
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", new List<string>(), nameof(materialName));
|
||||
objectNameDropdown.dropdown.interactable = false;
|
||||
}
|
||||
|
||||
var applyMaterialButton = inspector.GenerateButton(this, container, "Apply Material", () =>
|
||||
{
|
||||
ApplyMaterial(materialThemeBundleName, materialName);
|
||||
});
|
||||
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
{
|
||||
Delete();
|
||||
Object.Destroy(track.trackRendererSubmodule.meshGenerator);
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
@@ -327,7 +283,7 @@ namespace Ichni.RhythmGame
|
||||
base(track, enableEmission, emissionIntensity)
|
||||
{
|
||||
this.sideCount = sideCount;
|
||||
|
||||
|
||||
this.tubeGenerator = track.AddComponent<TubeGenerator>();
|
||||
this.meshRenderer = tubeGenerator.GetComponent<MeshRenderer>();
|
||||
this.meshGenerator = tubeGenerator;
|
||||
@@ -340,60 +296,24 @@ namespace Ichni.RhythmGame
|
||||
this.tubeGenerator.uvRotation = 90;
|
||||
this.tubeGenerator.sides = sideCount;
|
||||
}
|
||||
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new TrackRendererSubmoduleTubeGenerator_BM(attachedGameElement, this);
|
||||
}
|
||||
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Track Renderer Tube Generator");
|
||||
|
||||
var enableEmissionToggle = inspector.GenerateToggle(this, container, "Enable Emission", nameof(enableEmission));
|
||||
enableEmissionToggle.AddListenerFunction(SetEnableEmission);
|
||||
|
||||
var emissionIntensityInputField = inspector.GenerateInputField(this, container, "Emission Intensity", nameof(emissionIntensity));
|
||||
emissionIntensityInputField.AddListenerFunction(SetEmissionIntensity);
|
||||
|
||||
var themeBundleDropdown = inspector.GenerateDropdown(this, container, "Theme Bundle", ThemeBundleManager.instance.selectedThemeBundleList, nameof(materialThemeBundleName));
|
||||
themeBundleDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
var container = inspector.GenerateContainer("Tube Settings");
|
||||
var tubeSettings = container.GenerateSubcontainer(3);
|
||||
var sideCountInputField =
|
||||
inspector.GenerateInputField(this, tubeSettings, "Side Count", nameof(sideCount))
|
||||
.AddListenerFunction(() => { tubeGenerator.sides = sideCount; });
|
||||
|
||||
if (materialThemeBundleName != String.Empty && ThemeBundleManager.instance.TryGetThemeBundle(materialThemeBundleName, out ThemeBundle themeBundle))
|
||||
{
|
||||
List<string> materialNameList = themeBundle.assetList_Material.ConvertAll(x => x.name);
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", materialNameList, nameof(materialName));
|
||||
objectNameDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
}
|
||||
else
|
||||
{
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", new List<string>(), nameof(materialName));
|
||||
objectNameDropdown.dropdown.interactable = false;
|
||||
}
|
||||
|
||||
var applyMaterialButton = inspector.GenerateButton(this, container, "Apply Material", () =>
|
||||
{
|
||||
ApplyMaterial(materialThemeBundleName, materialName);
|
||||
});
|
||||
|
||||
var sideCountInputField = inspector.GenerateInputField(this, container, "Side Count", nameof(sideCount));
|
||||
sideCountInputField.AddListenerFunction(() =>
|
||||
{
|
||||
tubeGenerator.sides = sideCount;
|
||||
});
|
||||
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
{
|
||||
Delete();
|
||||
Object.Destroy(track.trackRendererSubmodule.meshGenerator);
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
base.SetUpInspector();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -472,50 +392,6 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
matchedBM = new TrackRendererSubmoduleSurface_BM(attachedGameElement, this);
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Track Renderer Surface");
|
||||
|
||||
var enableEmissionToggle = inspector.GenerateToggle(this, container, "Enable Emission", nameof(enableEmission));
|
||||
enableEmissionToggle.AddListenerFunction(SetEnableEmission);
|
||||
|
||||
var emissionIntensityInputField = inspector.GenerateInputField(this, container, "Emission Intensity", nameof(emissionIntensity));
|
||||
emissionIntensityInputField.AddListenerFunction(SetEmissionIntensity);
|
||||
|
||||
var themeBundleDropdown = inspector.GenerateDropdown(this, container, "Theme Bundle", ThemeBundleManager.instance.selectedThemeBundleList, nameof(materialThemeBundleName));
|
||||
themeBundleDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
|
||||
if (materialThemeBundleName != String.Empty && ThemeBundleManager.instance.TryGetThemeBundle(materialThemeBundleName, out ThemeBundle themeBundle))
|
||||
{
|
||||
List<string> materialNameList = themeBundle.assetList_Material.ConvertAll(x => x.name);
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", materialNameList, nameof(materialName));
|
||||
objectNameDropdown.AddListenerFunction(() => inspectorMain.SetInspector(track));
|
||||
}
|
||||
else
|
||||
{
|
||||
var objectNameDropdown = inspector.GenerateDropdown(this, container, "Material Name", new List<string>(), nameof(materialName));
|
||||
objectNameDropdown.dropdown.interactable = false;
|
||||
}
|
||||
|
||||
var applyMaterialButton = inspector.GenerateButton(this, container, "Apply Material", () =>
|
||||
{
|
||||
ApplyMaterial(materialThemeBundleName, materialName);
|
||||
});
|
||||
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
{
|
||||
Delete();
|
||||
Object.Destroy(track.trackRendererSubmodule.meshGenerator);
|
||||
track.trackRendererSubmodule = null;
|
||||
inspectorMain.SetInspector(track);
|
||||
track.Refresh();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
|
||||
@@ -61,6 +61,7 @@ namespace Ichni.RhythmGame
|
||||
float per = AnimationCurveEvaluator.Evaluate(animationCurveType, (songTimeInTime - trackStartTime) / trackTotalTime);
|
||||
return Mathf.Clamp01(per);
|
||||
}
|
||||
|
||||
public override void Refresh()
|
||||
|
||||
{
|
||||
@@ -75,6 +76,7 @@ namespace Ichni.RhythmGame
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new Beatmap.TrackTimeSubmoduleMovable_BM(attachedGameElement, this);
|
||||
@@ -86,22 +88,18 @@ namespace Ichni.RhythmGame
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Track Time Movable");
|
||||
var trackTimeSubmoduleSettings = container.GenerateSubcontainer(3);
|
||||
var startTimeInputField =
|
||||
inspector.GenerateInputField(this, container, "Start Time", nameof(trackStartTime));
|
||||
startTimeInputField.AddListenerFunction(RefreshChildren);
|
||||
|
||||
var endTimeInputField = inspector.GenerateInputField(this, container, "End Time", nameof(trackEndTime));
|
||||
endTimeInputField.AddListenerFunction(RefreshChildren);
|
||||
|
||||
inspector.GenerateInputField(this, trackTimeSubmoduleSettings, "Start Time", nameof(trackStartTime))
|
||||
.AddListenerFunction(RefreshChildren);
|
||||
var endTimeInputField = inspector.GenerateInputField(this, trackTimeSubmoduleSettings, "End Time", nameof(trackEndTime))
|
||||
.AddListenerFunction(RefreshChildren);
|
||||
var visibleTimeInputField =
|
||||
inspector.GenerateInputField(this, container, "Visible Time Length", nameof(visibleTrackTimeLength));
|
||||
|
||||
var animationCurveDropdown = inspector.GenerateDropdown(this, container, "Animation Curve",
|
||||
typeof(AnimationCurveType), nameof(animationCurveType));
|
||||
animationCurveDropdown.AddListenerFunction(RefreshChildren);
|
||||
|
||||
var deleteButton = inspector.GenerateButton(this, container, "Delete",
|
||||
() =>
|
||||
inspector.GenerateInputField(this, trackTimeSubmoduleSettings, "Visible Time Length", nameof(visibleTrackTimeLength));
|
||||
var animationCurveDropdown =
|
||||
inspector.GenerateDropdown(this, trackTimeSubmoduleSettings, "Animation Curve", typeof(AnimationCurveType), nameof(animationCurveType))
|
||||
.AddListenerFunction(RefreshChildren);
|
||||
var deleteButton = inspector.GenerateButton(this, trackTimeSubmoduleSettings, "Delete", () =>
|
||||
{
|
||||
Delete();
|
||||
track.trackTimeSubmodule = null;
|
||||
@@ -176,6 +174,7 @@ namespace Ichni.RhythmGame
|
||||
this.tailPercent = 1;
|
||||
//timeDurationSubmodule 根据下辖Note的时间来设置
|
||||
}
|
||||
|
||||
public override void Refresh()
|
||||
{
|
||||
if (track.trackRendererSubmodule != null)
|
||||
@@ -191,6 +190,7 @@ namespace Ichni.RhythmGame
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new Beatmap.TrackTimeSubmoduleStatic_BM(attachedGameElement, this);
|
||||
@@ -202,12 +202,12 @@ namespace Ichni.RhythmGame
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Track Time Static");
|
||||
var trackTimeSubmoduleSettings = container.GenerateSubcontainer(3);
|
||||
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",
|
||||
() =>
|
||||
inspector.GenerateInputField(this, trackTimeSubmoduleSettings, "Total Time", nameof(trackTotalTime));
|
||||
var animationCurveDropdown =
|
||||
inspector.GenerateDropdown(this, trackTimeSubmoduleSettings, "Animation Curve", typeof(AnimationCurveType), nameof(animationCurveType));
|
||||
var deleteButton = inspector.GenerateButton(this, trackTimeSubmoduleSettings, "Delete", () =>
|
||||
{
|
||||
Delete();
|
||||
track.trackTimeSubmodule = null;
|
||||
|
||||
@@ -63,17 +63,20 @@ namespace Ichni.RhythmGame
|
||||
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
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 trailSettings = container.GenerateSubcontainer(3);
|
||||
var visibleTimeLengthInputField =
|
||||
inspector.GenerateInputField(this, trailSettings, "Visible Time Length", nameof(visibleTimeLength))
|
||||
.AddListenerFunction(() => trailRenderer.time = visibleTimeLength);
|
||||
var isAutoOrientToggle =
|
||||
inspector.GenerateToggle(this, trailSettings, "Is Auto Orient", nameof(isAutoOrient))
|
||||
.AddListenerFunction(() => trailRenderer.alignment = isAutoOrient ? LineAlignment.View : LineAlignment.TransformZ);
|
||||
var widthMultiplierInputField =
|
||||
inspector.GenerateInputField(this, trailSettings, "Width Multiplier", nameof(widthMultiplier))
|
||||
.AddListenerFunction(() => trailRenderer.widthMultiplier = widthMultiplier);
|
||||
var widthCurveButton = inspector.GenerateButton(this, trailSettings, "Width Curve", () =>
|
||||
{
|
||||
var widthCurveWindow = inspector.GenerateCompositeParameterWindow(this, "Width Curve", nameof(widthCurve));
|
||||
widthCurveWindow.SetAsCustomCurve();
|
||||
|
||||
Reference in New Issue
Block a user