Example #1
0
        void Awake()
        {
            I = this;

            sfxGroup        = DeAudioManager.GetAudioGroup(DeAudioGroupId.FX);
            musicGroup      = DeAudioManager.GetAudioGroup(DeAudioGroupId.Music);
            vocabularyGroup = DeAudioManager.GetAudioGroup(DeAudioGroupId.Custom0);
            dialogueGroup   = DeAudioManager.GetAudioGroup(DeAudioGroupId.Custom1);

            musicEnabled = true;
        }
Example #2
0
        public IAudioSource PlaySound(AudioClip clip)
        {
            if (sfxGroup == null)
            {
                sfxGroup            = DeAudioManager.GetAudioGroup(DeAudioGroupId.FX);
                sfxGroup.mixerGroup = AudioManager.I.sfxGroup;
            }

            var source = sfxGroup.Play(clip);

            return(new SampleAudioSource(source, sfxGroup, this));
        }
Example #3
0
        public IAudioSource PlayMusic(AudioClip clip)
        {
            StopMusic();

            if (musicGroup == null)
            {
                musicGroup            = DeAudioManager.GetAudioGroup(DeAudioGroupId.Music);
                musicGroup.mixerGroup = AudioManager.I.musicGroup;
            }

            var source = musicGroup.Play(clip);

            return(new SampleAudioSource(source, musicGroup, this));
        }
Example #4
0
        void DrawRuntime()
        {
            EditorGUILayout.HelpBox("Runtime Mode", MessageType.Info);

            // Global volume
            EditorGUIUtility.labelWidth = 96;
            GUILayout.BeginVertical(DeGUI.styles.box.def);
            float prevGlobalVolume = _src.fooGlobalVolume;

            _src.fooGlobalVolume = EditorGUILayout.Slider("Global Volume", _src.fooGlobalVolume, 0, 1);
            if (Math.Abs(_src.fooGlobalVolume - prevGlobalVolume) > float.Epsilon)
            {
                DeAudioManager.SetVolume(_src.fooGlobalVolume);
            }
            GUILayout.EndVertical();
            // Group volumes
            GUILayout.Space(4);
            EditorGUIUtility.labelWidth = 101;
            GUILayout.Label("DeAudioGroups", DeGUI.styles.label.bold);
            // Groups with ids
            if (DeAudioManager.audioGroups != null)
            {
                int len = DeAudioManager.audioGroups.Length;
                for (int i = 0; i < len; ++i)
                {
                    // Group volumes
                    DeAudioGroup g = DeAudioManager.audioGroups[i];
                    if (g.id == DeAudioGroupId.INTERNAL_Global && !HasPlayingSources(DeAudioManager.globalGroup))
                    {
                        continue;
                    }
                    DeGUILayout.BeginVBox(DeGUI.styles.box.flatAlpha25);
                    float prevVolume = g.fooVolume;
                    g.fooVolume = EditorGUILayout.Slider(g.id == DeAudioGroupId.INTERNAL_Global ? "[GLOBAL]" : g.id.ToString(), g.fooVolume, 0, 1);
                    if (Math.Abs(g.fooVolume - prevVolume) > float.Epsilon)
                    {
                        g.SetVolume(g.fooVolume);
                    }
                    DrawRuntimeSourcesFor(g);
                    DeGUILayout.EndVBox();
                }
            }
        }
Example #5
0
        public IAudioSource PlayLetterData(ILivingLetterData id, bool stopAllLetters = false)
        {
            AudioClip clip = AudioManager.I.GetAudioClip(id);

            if (wordsLettersGroup == null)
            {
                wordsLettersGroup            = DeAudioManager.GetAudioGroup(DeAudioGroupId.Custom0);
                wordsLettersGroup.mixerGroup = AudioManager.I.lettersGroup;
            }

            if (stopAllLetters)
            {
                wordsLettersGroup.Stop();
            }

            var source = wordsLettersGroup.Play(clip);

            return(new SampleAudioSource(source, wordsLettersGroup, this));
        }
Example #6
0
        void OnEnable()
        {
            _src = target as DeAudioManager;
            DeAudioEditorUtils.CheckForDuplicateAudioGroupIds(_src.fooAudioGroups, _duplicateGroupIds);

            float lineH       = EditorGUIUtility.singleLineHeight;
            float listVSpacer = 2f;

            _audioGroupsList = new ReorderableList(serializedObject, serializedObject.FindProperty("fooAudioGroups"), true, true, true, true);
            _audioGroupsList.elementHeight      = lineH * 5 + listVSpacer * 4 + 10;
            _audioGroupsList.drawHeaderCallback = rect => { GUI.Label(rect, "DeAudioGroups", DeGUI.styles.label.bold); };
            _audioGroupsList.onChangedCallback  = list => { _requiresDuplicateCheck = true; };
            _audioGroupsList.onAddCallback      = list => {
                // Force volume to 1, max sources to -1 and recycle to true
                ReorderableList.defaultBehaviours.DoAddButton(list);
                int addedIndex             = list.serializedProperty.arraySize - 1;
                SerializedProperty element = list.serializedProperty.GetArrayElementAtIndex(addedIndex);
                element.FindPropertyRelative("mixerGroup").objectReferenceValue = null;
                element.FindPropertyRelative("id").enumValueIndex    = 0;
                element.FindPropertyRelative("fooVolume").floatValue = 1;
                element.FindPropertyRelative("maxSources").intValue  = -1;
                element.FindPropertyRelative("recycle").boolValue    = true;
            };
            _audioGroupsList.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => {
                if (_requiresDuplicateCheck && Event.current.type == EventType.Repaint)
                {
                    DeAudioEditorUtils.CheckForDuplicateAudioGroupIds(_src.fooAudioGroups, _duplicateGroupIds);
                    _requiresDuplicateCheck = false;
                }
                bool hasDuplicateGroupIds = _duplicateGroupIds.Count > 0;
                EditorGUIUtility.labelWidth = 86;
                float        ry   = rect.y + 2;
                DeAudioGroup item = _src.fooAudioGroups[index];
                GUI.color = item.mixerGroup == null ? Color.white : Color.green;
                AudioMixerGroup prevMixerGroup = item.mixerGroup;
                item.mixerGroup = EditorGUI.ObjectField(new Rect(rect.x, ry, rect.width, lineH), "MixerGroup", item.mixerGroup, typeof(AudioMixerGroup), false) as AudioMixerGroup;
                if (item.mixerGroup != prevMixerGroup)
                {
                    DeAudioEditorUtils.CheckForDuplicateAudioGroupIds(_src.fooAudioGroups, _duplicateGroupIds);
                }
                GUI.color = Color.white;
                ry       += lineH + listVSpacer;
                DeAudioGroupId prevId = item.id;
                GUI.color = hasDuplicateGroupIds && _duplicateGroupIds.Contains(item.id) ? Color.red : Color.white;
                item.id   = (DeAudioGroupId)EditorGUI.EnumPopup(new Rect(rect.x, ry, rect.width, lineH), "Id (univocal)", item.id);
                GUI.color = Color.white;
                if (item.id != prevId)
                {
                    DeAudioEditorUtils.CheckForDuplicateAudioGroupIds(_src.fooAudioGroups, _duplicateGroupIds);
                }
                ry             += lineH + listVSpacer;
                item.fooVolume  = EditorGUI.Slider(new Rect(rect.x, ry, rect.width, lineH), "Volume", item.fooVolume, 0, 1);
                ry             += lineH + listVSpacer;
                item.maxSources = EditorGUI.IntSlider(new Rect(rect.x, ry, rect.width, lineH), "Max Sources", item.maxSources, -1, 100);
                ry             += lineH + listVSpacer;
                item.recycle    = EditorGUI.Toggle(new Rect(rect.x, ry, 120, lineH), new GUIContent("       Recycle", "If toggled, when max sources are reached and no free one is available the oldest one will be reused. If untoggled the new audio won't play."), item.recycle);
                EditorGUI.BeginDisabledGroup(item.maxSources == 0);
                EditorGUIUtility.labelWidth = 76;
                item.preallocate            = EditorGUI.IntSlider(new Rect(rect.x + 120, ry, rect.width - 120, lineH), new GUIContent("Pre-allocate", "Allocates the given sources at startup."), item.preallocate, 0, item.maxSources >= 0 ? item.maxSources : 100);
                EditorGUI.EndDisabledGroup();
            };
        }