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; } }