/** * Toogles the spawner edition window */ public static void EditSpawner() { StageEditorSpawnerController.OpenSelectionWindow(); }
/** * Renders the entire editor window from helper class */ void OnGUI() { GUILayout.BeginArea(new Rect(20, 20, 760, 80)); spawnerData.SpawnerName = EditorGUILayout.TextField("Spawner name", spawnerData.SpawnerName); spawnerCountBuffer = EditorGUILayout.IntField("Enemy count", spawnerCountBuffer); spawnerData.SpawnerSpawnCount = spawnerCountBuffer; GUILayout.EndArea(); List <SpawnInfo> infos = spawnerData.SpawnerInfo; int diff = spawnerData.SpawnerSpawnCount - infos.Count; if (diff > 0) { for (int nData = 0; nData < diff; ++nData) { infos.Add(new SpawnInfo()); } } GUILayout.BeginArea(new Rect(20, 100, 760, 350)); scrollBarPosition = GUILayout.BeginScrollView(scrollBarPosition, false, true, GUIStyle.none, GUI.skin.verticalScrollbar); // Displays all for (int nData = 0; nData < spawnerData.SpawnerSpawnCount; ++nData) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Remove", GUILayout.Width(80))) { infos.RemoveAt(nData); spawnerCountBuffer -= 1; spawnerData.SpawnerSpawnCount -= 1; return; } GUILayout.Space(20); EditorGUILayout.LabelField("Prefab", GUILayout.Width(45)); infos[nData].SpawnPrefab = EditorGUILayout.ObjectField(infos[nData].SpawnPrefab, typeof(GameObject), true) as GameObject; GUILayout.Space(20); EditorGUILayout.LabelField("Timing", GUILayout.Width(45)); infos[nData].SpawnTiming = EditorGUILayout.FloatField(infos[nData].SpawnTiming, GUILayout.Width(50)); GUILayout.Space(20); EditorGUILayout.LabelField("Position", GUILayout.Width(55)); infos[nData].SpawnPosition = EditorGUILayout.Vector3Field("", infos[nData].SpawnPosition, GUILayout.Width(120)); GUILayout.Space(20); Transform selected = null; selected = EditorGUILayout.ObjectField(selected, typeof(Transform), true, GUILayout.Width(100)) as Transform; if (selected != null) { infos[nData].SpawnPosition = selected.position; } EditorGUILayout.EndHorizontal(); GUILayout.Space(5); } EditorGUILayout.EndScrollView(); GUILayout.EndArea(); GUILayout.BeginArea(new Rect(20, 470, 760, 30)); if (editorState == EditionState.Creation) { if (GUILayout.Button("Create")) { // Apply list modifications diff = spawnerData.SpawnerSpawnCount - infos.Count; if (diff < 0) { for (int nData = 0; nData < (diff * -1); ++nData) { infos.RemoveAt(infos.Count - 1); } } spawnerData.SortSpawnerInfo(); StageEditorSpawnerController.SaveAsset(spawnerData); Close(); } } else { if (GUILayout.Button("Close")) { Close(); } } GUILayout.EndArea(); }