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;
     }
 }
Exemple #2
0
    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;
        }
    }