using System.Collections; using System.Collections.Generic; using Ichni; using Ichni.Editor; using Ichni.RhythmGame; using UnityEngine; using UnityEngine.Events; namespace Ichni.Editor { public interface IHaveInspection { public RectTransform WindowRect { get; set; } public List Containers { 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()) .GetComponent(); 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()) .GetComponent(); graphicalFlexibleFloatWindow.Initialize(baseElement, title, FlexibleFloats, subTitle); return graphicalFlexibleFloatWindow; } public DynamicUIContainer GenerateContainer(string title) { DynamicUIContainer container = Object.Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, WindowRect) .GetComponent(); container.title.text = title; Containers.Add(container); return container; } public DynamicUIContainer GenerateContainer() { DynamicUIContainer container = Object.Instantiate(EditorManager.instance.basePrefabs.dynamicUIContainer, WindowRect) .GetComponent(); Object.Destroy(container.title.gameObject); Containers.Add(container); return container; } public DynamicUIButton GenerateButton(IBaseElement baseElement, DynamicUIContainer container, string buttonText, UnityAction function, string title = "null") { DynamicUIButton button = Object.Instantiate(EditorManager.instance.basePrefabs.button, container.rect) .GetComponent(); button.SetText(buttonText, title != "null"); button.Initialize(baseElement, title, string.Empty); button.ApplyFunction(function); container.dynamicUIElements.Add(button); return button; } public DynamicUIToggle GenerateToggle(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName) { DynamicUIToggle toggle = Object.Instantiate(EditorManager.instance.basePrefabs.toggle, container.rect) .GetComponent(); toggle.Initialize(baseElement, title, parameterName); container.dynamicUIElements.Add(toggle); return toggle; } public DynamicUIInputField GenerateInputField(DynamicUIContainer container, string title, string defaultText = "") //不与参数绑定的InputField { DynamicUIInputField inputField = Object .Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect) .GetComponent(); inputField.Initialize(null, title, string.Empty); inputField.SetDefaultValue(defaultText); container.dynamicUIElements.Add(inputField); return inputField; } public DynamicUIInputField GenerateInputField(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false) //与参数绑定的InputField { DynamicUIInputField inputField = Object .Instantiate(EditorManager.instance.basePrefabs.inputField, container.rect) .GetComponent(); inputField.Initialize(baseElement, title, parameterName); container.dynamicUIElements.Add(inputField); return inputField; } public DynamicUIVector3InputField GenerateVector3InputField(DynamicUIContainer container, string title, Vector3 defaultVector3 = default) { DynamicUIVector3InputField vector3InputField = Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect) .GetComponent(); vector3InputField.Initialize(null, title, string.Empty); vector3InputField.SetDefaultValue(defaultVector3); container.dynamicUIElements.Add(vector3InputField); return vector3InputField; } public DynamicUIVector3InputField GenerateVector3InputField(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false) { DynamicUIVector3InputField vector3InputField = Object.Instantiate(EditorManager.instance.basePrefabs.vector3InputField, container.rect) .GetComponent(); vector3InputField.Initialize(baseElement, title, parameterName); vector3InputField.SetAutoUpdate(isAutoUpdate); container.dynamicUIElements.Add(vector3InputField); return vector3InputField; } public DynamicUIBaseColorPicker GenerateBaseColorPicker(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName) { DynamicUIBaseColorPicker colorPicker = Object .Instantiate(EditorManager.instance.basePrefabs.baseColorPicker, container.rect) .GetComponent(); colorPicker.Initialize(baseElement, title, parameterName); container.dynamicUIElements.Add(colorPicker); return colorPicker; } public DynamicUIEmissionColorPicker GenerateEmissionColorPicker(IBaseElement baseElement, DynamicUIContainer container, string title, string emissionEnabledName, string emissionColorName, string emissionIntensityName) { DynamicUIEmissionColorPicker colorPicker = Object .Instantiate(EditorManager.instance.basePrefabs.emissionColorPicker, container.rect) .GetComponent(); colorPicker.Initialize(baseElement, title, emissionEnabledName, emissionColorName, emissionIntensityName); container.dynamicUIElements.Add(colorPicker); return colorPicker; } public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, string content) { DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect) .GetComponent(); hintText.Initialize(baseElement, string.Empty, string.Empty); hintText.SetContent(content); container.dynamicUIElements.Add(hintText); return hintText; } public DynamicUIHintText GenerateHintText(IBaseElement baseElement, DynamicUIContainer container, System.Func action) { DynamicUIHintText hintText = Object.Instantiate(EditorManager.instance.basePrefabs.hintText, container.rect) .GetComponent(); hintText.Initialize(baseElement, string.Empty, string.Empty); hintText.SetUpdatingContent(action); container.dynamicUIElements.Add(hintText); return hintText; } public DynamicUIParameterText GenerateParameterText(IBaseElement baseElement, DynamicUIContainer container, string title, string parameterName, bool isAutoUpdate = false) { DynamicUIParameterText parameterText = Object .Instantiate(EditorManager.instance.basePrefabs.parameterText, container.rect) .GetComponent(); parameterText.Initialize(baseElement, title, parameterName); parameterText.SetAutoUpdate(isAutoUpdate); container.dynamicUIElements.Add(parameterText); return parameterText; } public DynamicUIEnumDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container, string title, System.Type enumType, string parameterName) { DynamicUIEnumDropdown enumDropdown = Object .Instantiate(EditorManager.instance.basePrefabs.enumDropdown, container.rect) .GetComponent(); enumDropdown.SetUpEnum(enumType); enumDropdown.Initialize(baseElement, title, parameterName); container.dynamicUIElements.Add(enumDropdown); return enumDropdown; } public DynamicUIStringListDropdown GenerateDropdown(IBaseElement baseElement, DynamicUIContainer container, string title, List stringList, string parameterName) { DynamicUIStringListDropdown stringListDropdown = Object .Instantiate(EditorManager.instance.basePrefabs.stringListDropdown, container.rect) .GetComponent(); stringListDropdown.SetUpStringList(stringList); stringListDropdown.Initialize(baseElement, title, parameterName); container.dynamicUIElements.Add(stringListDropdown); return stringListDropdown; } } }