示例#1
0
    private void CreateButton <T>(MenuSettings <T> settings) where T : UnityEngine.Object
    {
        EditorGUILayout.BeginHorizontal();
        T[]      objs  = FindObjectsOfType <T>();
        string[] names = objs.Select(x => x.name).ToArray();
        string   msg   = "";

        if (ArrayUtility.Contains(names, settings.name))
        {
            msg = "Duplicate name"; GUI.enabled = false;
        }
        if (settings.name == "")
        {
            msg = "Empty Name"; GUI.enabled = false;
        }
        EditorGUILayout.LabelField(msg, GUILayout.Width(197));
        if (GUILayout.Button("Create", LayoutSettings.buttonOp))
        {
            GameObject obj = new GameObject(settings.name);
            //Controller.
            if (typeof(T) == typeof(ControllerOutput))
            {
                //Create Controller.
                ControllerObject cont = (ControllerObject)obj.AddComponent(System.Type.GetType(string.Format("Gimbl.{0}", contType.ToString())));
                cont.InitiateController();
                //Create general Output Object and link.
                ControllerOutput contOut = obj.AddComponent <ControllerOutput>();
                contOut.master = cont;
                // Select created.
                settings.selectedObj = contOut as T;
            }
            //Actor.
            if (typeof(T) == typeof(ActorObject))
            {
                ActorObject act = obj.AddComponent <ActorObject>();
                act.InitiateActor(actorModels[selectedModel], trackCam);
                settings.selectedObj = act as T;
            }
            //Path.
            if (typeof(T) == typeof(PathCreator))
            {
                CreatePath(settings as MenuSettings <PathCreator>, obj);
            }
            settings.name = "";
        }
        EditorGUILayout.EndHorizontal();
    }