Ejemplo n.º 1
0
        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);
            }));
        }
Ejemplo n.º 2
0
        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();
                }
            }
        }
Ejemplo n.º 3
0
        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();
            }
        }