using System; using System.Collections.Generic; using UnityEngine; using UnityEditor; namespace GameplayIngredients.Editor { partial class WelcomeScreen : EditorWindow { void OnSetupGUI() { GUILayout.Label("First Time Setup", EditorStyles.boldLabel); using (new GUILayout.VerticalScope(Styles.helpBox)) { pages[currentPage].Invoke(); GUILayout.FlexibleSpace(); using (new GUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); EditorGUI.BeginDisabledGroup(currentPage == 0); if (GUILayout.Button("Back")) { currentPage--; } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(currentPage == pages.Length - 1); if (GUILayout.Button("Next")) { currentPage++; } EditorGUI.EndDisabledGroup(); } } } public int currentPage = 0; public Action[] pages = new Action[] { WelcomePage, SettingAssetPage, #if ENABLE_INPUT_SYSTEM InputSystemPage, #endif UnpackPackagePage }; static void WelcomePage() { GUILayout.Label("Welcome to Gameplay Ingredients !", Styles.title); GUILayout.Space(12); GUILayout.Label(@"This wizard will help you set up your project so you can use and customize scripts.", Styles.body); } static void InputSystemPage() { GUILayout.Label("Input System package detected", Styles.title); GUILayout.Space(12); GUILayout.Label(@"It seems that you have the Input System configured for your project. In order to make it work with the UI Event Manager, we can create a configured prefab for you.", Styles.body); GUILayout.Space(12); if (GUILayout.Button("Create/Replace", GUILayout.Width(180), GUILayout.Height(32))) { if(AssetDatabase.LoadAssetAtPath("Assets/Resources/UIEventManager.prefab") == null || EditorUtility.DisplayDialog("Prefab already present", "UIEventManager already exists, overwrite?", "Yes", "No")) { var go = UIEventManager.CreateManagerObject(); var prefab = PrefabUtility.SaveAsPrefabAsset(go, "Assets/Resources/UIEventManager.prefab"); DestroyImmediate(go); Selection.activeObject = prefab; } } } public const string kSettingsAssetPath = "Assets/Resources/GameplayIngredientsSettings.asset"; static void SettingAssetPage() { GUILayout.Label("Creating a Settings Asset", Styles.title); GUILayout.Space(12); GUILayout.Label(@"GameplayIngredients is a framework that comes with a variety of features : these can be configured in a GameplayIngredientsSettings asset. This asset needs to be stored in a Resources folder. While this is not mandatory we advise you to create it in order to be able to modify it for your project's needs. ", Styles.body); GUILayout.Space(16); using (new GUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); if (GUILayout.Button("Create GameplayIngredientsSettings Asset")) { bool create = true; if(System.IO.File.Exists(Application.dataPath +"/../"+ kSettingsAssetPath)) { if (!EditorUtility.DisplayDialog("GameplayIngredientsSettings Asset Overwrite", "A GameplayIngredientsSettings Asset already exists, do you want to overwrite it?", "Yes", "No")) create = false; } if(create) { if(!System.IO.Directory.Exists(Application.dataPath+"/Resources")) AssetDatabase.CreateFolder("Assets", "Resources"); GameplayIngredientsSettings asset = Instantiate(GameplayIngredientsSettings.defaultSettings); AssetDatabase.CreateAsset(asset, kSettingsAssetPath); Selection.activeObject = asset; } } } } static void UnpackPackagePage() { GUILayout.Label("Unpacking Starter Content", Styles.title); GUILayout.Space(12); GUILayout.Label(@"In order to customize your project, you can create default assets that you will be able to customize. Please select a package depending on your project's render loop. If you do not know about render loops, you will probably need to install the Built-in Renderer Package.", Styles.body); GUILayout.Space(16); using (new GUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); using (new GUILayout.VerticalScope()) { if (GUILayout.Button("Built-in Renderer")) AssetDatabase.ImportPackage("Packages/net.peeweek.gameplay-ingredients/StarterAssets/GameplayIngredients-Starter-BuiltInRenderer.unitypackage", false); if (GUILayout.Button("HD Render Pipeline")) AssetDatabase.ImportPackage("Packages/net.peeweek.gameplay-ingredients/StarterAssets/GameplayIngredients-Starter-HDRP.unitypackage", false); if (GUILayout.Button("Universal Render Pipeline")) AssetDatabase.ImportPackage("Packages/net.peeweek.gameplay-ingredients/StarterAssets/GameplayIngredients-Starter-URP.unitypackage", false); } } } } }