Пример #1
0
        public static List <AddOnAttribute> GetAddonsByTarget(AddOnTarget target)
        {
            List <AddOnAttribute> ResultAddons = new List <AddOnAttribute>();

            Type[] ActiveBehaviours = GetAllSubTypes(typeof(MonoBehaviour));

            foreach (Type Type in ActiveBehaviours)
            {
                object[] Attributes = Type.GetCustomAttributes(typeof(AddOnAttribute), false);

                if (Attributes != null)
                {
                    for (int i = 0; i < Attributes.Length; i++)
                    {
                        if ((AddOnAttribute)Attributes[i] != null)
                        {
                            if (((AddOnAttribute)Attributes[i]).Target == target)
                            {
                                ((AddOnAttribute)Attributes[i]).Behaviour = Type;

                                ResultAddons.Add((AddOnAttribute)Attributes[i]);
                            }
                        }
                    }
                }
            }

            return(ResultAddons);
        }
Пример #2
0
 public AddOnAttribute(string name, string author, string description, AddOnTarget target)
 {
     Name        = name;
     Author      = author;
     Description = description;
     Target      = target;
 }
Пример #3
0
        public static void LoadAddons(MonoBehaviour target, AddOnTarget addOnTarget)
        {
            Addons = AddOnHelper.GetAddonsByTarget(addOnTarget);

            foreach (AddOnBehaviour Addon in target.GetComponentsInChildren <AddOnBehaviour>())
            {
                if (Addon != null)
                {
                    Addon.hideFlags = HideFlags.HideInInspector;
                }
            }
        }
Пример #4
0
        public static void DrawAddons(MonoBehaviour target, AddOnTarget addOnTarget)
        {
            if (Addons.Count == 0)
            {
                GUILayout.Label("No Add-On(s) are available for this component.", EditorStyles.miniLabel);
            }
            else
            {
                foreach (AddOnAttribute Addon in Addons)
                {
                    if (Addon.Target == addOnTarget)
                    {
                        GUILayout.BeginVertical("box");

                        GUILayout.BeginHorizontal();

                        GUILayout.BeginHorizontal();

                        GUILayout.Space(3);

                        GUILayout.Label(Addon.Name, EditorStyles.label);

                        GUILayout.FlexibleSpace();

                        GUI.color = GetEditorColor;

                        if (GUILayout.Button("About This", GUILayout.Width(100)))
                        {
                            EditorUtility.DisplayDialog("Easy Build System - Information", "Name : " + Addon.Name
                                                        + "\nAuthor : " + Addon.Author, "Ok");
                        }

                        if (target.gameObject.GetComponent(Addon.Behaviour) == null)
                        {
                            GUI.color = new Color(0f, 1.5f, 0f);

                            if (GUILayout.Button("Enable Add-On", GUILayout.Width(130)))
                            {
                                if (target.gameObject.GetComponent(Addon.Behaviour) != null)
                                {
                                    return;
                                }

                                Component Com = target.gameObject.AddComponent(Addon.Behaviour);

                                Com.hideFlags = HideFlags.HideInInspector;
                            }
                        }
                        else
                        {
                            GUI.color = new Color(2f, 0f, 0f);

                            if (GUILayout.Button("Disable Add-On", GUILayout.Width(130)))
                            {
                                try
                                {
                                    DestroyImmediate(target.gameObject.GetComponent(Addon.Behaviour));

                                    break;
                                }
                                catch { }
                            }
                        }

                        GUILayout.EndHorizontal();

                        GUILayout.EndHorizontal();

                        GUI.color = Color.white;

                        if (target.gameObject.GetComponent(Addon.Behaviour) != null)
                        {
                            EditorGUILayout.HelpBox(Addon.Description, MessageType.Info);

                            GUILayout.BeginHorizontal();

                            GUILayout.Space(13);

                            GUILayout.BeginVertical();

                            UnityEditor.Editor AddonEditor = UnityEditor.Editor.CreateEditor(target.gameObject.GetComponent(Addon.Behaviour));

                            AddonEditor.DrawDefaultInspector();

                            GUILayout.EndVertical();

                            GUILayout.EndHorizontal();
                        }

                        GUILayout.EndVertical();
                    }
                }
            }
        }