private string[] GetValidFunctionName(MBMethodStorage _instance) { if (_instance.Instance == null) { return(new string[0]); } return(_instance.Instance.GetPublicInstanceMethods().FilterAndGetNames(methodInfo => { var parameters = methodInfo.GetParameters(); return parameters.Length == 1 && typeof(Color).IsAssignableFrom(parameters[0].ParameterType); })); }
private void DrawMethodField() { MBMethodStorage instance = GetInstance <MBMethodStorage>(); if (instance.Instance != null) { string[] functionNames = GetValidFunctionName(instance); int currentFunctionSelected = Array.FindIndex(functionNames, s => s == instance.MethodName); int selectedFunctionIndex = EditorGUI.Popup(GetLineDrawingRect(), "Function", currentFunctionSelected, functionNames); string functionValue = selectedFunctionIndex == -1 ? null : functionNames[selectedFunctionIndex]; if (functionValue != instance.MethodName) { instance.MethodName = functionValue; OnInstanceChanged(); } } }
private void DrawComponentField() { MonoBehaviour owner = GetInstanceOwner <MonoBehaviour>(); MBMethodStorage instance = GetInstance <MBMethodStorage>(); Component[] components = owner.gameObject.GetComponents <Component>(); string[] componentsNames = GetValidComponentNames(components); int objectSelectedIndex = Array.FindIndex(components, val => val == instance.Instance); //Debug.Log($"Line Drawing = {GetLineDrawingRect()}"); int selectedComponent = EditorGUI.Popup(GetLineDrawingRect(), "Component", objectSelectedIndex, componentsNames); Object componentValue = selectedComponent == -1 ? null : components[selectedComponent]; if (componentValue != instance.Instance) { instance.Instance = componentValue; OnInstanceChanged(); } }