private void DrawTransitionPreset(EliasSetLevel setLevel) { int id = transitionPresets.IndexOf(setLevel.transitionPresetName); id = Mathf.Clamp(id, 0, transitionPresets.Count - 1); id = EditorGUILayout.Popup("Transition Preset", id, transitionPresets.ToArray()); setLevel.transitionPresetName = transitionPresets[id]; }
private void DrawStinger(EliasSetLevel setLevel) { int id = stingers.IndexOf(setLevel.stingerName); id = Mathf.Clamp(id, 0, stingers.Count - 1); id = EditorGUILayout.Popup("Stinger", id, stingers.ToArray()); setLevel.stingerName = stingers[id]; }
private void DrawTrackGroupName(EliasSetLevel setLevel) { int id = trackGroups.IndexOf(setLevel.trackGroupName); id = Mathf.Clamp(id, 0, trackGroups.Count - 1); id = EditorGUILayout.Popup("Track Group", id, trackGroups.ToArray()); setLevel.trackGroupName = trackGroups[id]; }
private void DrawThemeName(EliasSetLevel setLevel) { int id = themes.IndexOf(setLevel.themeName); id = Mathf.Clamp(id, 0, themes.Count - 1); id = EditorGUILayout.Popup("Theme", id, themes.ToArray()); setLevel.themeName = themes[id]; }
public override void OnInspectorGUI() { DrawDefaultInspector(); GUIContent[] framesPerBufferDisplayStrings = { new GUIContent("1024"), new GUIContent("2048"), new GUIContent("4096"), new GUIContent("8192") }; int[] framesPerBufferOptions = { 1024, 2048, 4096, 8192 }; player = (EliasPlayer)target; player.eliasFramesPerBuffer = EditorGUILayout.IntPopup(new GUIContent("Frames per buffer", "A higher value will generally save performance by doing less disk reads, in exchange for a (slightly) increased latency"), player.eliasFramesPerBuffer, framesPerBufferDisplayStrings, framesPerBufferOptions); EditorGUILayout.HelpBox("Note that the sample rate of the Unity project must match the ELIAS Theme.", MessageType.Warning); LoadProjects(); DrawProjectSelector(); InitializeElias(); DrawActionPresets(); player.file = GetSelectedProjectPath(); if (player.actionPreset == -1) { transitionPresets = elias.GetTransitionPresets(); themes = elias.GetThemes().ToArray(); EliasSetLevel setLevel = player.customPreset; if (setLevel == null) { setLevel = new EliasSetLevel(); player.customPreset = setLevel; } setLevel.preWaitTimeMs = Mathf.Clamp(EditorGUILayout.IntField("Wait Time (ms)", setLevel.preWaitTimeMs), 0, int.MaxValue); DrawTransitionPreset(setLevel); DrawThemeName(setLevel); stingers = empty.Concat(elias.GetStingers(setLevel.themeName)).ToList(); trackGroups = empty.Concat(elias.GetTracksGroups()).ToList(); setLevel.jumpToBar = (ushort)Mathf.Clamp(EditorGUILayout.IntField("Jump To Bar", setLevel.jumpToBar), 0, (int)elias.GetBasicInfo(setLevel.themeName).bars); DrawTrackGroupName(setLevel); setLevel.level = Mathf.Clamp(EditorGUILayout.IntField("Level", setLevel.level), 0, elias.GetGreatestLevelInTheme(setLevel.themeName)); setLevel.suggestedMaxTimeMs = EditorGUILayout.IntField("Suggested Max Time", setLevel.suggestedMaxTimeMs); DrawStinger(setLevel); } else { player.customPreset = null; } }
public override void OnInspectorGUI() { EditorGUILayout.HelpBox("If Elias uses 4 or more channels (quad), please set channel count to 0, allowing the Elias Engine to match Unity's Channel count internally.", MessageType.Info); DrawDefaultInspector(); EditorGUILayout.Space(); GUIContent[] framesPerBufferDisplayStrings = { new GUIContent("1024"), new GUIContent("2048"), new GUIContent("4096"), new GUIContent("8192") }; int[] framesPerBufferOptions = { 1024, 2048, 4096, 8192 }; player = (EliasPlayer)target; player.eliasFramesPerBuffer = EditorGUILayout.IntPopup(new GUIContent("Frames per buffer", "A higher value will generally save performance by doing less disk reads, in exchange for a (slightly) increased latency"), player.eliasFramesPerBuffer, framesPerBufferDisplayStrings, framesPerBufferOptions); EditorGUILayout.Space(); player.eliasCachePageCount = Math.Max(4, EditorGUILayout.IntField(new GUIContent("Cache page count", "This determines the number of pages in the cache, min 4. For memory limited targets 128 is recommended."), player.eliasCachePageCount)); GUIContent[] bytesPerPageDisplayStrings = { new GUIContent("256"), new GUIContent("512"), new GUIContent("1024"), new GUIContent("2048"), new GUIContent("4096"), new GUIContent("8192"), new GUIContent("16384"), new GUIContent("32768") }; int[] bytesPerPageOptions = { 256, 512, 1024, 2048, 4096, 8192, 16384, 32768 }; player.eliasCachePageSize = EditorGUILayout.IntPopup(new GUIContent("Bytes per cache page", "This determines the size of each cache page. Min 256, 4096 is recommended."), player.eliasCachePageSize, bytesPerPageDisplayStrings, bytesPerPageOptions); EditorGUILayout.LabelField("Memory used for cache: " + ((player.eliasCachePageCount * player.eliasCachePageSize) / 1024) + "kb"); EditorGUILayout.Space(); GUIContent[] avalibleSampleRateStrings = { new GUIContent("Match Unity Project Settings (Not recomended!)"), new GUIContent("16000"), new GUIContent("22050"), new GUIContent("24000"), new GUIContent("32000"), new GUIContent("44100"), new GUIContent("48000") }; int[] avalibleSampleRates = { -1, 16000, 22050, 24000, 32000, 44100, 48000 }; player.eliasSampleRate = EditorGUILayout.IntPopup(new GUIContent("Sample Rate", "The sample rate of the files used in the Elias Project (.mepro)"), player.eliasSampleRate, avalibleSampleRateStrings, avalibleSampleRates); EditorGUILayout.Space(); LoadProjects(); DrawProjectSelector(); InitializeElias(); EditorGUILayout.Space(); DrawActionPresets(); player.file = GetSelectedProjectPath(); EditorGUILayout.Space(); if (player.actionPreset == -1) { transitionPresets = elias.GetTransitionPresets(); themes = elias.GetThemes().ToArray(); EliasSetLevel setLevel = player.customPreset; if (setLevel == null) { setLevel = new EliasSetLevel(); player.customPreset = setLevel; } setLevel.preWaitTimeMs = Mathf.Clamp(EditorGUILayout.IntField("Wait Time (ms)", setLevel.preWaitTimeMs), 0, int.MaxValue); DrawTransitionPreset(setLevel); DrawThemeName(setLevel); stingers = empty.Concat(elias.GetStingers(setLevel.themeName)).ToList(); trackGroups = empty.Concat(elias.GetTracksGroups()).ToList(); setLevel.jumpToBar = (ushort)Mathf.Clamp(EditorGUILayout.IntField("Jump To Bar", setLevel.jumpToBar), 0, (int)elias.GetBasicInfo(setLevel.themeName).bars); DrawTrackGroupName(setLevel); setLevel.level = Mathf.Clamp(EditorGUILayout.IntField("Level", setLevel.level), 0, elias.GetGreatestLevelInTheme(setLevel.themeName)); setLevel.suggestedMaxTimeMs = EditorGUILayout.IntField("Suggested Max Time", setLevel.suggestedMaxTimeMs); DrawStinger(setLevel); } else { player.customPreset = null; } }