Example #1
0
        public override void Setup(Agent agent)
        {
            // TODO: Better way to find the GOAP Planner
            plannerManager = GameObject.Find("GOAPPlannerManager").GetComponent <GOAPPlannerManager>();

            if (plannerManager == null)
            {
                Debug.LogError("Setting up GOAPPlannerType and can't find GOAPPlannerManager in the scene.  Please add it to an empty object.");
            }
        }
Example #2
0
        private void DoSetup()
        {
            Debug.Log("Starting Total AI Setup:");


            if (createFolders)
            {
                if (!defaultSOFolderRoot.EndsWith(Path.DirectorySeparatorChar.ToString()))
                {
                    defaultSOFolderRoot += Path.DirectorySeparatorChar;
                }
                Debug.Log("Creating SO Folders");
                if (!Directory.Exists(defaultSOFolderRoot))
                {
                    Debug.Log("Creating Root Directory: " + defaultSOFolderRoot);
                    Directory.CreateDirectory(defaultSOFolderRoot);

                    Debug.Log("Creating Sub Directories");
                    foreach (string typeName in allTypeNameDirectories)
                    {
                        Directory.CreateDirectory(defaultSOFolderRoot + typeName);
                    }
                }
                else
                {
                    Debug.Log("Root Directory: " + defaultSOFolderRoot + " Already Exists.  NOT creating any folders.");
                }

                AssetDatabase.Refresh();
            }

            if (createPrefabsFolders)
            {
                if (!defaultPrefabsFolderRoot.EndsWith(Path.DirectorySeparatorChar.ToString()))
                {
                    defaultPrefabsFolderRoot += Path.DirectorySeparatorChar;
                }
                Debug.Log("Creating Prefabs Folders");
                if (!Directory.Exists(defaultPrefabsFolderRoot))
                {
                    Debug.Log("Creating Root Directory: " + defaultPrefabsFolderRoot);
                    Directory.CreateDirectory(defaultPrefabsFolderRoot);

                    Debug.Log("Creating Sub Directories");
                    Directory.CreateDirectory(defaultPrefabsFolderRoot + "Agents");
                    Directory.CreateDirectory(defaultPrefabsFolderRoot + "WorldObjects");
                    Directory.CreateDirectory(defaultPrefabsFolderRoot + "AgentEvents");
                }
                else
                {
                    Debug.Log("Root Directory: " + defaultPrefabsFolderRoot + " Already Exists.  NOT creating any folders.");
                }

                AssetDatabase.Refresh();
            }


            if (createTotalAIManager)
            {
                GameObject manager = null;
                TotalAIManager totalAIManager = FindObjectOfType<TotalAIManager>();
                if (totalAIManager != null)
                {
                    Debug.LogError("TotalAIManager already exists in the Scene.  NOT creating a new one.");
                    manager = totalAIManager.gameObject;
                }
                else
                {
                    manager = new GameObject("TotalAIManager", typeof(TotalAIManager));
                    Debug.Log("Created TotalAIManager in the Scene.");
                }

                if (createTotalAISettings)
                {
                    if (!defaultSettingsPath.EndsWith(Path.DirectorySeparatorChar.ToString()) ||
                        !defaultSettingsPath.EndsWith(Path.AltDirectorySeparatorChar.ToString()))
                    {
                        defaultSettingsPath += Path.DirectorySeparatorChar;
                    }
                    if (!Directory.Exists(defaultSettingsPath))
                    {
                        Debug.Log("Creating Directory: " + defaultSettingsPath);
                        Directory.CreateDirectory(defaultSettingsPath);
                        AssetDatabase.Refresh();
                    }
                    else
                    {
                        Debug.Log("Directory Exists: " + defaultSettingsPath);
                    }

                    if (File.Exists(defaultSettingsPath + defaultSettingsName + ".asset"))
                    {
                        Debug.Log("Total AI Settings file already exists.  NOT overwritting it.");
                    }
                    else
                    {
                        TotalAISettings settings = CreateInstance<TotalAISettings>();
                        AssetDatabase.CreateAsset(settings, defaultSettingsPath + defaultSettingsName + ".asset");
                        manager.GetComponent<TotalAIManager>().settings = settings;

                        // TODO: Add in defaults - maybe search for commone ICTs and OCTs
                        settings.scriptableObjectsDirectory = defaultSOFolderRoot.Remove(defaultSOFolderRoot.Length - 1, 1);
                        settings.prefabsDirectory = defaultPrefabsFolderRoot.Remove(defaultPrefabsFolderRoot.Length - 1, 1);
                        settings.movementTypes = new List<MovementType>();
                        settings.for2D = for2D;

                        EditorUtility.SetDirty(settings);
                        AssetDatabase.SaveAssets();
                        AssetDatabase.Refresh();
                        Debug.Log("Created '" + defaultSettingsPath + defaultSettingsName + ".asset' and attached it to the TotalAIManager.");
                    }
                }
            }

            if (createTimeManager)
            {
                TimeManager timeManager = FindObjectOfType<TimeManager>();
                if (timeManager != null)
                {
                    Debug.Log("TimeManager already exists in the Scene.  NOT creating a new one.");
                }
                else
                {
                    new GameObject("TimeManager", typeof(TimeManager));
                    Debug.Log("Created TimeManager in the Scene.");
                }
            }

            if (createGOAPManager)
            {
                GOAPPlannerManager manager = FindObjectOfType<GOAPPlannerManager>();
                if (manager != null)
                {
                    Debug.Log("GOAPPlannerManager already exists in the Scene.  NOT creating a new one.");
                }
                else
                {
                    new GameObject("GOAPPlannerManager", typeof(GOAPPlannerManager));
                    Debug.Log("Created GOAPPlannerManager in the Scene.");
                }
            }

            if (createLayers)
            {
                Debug.Log("Creating layers: Ground, Agent, WorldObject, AgentEvent, Inventory");
                List<string> layersToCreate = new List<string>() { "Ground", "Agent", "WorldObject", "AgentEvent", "Inventory" };
                CreateLayers(layersToCreate);
            }

            if (createScriptableObjects)
            {
                CreateCoreScriptableObjects();
            }
        }