重构inspector!

This commit is contained in:
SoulliesOfficial
2025-04-14 17:49:47 -04:00
parent bbca8b43fe
commit 11543b4997
81 changed files with 1037 additions and 903 deletions

View File

@@ -96,8 +96,9 @@ namespace Ichni.RhythmGame
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Color");
var subcontainer = container.GenerateSubcontainer(1);
var baseColor = inspector.GenerateBaseColorPicker(this, container, "Base Color", nameof(originalBaseColor));
var baseColor = inspector.GenerateBaseColorPicker(this, subcontainer, "Base Color", nameof(originalBaseColor));
baseColor.AddListenerFunction(Refresh);
if (attachedGameElement.childElementList.Exists(x => x is BaseColorChange))
{
@@ -107,7 +108,7 @@ namespace Ichni.RhythmGame
if ((attachedGameElement as IHaveColorSubmodule).haveEmission)
{
var emissionColor = inspector.GenerateEmissionColorPicker(this, container, "Emission Color",
var emissionColor = inspector.GenerateEmissionColorPicker(this, subcontainer, "Emission Color",
nameof(emissionEnabled), nameof(originalEmissionColor), nameof(originalEmissionIntensity));
emissionColor.AddListenerFunction(Refresh);
@@ -117,8 +118,6 @@ namespace Ichni.RhythmGame
emissionColor.canvasGroup.interactable = false;
}
}
container.SetDeviver(1);
}
public override void Refresh()

View File

@@ -74,13 +74,9 @@ namespace Ichni.RhythmGame
foreach (var effect in effectCollection)
{
var container = inspector.GenerateContainer(effect.Key);
foreach (var effectBase in effect.Value)
{
effectBase.SetUpInspector();
}
var effectNameInputField = inspector.GenerateInputField(container, "Effect Name");
var addEffectButton = inspector.GenerateButton(this, container, "Add Effect", () =>
var subcontainer = container.GenerateSubcontainer(3);
var effectNameInputField = inspector.GenerateInputField(subcontainer, "Effect Name");
var addEffectButton = inspector.GenerateButton(this, subcontainer, "Add Effect", () =>
{
if (EffectCollection.TryGetValue(effectNameInputField.GetValue<string>(), out var newEffect))
{
@@ -92,6 +88,11 @@ namespace Ichni.RhythmGame
LogWindow.Log("Effect Type not found.", Color.red);
}
});
foreach (var effectBase in effect.Value)
{
effectBase.SetUpInspector();
}
}
}
}

View File

@@ -97,10 +97,10 @@ namespace Ichni.RhythmGame
{
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Time Duration");
var overrideToggle = inspector.GenerateToggle(this, container, "Override Duration", nameof(isOverridingDuration));
var startTimeInputField = inspector.GenerateInputField(this, container, "Start Time", nameof(startTime));
var endTimeInputField = inspector.GenerateInputField(this, container, "End Time", nameof(endTime));
var subcontainer = container.GenerateSubcontainer(3);
var overrideToggle = inspector.GenerateToggle(this, subcontainer, "Override Duration", nameof(isOverridingDuration));
var startTimeInputField = inspector.GenerateInputField(this, subcontainer, "Start Time", nameof(startTime));
var endTimeInputField = inspector.GenerateInputField(this, subcontainer, "End Time", nameof(endTime));
void SetInputFieldInteractable(bool interactable)
{

View File

@@ -94,33 +94,30 @@ namespace Ichni.RhythmGame
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Transform");
var subcontainer = container.GenerateSubcontainer(1);
var originalPosInputField =
inspector.GenerateVector3InputField(this, container, "Start Position", nameof(originalPosition));
inspector.GenerateVector3InputField(this, subcontainer, "Start Position", nameof(originalPosition));
var originalRotInputField =
inspector.GenerateVector3InputField(this, container, "Start Rotation", nameof(originalEulerAngles));
inspector.GenerateVector3InputField(this, subcontainer, "Start Rotation", nameof(originalEulerAngles));
var originalScaleInputField =
inspector.GenerateVector3InputField(this, container, "Start Scale", nameof(originalScale));
inspector.GenerateVector3InputField(this, subcontainer, "Start Scale", nameof(originalScale));
var currentPosText =
inspector.GenerateParameterText(this, container, "Current Position", nameof(currentPosition), true);
inspector.GenerateParameterText(this, subcontainer, "Current Position", nameof(currentPosition), true);
var currentRotText =
inspector.GenerateParameterText(this, container, "Current Rotation", nameof(currentEulerAngles), true);
inspector.GenerateParameterText(this, subcontainer, "Current Rotation", nameof(currentEulerAngles), true);
if (attachedGameElement is PathNode or Trail) // 如果是PathNode显示法线方向
{
var currentNormalText =
inspector.GenerateHintText(this, container, () => "Normal: " + attachedGameElement.transform.forward);
inspector.GenerateHintText(this, subcontainer, () => "Normal: " + attachedGameElement.transform.forward);
}
var currentScaleText =
inspector.GenerateParameterText(this, container, "Current Scale", nameof(currentScale), true);
inspector.GenerateParameterText(this, subcontainer, "Current Scale", nameof(currentScale), true);
originalPosInputField.AddListenerFunction(Refresh);
originalRotInputField.AddListenerFunction(Refresh);
originalScaleInputField.AddListenerFunction(Refresh);
//这玩意得放在最下面
container.SetDeviver(1);
}
public override void Refresh()