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."); } }
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(); } }