重构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

@@ -14,6 +14,7 @@ namespace Ichni.Editor
{
public RectTransform WindowRect { get; set; }
public List<DynamicUIContainer> Containers { get; set; }
public Dictionary<string, DynamicUISubcontainer> MarkedSubcontainers { get; set; }
public Dictionary<string, DynamicUIElement> MarkedElements { get; set; }
public CompositeParameterWindow GenerateCompositeParameterWindow(IBaseElement baseElement, string title,
@@ -33,12 +34,12 @@ namespace Ichni.Editor
graphicalFlexibleFloatWindow.Initialize(baseElement, title, FlexibleFloats, subTitle);
return graphicalFlexibleFloatWindow;
}
public DynamicUIContainer GenerateContainer(string title)
public DynamicUIContainer GenerateContainer(string titleText)
{
DynamicUIContainer container =
Object.Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, WindowRect)
.GetComponent<DynamicUIContainer>();
container.title.text = title;
container.Initialize(titleText);
Containers.Add(container);
return container;
}
@@ -53,154 +54,154 @@ namespace Ichni.Editor
return container;
}
public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUIContainer container, string buttonText,
UnityAction function, string title = "null")
public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title,
UnityAction function)
{
DynamicUIButton button = Object.Instantiate(EditorManager.instance.basePrefabs.button, container.rect)
DynamicUIButton button = Object.Instantiate(EditorManager.instance.basePrefabs.button, subcontainer.rect)
.GetComponent<DynamicUIButton>();
button.SetText(buttonText, title != "null");
button.SetText(title);
button.Initialize(baseElement, title, string.Empty);
button.ApplyFunction(function);
container.dynamicUIElements.Add(button);
subcontainer.dynamicUIElements.Add(button);
return button;
}
public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUIContainer container, string title,
public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title,
string parameterName)
{
DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, container.rect)
DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, subcontainer.rect)
.GetComponent<DynamicUIToggle>();
toggle.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(toggle);
subcontainer.dynamicUIElements.Add(toggle);
return toggle;
}
public DynamicUIInputField GenerateInputField(DynamicUIContainer container,
public DynamicUIInputField GenerateInputField(DynamicUISubcontainer subcontainer,
string title, string defaultText = "") //不与参数绑定的InputField
{
DynamicUIInputField inputField = Object
.Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
.GetComponent<DynamicUIInputField>();
inputField.Initialize(null, title, string.Empty);
inputField.SetDefaultValue(defaultText);
container.dynamicUIElements.Add(inputField);
subcontainer.dynamicUIElements.Add(inputField);
return inputField;
}
public DynamicUIInputField GenerateInputField(IBaseElement baseElement,
DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false) //与参数绑定的InputField
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false) //与参数绑定的InputField
{
DynamicUIInputField inputField = Object
.Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
.GetComponent<DynamicUIInputField>();
inputField.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(inputField);
subcontainer.dynamicUIElements.Add(inputField);
return inputField;
}
public DynamicUIVector3InputField GenerateVector3InputField(DynamicUIContainer container, string title,
public DynamicUIVector3InputField GenerateVector3InputField(DynamicUISubcontainer subcontainer, string title,
Vector3 defaultVector3 = default)
{
DynamicUIVector3InputField vector3InputField =
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect)
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, subcontainer.rect)
.GetComponent<DynamicUIVector3InputField>();
vector3InputField.Initialize(null, title, string.Empty);
vector3InputField.SetDefaultValue(defaultVector3);
container.dynamicUIElements.Add(vector3InputField);
subcontainer.dynamicUIElements.Add(vector3InputField);
return vector3InputField;
}
public DynamicUIVector3InputField GenerateVector3InputField(IBaseElement baseElement,
DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false)
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false)
{
DynamicUIVector3InputField vector3InputField =
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect)
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, subcontainer.rect)
.GetComponent<DynamicUIVector3InputField>();
vector3InputField.Initialize(baseElement, title, parameterName);
vector3InputField.SetAutoUpdate(isAutoUpdate);
container.dynamicUIElements.Add(vector3InputField);
subcontainer.dynamicUIElements.Add(vector3InputField);
return vector3InputField;
}
public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUIContainer container,
public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title, string parameterName)
{
DynamicUIBaseColorPicker colorPicker = Object
.Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, subcontainer.rect)
.GetComponent<DynamicUIBaseColorPicker>();
colorPicker.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(colorPicker);
subcontainer.dynamicUIElements.Add(colorPicker);
return colorPicker;
}
public DynamicUIEmissionColorPicker GenerateEmissionColorPicker(IBaseElement baseElement,
DynamicUIContainer container,
DynamicUISubcontainer subcontainer,
string title, string emissionEnabledName, string emissionColorName, string emissionIntensityName)
{
DynamicUIEmissionColorPicker colorPicker = Object
.Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, subcontainer.rect)
.GetComponent<DynamicUIEmissionColorPicker>();
colorPicker.Initialize(baseElement, title, emissionEnabledName, emissionColorName, emissionIntensityName);
container.dynamicUIElements.Add(colorPicker);
subcontainer.dynamicUIElements.Add(colorPicker);
return colorPicker;
}
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container,
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string content)
{
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect)
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, subcontainer.rect)
.GetComponent<DynamicUIHintText>();
hintText.Initialize(baseElement, string.Empty, string.Empty);
hintText.SetContent(content);
container.dynamicUIElements.Add(hintText);
subcontainer.dynamicUIElements.Add(hintText);
return hintText;
}
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, Func<string> action)
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUISubcontainer subcontainer, Func<string> action)
{
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect)
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, subcontainer.rect)
.GetComponent<DynamicUIHintText>();
hintText.Initialize(baseElement, string.Empty, string.Empty);
hintText.SetUpdatingContent(action);
container.dynamicUIElements.Add(hintText);
subcontainer.dynamicUIElements.Add(hintText);
return hintText;
}
public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUIContainer container,
public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title, string parameterName, bool isAutoUpdate = false)
{
DynamicUIParameterText parameterText = Object
.Instantiate(EditorManager.instance.basePrefabs.parameterText, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.parameterText, subcontainer.rect)
.GetComponent<DynamicUIParameterText>();
parameterText.Initialize(baseElement, title, parameterName);
parameterText.SetAutoUpdate(isAutoUpdate);
container.dynamicUIElements.Add(parameterText);
subcontainer.dynamicUIElements.Add(parameterText);
return parameterText;
}
public DynamicUIEnumDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container,
public DynamicUIEnumDropdown GenerateDropdown(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title,
System.Type enumType, string parameterName)
{
DynamicUIEnumDropdown enumDropdown = Object
.Instantiate(EditorManager.instance.basePrefabs.enumDropdown, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.enumDropdown, subcontainer.rect)
.GetComponent<DynamicUIEnumDropdown>();
enumDropdown.SetUpEnum(enumType);
enumDropdown.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(enumDropdown);
subcontainer.dynamicUIElements.Add(enumDropdown);
return enumDropdown;
}
public DynamicUIStringListDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container,
public DynamicUIStringListDropdown GenerateDropdown(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title,
List<string> stringList, string parameterName)
{
DynamicUIStringListDropdown stringListDropdown = Object
.Instantiate(EditorManager.instance.basePrefabs.stringListDropdown, container.rect)
.Instantiate(EditorManager.instance.basePrefabs.stringListDropdown, subcontainer.rect)
.GetComponent<DynamicUIStringListDropdown>();
stringListDropdown.SetUpStringList(stringList);
stringListDropdown.Initialize(baseElement, title, parameterName);
container.dynamicUIElements.Add(stringListDropdown);
subcontainer.dynamicUIElements.Add(stringListDropdown);
return stringListDropdown;
}
}