Files
ichni_Creator_Studio/Assets/Scripts/DynamicUI/Inspector/IHaveInspection.cs
SoulliesOfficial 4708da8318 uv
2025-07-15 05:00:31 -04:00

239 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections;
using System.Collections.Generic;
using Ichni;
using Ichni.Editor;
using Ichni.RhythmGame;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Profiling;
using Object = UnityEngine.Object;
namespace Ichni.Editor
{
public interface IHaveInspection
{
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,
string parameterName)
{
CompositeParameterWindow compositeParameterWindow =
Object.Instantiate(EditorManager.instance.basePrefabs.compositeParameterWindow,
EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
.GetComponent<CompositeParameterWindow>();
compositeParameterWindow.Initialize(baseElement, title, parameterName);
return compositeParameterWindow;
}
public GraphicalFlexibleFloatWindow GenerateGraphicalFlexibleFloatWindow(IBaseElement baseElement, string title, FlexibleFloat[] FlexibleFloats, string[] subTitle)
{
GraphicalFlexibleFloatWindow graphicalFlexibleFloatWindow = Object.Instantiate(EditorManager.instance.basePrefabs.graphicalFlexibleFloatWindow, EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
.GetComponent<GraphicalFlexibleFloatWindow>();
graphicalFlexibleFloatWindow.Initialize(baseElement, title, FlexibleFloats, subTitle);
return graphicalFlexibleFloatWindow;
}
public SampleWindow GenerateSampler(GameElement baseElement, string title)
{
SampleWindow sampler = Object.Instantiate(EditorManager.instance.basePrefabs.sampler, EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
.GetComponent<SampleWindow>();
sampler.Initialize(baseElement, title);
return sampler;
}
public DynamicUIContainer GenerateContainer(string titleText)
{
DynamicUIContainer container =
Object.Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, WindowRect)
.GetComponent<DynamicUIContainer>();
container.Initialize(titleText);
Containers.Add(container);
return container;
}
public DynamicUIContainer GenerateContainer()
{
DynamicUIContainer container =
Object.Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, WindowRect)
.GetComponent<DynamicUIContainer>();
Object.Destroy(container.title.gameObject);
Containers.Add(container);
return container;
}
public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title,
UnityAction function)
{
DynamicUIButton button = Object.Instantiate(EditorManager.instance.basePrefabs.button, subcontainer.rect)
.GetComponent<DynamicUIButton>();
button.SetText(title);
button.Initialize(baseElement, title, string.Empty);
button.ApplyFunction(function);
subcontainer.dynamicUIElements.Add(button);
return button;
}
public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title,
string parameterName)
{
DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, subcontainer.rect)
.GetComponent<DynamicUIToggle>();
toggle.Initialize(baseElement, title, parameterName);
subcontainer.dynamicUIElements.Add(toggle);
return toggle;
}
public DynamicUIInputField GenerateInputField(DynamicUISubcontainer subcontainer,
string title, string defaultText = "") //不与参数绑定的InputField
{
DynamicUIInputField inputField = Object
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
.GetComponent<DynamicUIInputField>();
inputField.Initialize(null, title, string.Empty);
inputField.SetDefaultValue(defaultText);
subcontainer.dynamicUIElements.Add(inputField);
return inputField;
}
public DynamicUIInputField GenerateInputField(IBaseElement baseElement,
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false) //与参数绑定的InputField
{
DynamicUIInputField inputField = Object
.Instantiate(EditorManager.instance.basePrefabs.inputField, subcontainer.rect)
.GetComponent<DynamicUIInputField>();
inputField.Initialize(baseElement, title, parameterName);
subcontainer.dynamicUIElements.Add(inputField);
return inputField;
}
public DynamicUIVector3InputField GenerateVector3InputField(DynamicUISubcontainer subcontainer, string title,
Vector3 defaultVector3 = default)
{
DynamicUIVector3InputField vector3InputField =
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, subcontainer.rect)
.GetComponent<DynamicUIVector3InputField>();
vector3InputField.Initialize(null, title, string.Empty);
vector3InputField.SetDefaultValue(defaultVector3);
subcontainer.dynamicUIElements.Add(vector3InputField);
return vector3InputField;
}
public DynamicUIVector3InputField GenerateVector3InputField(IBaseElement baseElement,
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false)
{
DynamicUIVector3InputField vector3InputField =
Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, subcontainer.rect)
.GetComponent<DynamicUIVector3InputField>();
vector3InputField.Initialize(baseElement, title, parameterName);
vector3InputField.SetAutoUpdate(isAutoUpdate);
subcontainer.dynamicUIElements.Add(vector3InputField);
return vector3InputField;
}
public DynamicUIVector2InputField GenerateVector2InputField(IBaseElement baseElement,
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false)
{
DynamicUIVector2InputField vector2InputField =
Object.Instantiate(EditorManager.instance.basePrefabs.vector2InputField, subcontainer.rect)
.GetComponent<DynamicUIVector2InputField>();
vector2InputField.Initialize(baseElement, title, parameterName);
vector2InputField.SetAutoUpdate(isAutoUpdate);
subcontainer.dynamicUIElements.Add(vector2InputField);
return vector2InputField;
}
public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title, string parameterName)
{
DynamicUIBaseColorPicker colorPicker = Object
.Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, subcontainer.rect)
.GetComponent<DynamicUIBaseColorPicker>();
colorPicker.Initialize(baseElement, title, parameterName);
subcontainer.dynamicUIElements.Add(colorPicker);
return colorPicker;
}
public DynamicUIEmissionColorPicker GenerateEmissionColorPicker(IBaseElement baseElement,
DynamicUISubcontainer subcontainer,
string title, string emissionEnabledName, string emissionColorName, string emissionIntensityName)
{
DynamicUIEmissionColorPicker colorPicker = Object
.Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, subcontainer.rect)
.GetComponent<DynamicUIEmissionColorPicker>();
colorPicker.Initialize(baseElement, title, emissionEnabledName, emissionColorName, emissionIntensityName);
subcontainer.dynamicUIElements.Add(colorPicker);
return colorPicker;
}
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string content)
{
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, subcontainer.rect)
.GetComponent<DynamicUIHintText>();
hintText.Initialize(baseElement, string.Empty, string.Empty);
hintText.SetContent(content);
subcontainer.dynamicUIElements.Add(hintText);
return hintText;
}
public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUISubcontainer subcontainer, Func<string> action)
{
DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, subcontainer.rect)
.GetComponent<DynamicUIHintText>();
hintText.Initialize(baseElement, string.Empty, string.Empty);
hintText.SetUpdatingContent(action);
subcontainer.dynamicUIElements.Add(hintText);
return hintText;
}
public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title, string parameterName, bool isAutoUpdate = false)
{
DynamicUIParameterText parameterText = Object
.Instantiate(EditorManager.instance.basePrefabs.parameterText, subcontainer.rect)
.GetComponent<DynamicUIParameterText>();
parameterText.Initialize(baseElement, title, parameterName);
parameterText.SetAutoUpdate(isAutoUpdate);
subcontainer.dynamicUIElements.Add(parameterText);
return parameterText;
}
public DynamicUIEnumDropdown GenerateDropdown(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title,
System.Type enumType, string parameterName)
{
DynamicUIEnumDropdown enumDropdown = Object
.Instantiate(EditorManager.instance.basePrefabs.enumDropdown, subcontainer.rect)
.GetComponent<DynamicUIEnumDropdown>();
enumDropdown.SetUpEnum(enumType);
enumDropdown.Initialize(baseElement, title, parameterName);
subcontainer.dynamicUIElements.Add(enumDropdown);
return enumDropdown;
}
public DynamicUIStringListDropdown GenerateDropdown(IBaseElement baseElement, DynamicUISubcontainer subcontainer,
string title,
List<string> stringList, string parameterName)
{
DynamicUIStringListDropdown stringListDropdown = Object
.Instantiate(EditorManager.instance.basePrefabs.stringListDropdown, subcontainer.rect)
.GetComponent<DynamicUIStringListDropdown>();
stringListDropdown.SetUpStringList(stringList);
stringListDropdown.Initialize(baseElement, title, parameterName);
subcontainer.dynamicUIElements.Add(stringListDropdown);
return stringListDropdown;
}
// 新增HSV色盘生成方法
public HsvDrawer GenerateHsvDrawer(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title, string parameterName)
{
HsvDrawer hsvDrawer = Object
.Instantiate(EditorManager.instance.basePrefabs.hsvDrawer, subcontainer.rect)
.GetComponent<HsvDrawer>();
hsvDrawer.Initialize(baseElement, title, parameterName);
subcontainer.dynamicUIElements.Add(hsvDrawer);
return hsvDrawer;
}
}
}