private void OnGUI() { EditorStaticMethods.ShowFolderAndAskIfCreateNew(ref selectedFolderRef, ref createFolder); GUILayout.Space(12); float oldWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth *= 1.5f; ShowWeaponSetCreationParameters(selectedFolderRef, ref newWeaponName, createFolder, ref createLinkedObject, ref newWeaponCreationParameters); EditorGUIUtility.labelWidth = oldWidth; if (selectedFolderRef != null) { if (GUILayout.Button("Create the new Weapon : \"" + newWeaponName + "\" !")) { string finalFolderPath = selectedFolderRef.GetFolderPath(); if (createFolder) { string folderCreationPath = finalFolderPath; finalFolderPath = AssetDatabase.GenerateUniqueAssetPath(finalFolderPath + "/" + newWeaponName + " Set"); Debug.Log("Create Folder \"" + newWeaponName + "Set" + "\" in \"" + folderCreationPath + "\""); AssetDatabase.CreateFolder(folderCreationPath, newWeaponName + " Set"); } WeaponScript newWeaponPrefab = null; if (createLinkedObject) { WeaponScript newWeapon = WeaponCreationParameters.ComposeWeapon(newWeaponCreationParameters, newWeaponName); newWeaponPrefab = EditorStaticMethods.CreateWeaponObjectInFolder(finalFolderPath, newWeapon); } WeaponParameters newWeaponParameters = null; if (newWeaponPrefab != null) { newWeaponParameters = EditorStaticMethods.CreateWeaponSetInFolder(finalFolderPath, newWeaponName, newWeaponPrefab); } else { newWeaponParameters = EditorStaticMethods.CreateWeaponSetInFolder(finalFolderPath, newWeaponName); } if (newWeaponPrefab != null) { Selection.activeObject = newWeaponPrefab; EditorGUIUtility.PingObject(newWeaponPrefab); // PrefabUtility.LoadPrefabContents(AssetDatabase.GetAssetPath(newWeaponPrefab.GetInstanceID())); } else if (newWeaponParameters != null) { Selection.activeObject = newWeaponParameters; EditorGUIUtility.PingObject(newWeaponParameters); } } } }
private void OnGUI() { EditorStaticMethods.ShowFolderAndAskIfCreateNew(ref selectedFolderRef, ref createFolder); float oldWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth *= 1.5f; GUILayout.Space(8); GUILayout.Label("Enemy Parameters", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); newEnemyName = EditorGUILayout.TextField("New Enemy Name", newEnemyName); if (EditorGUI.EndChangeCheck()) { newWeaponName = newEnemyName + " Weapon"; } enemyCreationParameters.enemyIdentifyingColor = EditorGUILayout.ColorField("Enemy Identifying Color", enemyCreationParameters.enemyIdentifyingColor); enemyCreationParameters.lifeAmount = EditorGUILayout.IntField("Life Amount", enemyCreationParameters.lifeAmount); enemyCreationParameters.aimingType = (EnemyAimingType)EditorGUILayout.EnumPopup(new GUIContent("Aiming Type"), enemyCreationParameters.aimingType); GUILayout.Space(8); GUILayout.Label("Linked Weapon", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); createLinkedWeaponParameters = EditorGUILayout.Toggle("Create Linked Weapon Parameters", createLinkedWeaponParameters); if (EditorGUI.EndChangeCheck()) { newWeaponName = newEnemyName + " Weapon"; } if (createLinkedWeaponParameters) { EditorGUI.indentLevel++; GUILayout.BeginVertical("box"); WeaponSetCreationWindow.ShowWeaponSetCreationParameters(selectedFolderRef, ref newWeaponName, false, ref createLinkedWeaponObject, ref newWeaponCreationParameters); EditorGUI.indentLevel--; GUILayout.EndVertical(); } GUILayout.Space(16); if (selectedFolderRef != null) { if (GUILayout.Button("Create the new Enemy : \"" + newEnemyName + "\" !")) { string finalFolderPath = selectedFolderRef.GetFolderPath(); if (createFolder) { string folderCreationPath = finalFolderPath; finalFolderPath = AssetDatabase.GenerateUniqueAssetPath(finalFolderPath + "/" + newEnemyName + " Set"); AssetDatabase.CreateFolder(folderCreationPath, newEnemyName + " Set"); } EnemySpaceShipScript newEnemyTempObj = EnemyCreationParameters.ComposeEnemy(enemyCreationParameters, newEnemyName); EnemySpaceShipScript newEnemyPrefab = EditorStaticMethods.CreateEnemyPrefabInFolder(finalFolderPath, newEnemyTempObj); if (newEnemyPrefab == null) { Debug.LogError("Couldn't create enemy Set"); return; } WeaponScript newWeaponPrefab = null; if (createLinkedWeaponObject) { WeaponScript newWeapon = WeaponCreationParameters.ComposeWeapon(newWeaponCreationParameters, newWeaponName); newWeaponPrefab = EditorStaticMethods.CreateWeaponObjectInFolder(finalFolderPath, newWeapon); } WeaponParameters newWeaponParameters = null; if (newWeaponPrefab != null) { newWeaponParameters = EditorStaticMethods.CreateWeaponSetInFolder(finalFolderPath, newWeaponName, newWeaponPrefab); } else { newWeaponParameters = EditorStaticMethods.CreateWeaponSetInFolder(finalFolderPath, newWeaponName); } newEnemyPrefab.GetShootingSystem.SetWeaponParameters(newWeaponParameters); Selection.activeObject = newEnemyPrefab; EditorGUIUtility.PingObject(newEnemyPrefab); #region Library //LevelPrefabsLibrary enemiesLibrary = AssetDatabase.LoadAssetAtPath("Assets/Resources/Level Prefabs Library.asset", typeof(LevelPrefabsLibrary)) as LevelPrefabsLibrary; ScriptableObject library = Resources.Load("Level Prefabs Library") as ScriptableObject; LevelPrefabsLibrary prefabsLibrary = library as LevelPrefabsLibrary; if (prefabsLibrary == null) { Debug.LogError("Library Not Found"); return; } prefabsLibrary.AddEnemyPrefabInformations(newEnemyPrefab.gameObject, enemyCreationParameters.enemyIdentifyingColor); EditorUtility.SetDirty(prefabsLibrary); #endregion } } EditorGUIUtility.labelWidth = oldWidth; }