Beispiel #1
0
        bool InheritDependencies()
        {
            //if (spectrumSource) return true;

            Transform parent = transform.parent;

            if (spectrumSource == null)
            {
                spectrumSource = GetComponent <SpectrumSource>();
            }

            if (eq == null)
            {
                eq = GetComponent <EQ>();
            }

            while (spectrumSource == null || eq == null)
            {
                if (parent != null)
                {
                    if (spectrumSource == null)
                    {
                        spectrumSource = parent.GetComponent <SpectrumSource>();
                    }

                    if (eq == null)
                    {
                        eq = parent.GetComponent <EQ>();
                    }

                    parent = parent.parent;
                }
                else
                {
                    break;
                }
            }

            return(spectrumSource);
        }
Beispiel #2
0
        public override void OnInspectorGUI()
        {
            EQ eq = (EQ)target;

            int iMin;
            int iMax;

            eq.bandFilterOption = (BandFilters)EditorGUILayout.EnumPopup("Filter Band", eq.bandFilterOption);

            EditorGUILayout.Foldout(true, "Scale", GlobalStyles.heading);

            eq.slope  = EditorGUILayout.Slider("Slope", eq.slope, min, max);
            eq.offset = EditorGUILayout.Slider("Offset", eq.offset, 0.0f, 2.0f);
            eq.master = EditorGUILayout.Slider("Master", eq.master, 0.0f, 20.0f);

            EditorGUILayout.Foldout(true, "Levels", GlobalStyles.heading);

            eq.levelShape = (LevelMode)EditorGUILayout.EnumPopup("Mode", eq.levelShape);

            float upperPreset = 0;
            float lowerPreset = 0;

            Frequency.GetRangePreset(ref lowerPreset, ref upperPreset, (FrequencyRangeOption)(eq.bandFilterOption + 1));

            iMin = Frequency.FrequencyToArrayIndex(lowerPreset, eq.levels.Length);
            iMax = Frequency.FrequencyToArrayIndex(upperPreset, eq.levels.Length);

            for (int i = 0; i < eq.levels.Length; i++)
            {
                if (i >= iMin && i <= iMax)
                {
                    eq.bandFilters[i] = 1f;
                }
                else
                {
                    eq.bandFilters[i] = 0f;
                }
            }

            EditorGUI.BeginChangeCheck();

            for (int i = 0; i < eq.levels.Length; i++)
            {
                float linearizedFrequency = 0.0f;
                int   nLevels             = eq.levels.Length;
                float level = 0.0f;

                if (eq.bandFilters[i] == 1.0f)
                {
                    switch (eq.levelShape)
                    {
                    case LevelMode.Custom:
                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), eq.levels[i], min, max);
                        break;

                    case LevelMode.Flat:
                        level        = Mathf.Clamp(eq.slope + eq.offset - 1.0f, 0, 2);
                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), level, min, max);
                        break;

                    case LevelMode.Mute:
                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), 0.0f, min, max);
                        break;

                    case LevelMode.Max:
                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), max * eq.bandFilters[i], min, max);

                        break;

                    case LevelMode.LinearAscending:
                        level        = Mathf.Clamp(((float)i / (nLevels - 1) * eq.slope + eq.offset), 0, 2);
                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), level, min, max);
                        break;

                    case LevelMode.LinearDescending:
                        level        = Mathf.Clamp(((1.0f - (float)i / (nLevels - 1)) * eq.slope + eq.offset), 0, 2);
                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), level, min, max);
                        break;

                    case LevelMode.SquareAscending:
                        linearizedFrequency = (float)i / (float)(eq.levels.Length - 1);
                        level = Mathf.Clamp((linearizedFrequency * linearizedFrequency * eq.slope + eq.offset), 0, 2);

                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), level, min, max);
                        break;

                    case LevelMode.SquareDescending:
                        linearizedFrequency = (float)i / (float)(eq.levels.Length - 1);
                        level = Mathf.Clamp(((1.0f - linearizedFrequency * linearizedFrequency) * eq.slope + eq.offset), 0, 2);

                        eq.levels[i] = EditorGUILayout.Slider((i + 1).ToString(), level, min, max);
                        break;
                    }
                }
            }

            if (EditorGUI.EndChangeCheck())
            {
                eq.levelShape = LevelMode.Custom;
            }

            Undo.RecordObject(eq, "EQ");
        }