예제 #1
0
    private string[] GetSubitemNames()
    {
        AudioItem curItem = currentItem;

        if (curItem == null || curItem.subItems == null)
        {
            return(new string[0]);
        }

        var names = new string[curItem.subItems.Length];

        for (int i = 0; i < curItem.subItems.Length; i++)
        {
            AudioSubItemType subitemType = curItem.subItems[i] != null ? curItem.subItems[i].SubItemType : AudioSubItemType.Clip;

            if (subitemType == AudioSubItemType.Item)
            {
                names[i] = string.Format("ITEM {0}: {1}", i, (curItem.subItems[i].ItemModeAudioID ?? "*undefined*"));
            }
            else
            {
                names[i] = string.Format("CLIP {0}: {1}", i, (curItem.subItems[i] != null ? curItem.subItems[i].Clip ? curItem.subItems[i].Clip.name : "*unset*" : ""));
            }
        }
        return(names);
    }
예제 #2
0
    private void Awake()
    {
        if (ambientsRoot != null)
        {
            fillAudioSources(ambientsRoot.GetComponents <AudioSource>(), ambients);
        }
        if (musicsRoot != null)
        {
            fillAudioSources(musicsRoot.GetComponents <AudioSource>(), musics);
        }
        if (shortsRoot != null)
        {
            fillAudioSources(shortsRoot.GetComponents <AudioSource>(), shorts);
        }
        if (playerEffectsRoot != null)
        {
            fillAudioSources(playerEffectsRoot.GetComponents <AudioSource>(), playerEffects);
        }
        if (villainEffectsRoot != null)
        {
            fillAudioSources(villainEffectsRoot.GetComponents <AudioSource>(), villainEffects);
        }
        if (powerupsRoot != null)
        {
            fillAudioSources(powerupsRoot.GetComponents <AudioSource>(), powerups);
        }
        if (UiEffetcsRoot != null)
        {
            fillAudioSources(UiEffetcsRoot.GetComponents <AudioSource>(), UiEffetcs);
        }

        footSteps = getAudoClip("PlayerFootSteps");
    }
예제 #3
0
        /// <summary>
        /// 检测并返回一个Audio Item
        /// </summary>
        /// <param name="_name">音效名字</param>
        /// <param name="_category">音效类别</param>
        /// <returns></returns>
        public AudioItem CheckAudioItem(string _name, string _category)
        {
            if (true == string.IsNullOrEmpty(_name))
            {
                return(null);
            }
            if (true == AudioController.IsValidAudioID(_name))
            {
                return(AudioController.GetAudioItem(_name));
            }
            AudioClip audioClip = null;

            // 加载音频资源
            if (null != loadResEvent)
            {
                var audioObject = loadResEvent(_name, "audio");
                if (null != audioObject && true == audioObject is AudioClip)
                {
                    audioClip = (AudioClip)audioObject;
                }
            }
            if (null == audioClip)
            {
                this.Warr(StringCacheFactory.GetFree().Add("无法加载音频 = ").Add(_name));
                return(null);
            }
            var audio_category = AudioController.GetCategory(_category);

            if (null != audio_category)
            {
                AudioItem audioItem = AudioController.AddToCategory(audio_category, audioClip, _name);
                return(audioItem);
            }
            return(null);
        }
예제 #4
0
        private static AudioItem CreateAudioItem(bool enabled, bool randomPitch, float pitch, float minPitch, float maxPitch, bool changeVol, float vol, params AudioClip[] clips)
        {
            AudioItem item     = new AudioItem(enabled, randomPitch, pitch, minPitch, maxPitch, changeVol, vol);
            int       clipSize = 0;

            for (int i = 0; i < clips.Length; i++)
            {
                if (clips[i] != null)
                {
                    clipSize++;
                }
            }

            item.AudioClips = new AudioClip[clipSize];
            int index = 0;

            for (int i = 0; i < clips.Length; i++)
            {
                if (clips[i] != null)
                {
                    item.AudioClips[index] = clips[i];
                    index++;
                }
            }

            return(item);
        }
예제 #5
0
        public AudioDynamicItem CreateDynamicItem(Func<AudioDynamicItem, AudioDynamicData, AudioSettingsBase> getNextSettings, AudioSpatializer spatializer, AudioItem parent)
        {
            AudioDynamicItem item = Pool<AudioDynamicItem>.Create(AudioDynamicItem.Default);
            item.Initialize(getNextSettings, spatializer, parent);

            return item;
        }
예제 #6
0
        private AudioItem checkSourcesForItemOnce(AudioReference reference, AudioLoadResultHandler resultHandler, bool[] reported)
        {
            foreach (AudioSourceManager sourceManager in sourceManagers)
            {
                AudioItem item = sourceManager.loadItem(this, reference);

                if (item != null)
                {
                    if (item is AudioTrack)
                    {
                        log.debug("Loaded a track with identifier {} using {}.", reference.identifier, sourceManager.GetType().Name);
                        reported[0] = true;
                        resultHandler.trackLoaded((AudioTrack)item);
                    }
                    else if (item is AudioPlaylist)
                    {
                        log.debug("Loaded a playlist with identifier {} using {}.", reference.identifier, sourceManager.GetType().Name);
                        reported[0] = true;
                        resultHandler.playlistLoaded((AudioPlaylist)item);
                    }
                    return(item);
                }
            }

            return(null);
        }
예제 #7
0
    public IEnumerator FadeIn(AudioItem audioItem, GameObject gameObject, AudioMixerGroup audioMixerGroup)
    {
        if (gameObject.GetComponent <AudioSource>() == null || gameObject.GetComponent <AudioSource>().isPlaying)
        {
            audioItem.myAudioSource = gameObject.AddComponent <AudioSource>();
        }
        audioItem.myAudioSource.outputAudioMixerGroup = audioMixerGroup;

        audioItem.myAudioSource.loop        = audioItem.isLooping;
        audioItem.myAudioSource.playOnAwake = audioItem.playOnAwake;
        audioItem.myAudioSource.clip        = audioItem.myClip;



        myAudioSource.volume = _minVolume;
        float audioVolume = myAudioSource.volume;

        myAudioSource.Play();

        while (myAudioSource.volume < _maxVolume)
        {
            audioVolume         += speed;
            myAudioSource.volume = audioVolume;
            yield return(new WaitForSeconds(0.1F));
        }
    }
예제 #8
0
        private int FindIdlePort()
        {
            int index;

            for (index = 0; index < m_audios.Count; ++index)
            {
                if (!m_audios[index].audio.isPlaying)
                {
                    break;
                }
            }

            //如果找不到空闲的, 申请空间, 继续播放
            if (index == m_audios.Count)
            {
                AudioItem tmp = new AudioItem();
                tmp.audio = ObjectEX.AddComponent <AudioSource>(m_audioParent);
                if (tmp.audio != null)
                {
                    tmp.id   = 0;
                    tmp.guid = Guid.Empty;
                    m_audios.Add(tmp);
                }
                else
                {
                    return(-1);
                }
            }

            return(index);
        }
    public AudioItem PlayOneShotSound(AudioClip clip, float volume, float spatialBlend, int audioGroup, Vector3 position = new Vector3())
    {
        if (clip == null)
        {
            return(null);
        }

        for (int i = 0; i < _audioItems.Count; i++)
        {
            if (!_audioItems[i].isPlaying)
            {
                AudioItem audioItem = _audioItems[i];
                audioItem.isPlaying = true;
                audioItem.transform.gameObject.SetActive(true);
                audioItem.transform.position       = position;
                audioItem.audioSource.clip         = clip;
                audioItem.audioSource.volume       = volume;
                audioItem.audioSource.spatialBlend = spatialBlend;
                if (_audioGroups.Count > audioGroup)
                {
                    audioItem.audioSource.outputAudioMixerGroup = _audioGroups[audioGroup];
                }

                audioItem.coroutine = AudioItemCoroutine(i);
                StartCoroutine(audioItem.coroutine);

                audioItem.audioSource.Play();

                return(audioItem);
            }
        }

        return(null);
    }
예제 #10
0
    /// <summary>
    /// Copy constructor
    /// </summary>
    public AudioItem(AudioItem orig)
    {
        Name = orig.Name;
        Loop = orig.Loop;
        loopSequenceCount        = orig.loopSequenceCount;
        loopSequenceOverlap      = orig.loopSequenceOverlap;
        loopSequenceRandomDelay  = orig.loopSequenceRandomDelay;
        loopSequenceRandomPitch  = orig.loopSequenceRandomPitch;
        loopSequenceRandomVolume = orig.loopSequenceRandomVolume;
        DestroyOnLoad            = orig.DestroyOnLoad;
        Volume                  = orig.Volume;
        SubItemPickMode         = orig.SubItemPickMode;
        MinTimeBetweenPlayCalls = orig.MinTimeBetweenPlayCalls;
        MaxInstanceCount        = orig.MaxInstanceCount;
        Delay        = orig.Delay;
        RandomVolume = orig.RandomVolume;
        RandomPitch  = orig.RandomPitch;
        RandomDelay  = orig.RandomDelay;
        overrideAudioSourceSettings = orig.overrideAudioSourceSettings;
        audioSource_MinDistance     = orig.audioSource_MinDistance;
        audioSource_MaxDistance     = orig.audioSource_MaxDistance;
        spatialBlend = orig.spatialBlend;

        for (int i = 0; i < orig.subItems.Length; ++i)
        {
            ArrayHelper.AddArrayElement(ref subItems, new AudioSubItem(orig.subItems[i], this));
        }
    }
예제 #11
0
        /// <summary>
        /// Die Daten einer Tonspur sollen angezeigt werden.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void selAudio_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Disable first
            selAudioType.Enabled    = false;
            selAudioPID.Enabled     = false;
            txAudioLanguage.Enabled = false;
            cmdDelAudio.Enabled     = false;

            // Reset
            selAudioType.SelectedItem = null;
            selAudioPID.Value         = selAudioPID.Maximum;
            txAudioLanguage.Text      = null;

            // Get the selection
            AudioItem item = (AudioItem)selAudio.SelectedItem;

            if (null == item)
            {
                return;
            }

            // Fill in all
            switch (item.Information.AudioType)
            {
            case AudioTypes.MP2: selAudioType.SelectedIndex = 0; break;

            case AudioTypes.AC3: selAudioType.SelectedIndex = 1; break;
            }

            // Finish
            txAudioLanguage.Text = item.Information.Language;
            selAudioPID.Value    = item.Information.AudioStream;
            cmdDelAudio.Enabled  = true;
        }
예제 #12
0
        public IActionResult Edit([FromBody] AudioItem item)
        {
            try
            {
                if (item == null || !ModelState.IsValid)
                {
                    return(BadRequest(ErrorCode.SomeFieldsRequired.ToString()));
                }
                var existingItem = _audioListRepository.Find(item);
                if (existingItem == null)
                {
                    return(NotFound(ErrorCode.RecordNotFound.ToString()));
                }

                if (item.ToBeDeleted)
                {
                    _audioListRepository.Delete(item);
                }
                else
                {
                    _audioListRepository.Update(item);
                }
            }
            catch (Exception)
            {
                return(BadRequest(ErrorCode.CouldNotUpdateItem.ToString()));
            }
            return(NoContent());
        }
예제 #13
0
    /// <summary>
    /// This method gets called for each audio file you drop in the drop area.
    /// </summary>
    /// <param name="filePath">
    /// The path of the file dropped.
    /// </param>
    private bool AddAudioFile(AudioClip audioClip)
    {
        // Make sure the file isn't already added
        if (_audioManagerPrefab.AudioItems.Select(item => item.Clips[0]).Contains(audioClip))
        {
            // Return if the file is already in the list
            return(false);
        }

        // Add an audio item to the array
        List <AudioItem> audioItems = _audioManagerPrefab.AudioItems.ToList();

        AudioClip[] clip = { audioClip };

        var newAudiItem = new AudioItem
        {
            Clips  = clip,
            Volume = 1,
            Name   = audioClip.name,
            Type   = audioClip.length > 8 ? AudioItem.SoundType.Music : AudioItem.SoundType.SoundEffect
        };

        audioItems.Add(newAudiItem);
        _audioManagerPrefab.AudioItems = audioItems.ToArray();

        Debug.Log("Added " + audioClip.name);

        return(true);
    }
예제 #14
0
    private void AddSelectedItemsToCollection()
    {
        // Make sure that at least one audio item is added
        if (AudioManagerPrefab.AudioItems.Length == 0)
        {
            return;
        }

        AudioItem selectedAudioItem = AudioManagerPrefab.AudioItems[_selectedAudioIndex];

        var clipsToAdd = new List <AudioClip>(selectedAudioItem.Clips);

        foreach (Object obj in Selection.objects)
        {
            if (AssetDatabase.Contains(obj) && obj is AudioClip && !clipsToAdd.Contains(obj as AudioClip))
            {
                clipsToAdd.Add(obj as AudioClip);
            }
        }

        // Apply new collection
        selectedAudioItem.Clips = clipsToAdd.ToArray();

        // Set dirty and repaint
        EditorUtility.SetDirty(AudioManagerPrefab.gameObject);
        Repaint();
    }
        /// <summary>
        /// Asserts that the <paramref name="item"/> contains equivalent values from the <paramref name="sqlItem"/>.
        /// </summary>
        /// <param name="sqlItem">The item with expected values.</param>
        /// <param name="item">The item with actual values.</param>
        private static void AssertItem(SqlItem sqlItem, AudioItem item)
        {
            if (item != null)
            {
                var resource = sqlItem.Resources.First();

                Assert.AreEqual(resource.AudioFormat.Duration, item.Duration);
            }
        }
예제 #16
0
    private void UpdateVolumeSettings()
    {
        foreach (AudioSource audioSource in audioSources)
        {
            AudioItem audioItem = AudioItems.FirstOrDefault(ai => ai.Clips.Contains(audioSource.clip));

            audioSource.GetComponent <AudioSourceComp>().UpdateVolume(Settings.MasterVolume, audioItem.Type == AudioItem.SoundType.Music ? Settings.MusicVolume : Settings.SoundEffectsVolume);
        }
    }
예제 #17
0
 public override bool AddAudioItemToCategory(ref AudioItem aiItem, string categoryId)
 {
     if (wrappedService != null)
     {
         Debug.LogFormat("Add Audio Item {0} To Category: {1}", aiItem.itemId, categoryId);
         return wrappedService.AddAudioItemToCategory(ref aiItem, categoryId);
     }
     return false;
 }
예제 #18
0
    public AudioItem getAudoClip(string clipName)
    {
        AudioItem clip = null;

        foreach (AudioItem item in ambients)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }
        foreach (AudioItem item in musics)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }
        foreach (AudioItem item in shorts)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }
        foreach (AudioItem item in playerEffects)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }
        foreach (AudioItem item in villainEffects)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }
        foreach (AudioItem item in powerups)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }
        foreach (AudioItem item in UiEffetcs)
        {
            if (item.audioSource.clip.name.Equals(clipName))
            {
                clip = item;
            }
        }

        return(clip);
    }
예제 #19
0
    /// <summary>
    /// Plays a sound with the given arguments, all overloads just delegates responsibity to this method.
    /// </summary>
    /// <param name="audioItem">
    /// The audio item to play a sound from.
    /// </param>
    /// <param name="volume">
    /// Volume factor from 0 to 1. (null means audio items standard volume)
    /// </param>
    public void PlaySound(AudioItem audioItem, float?volume, Vector3?position, Transform parent)
    {
        RemoveAllMissingSources();

        // We need an audio source to play a sound
        var  audioSource        = new AudioSource();
        bool didFindAudioSource = false;

        // Loops through all audio sources we've created so far TODO: check for destroyed audio sources
        foreach (AudioSource source in audioSources)
        {
            // If an existing audio source is not playing any sound, select that one
            if (!source.isPlaying)
            {
                audioSource        = source;
                didFindAudioSource = true;
                break;
            }
        }

        // If we didn't find a usable audiosource in the scene, create a new one
        if (!didFindAudioSource)
        {
            // Create audio source
            audioSource = new GameObject("AudioSource").AddComponent <AudioSource>();

            audioSource.gameObject.AddComponent <AudioSourceComp>();

            // Make sure play on awake defaults to false
            audioSource.playOnAwake = false;

            // TODO: Enable hide of audio sources
            //audioSource.gameObject.hideFlags = HideFlags.HideInHierarchy;

            // Add new audio source to our list
            audioSources.Add(audioSource);
        }

        // Assign position, default to origin
        audioSource.transform.position = (position ?? Vector3.zero);

        // Assign parent, null means no parent
        audioSource.transform.parent = parent;

        // Assign the clip to the selected audio source
        audioSource.clip = audioItem.GetClip();

        // Apply settings to audio source
        ApplySettingsToAudioSource(audioSource, audioItem, volume);

        // Set destroy on load
        audioSource.GetComponent <AudioSourceComp>().DoDestroyOnLoad = !audioItem.DontDestroyOnLoad;

        // Play the clip with the selected audio source
        audioSource.Play();
    }
예제 #20
0
파일: Create.cs 프로젝트: jonesm13/audio
            async Task <bool> BeWithinAudioBounds(Command command, long arg, CancellationToken cancellationToken)
            {
                AudioItem item = await db.Audio
                                 .AsNoTracking()
                                 .SingleAsync(
                    x => x.Id == command.Id,
                    cancellationToken);

                return(arg < item.Duration);
            }
예제 #21
0
        public void AudioItemInstantiation()
        {
            var options = new AudioItemOptions();

            SetAudioItemOptions(options);
            var audio_item = new AudioItem("-1", "-1", options);

            AssertAudioItem(audio_item, options);
            AssertAudioItem(audio_item, audio_item.GetOptions());
        }
예제 #22
0
        void OnAddItemClicked(object sender, EventArgs e)
        {
            var audioItem = new AudioItem();

            audioItem.Username = (string)App.Current.Properties["Username"];
            var audioPage = new AudioItemPage(true);

            audioPage.BindingContext = audioItem;
            Navigation.PushAsync(audioPage, true);
        }
예제 #23
0
    public bool IsTrackPlaying(string key)
    {
        AudioItem item = FindAudioTrack(key);

        if (item != null)
        {
            return(bgSource.clip == item.audioSource && bgSource.isPlaying);
        }
        return(false);
    }
예제 #24
0
        public IEnumerator TestPlayOneSound()
        {
            item = new AudioItem(true, true, 1f, 0.9f, 1.1f, true, 1f, step1);

            Assert.IsNull(source.clip);
            item.Play(source);
            yield return(null);

            Assert.AreEqual(source.clip, step1);
        }
예제 #25
0
    private void RemoveClipFromCollection(int itemIndex)
    {
        AudioItem selectedAudioItem = AudioManagerPrefab.AudioItems[_selectedAudioIndex];

        var clips = new List <AudioClip>(AudioManagerPrefab.AudioItems[_selectedAudioIndex].Clips);

        clips.RemoveAt(itemIndex);

        selectedAudioItem.Clips = clips.ToArray();
    }
예제 #26
0
        private void UpdateLyrics(File reader, AudioItem audioItem)
        {
            if (!audioItem.IsLyricsDirty)
            {
                return;
            }

            reader.Tag.Lyrics       = audioItem.Lyrics;
            audioItem.IsLyricsDirty = false;
        }
예제 #27
0
    /// <summary>
    /// This is automaticly called when the window loses focus.
    /// </summary>
    private void OnLostFocus()
    {
        // Cancel removing an item when window loses focus
        _itemToRemove = null;

        // TODO: Stop playing sound here

        // Repaint the window
        Repaint();
    }
예제 #28
0
        /// <summary>
        /// 播放音效,可以指定具体的播放位置
        /// </summary>
        /// <param name="_name">音效名字</param>
        /// <param name="_vol">音效音量</param>
        public AudioObject PlaySFX(string _name, float _vol)
        {
            AudioItem audioItem = CheckAudioItem(_name, AUDIO_CONTROLLER_SFX_CATEGORY);

            if (null != audioItem)
            {
                return(AudioController.Play(_name, _vol));
            }
            return(null);
        }
예제 #29
0
    float _GetRandomLoopSequenceDelay(AudioItem audioItem)
    {
        float retVal = -audioItem.loopSequenceOverlap;

        if (audioItem.loopSequenceRandomDelay > 0)
        {
            retVal += Random.Range(0, audioItem.loopSequenceRandomDelay);
        }
        return(retVal);
    }
예제 #30
0
 public void PlayAudio(AudioClip clip)
 {
     if (Database.Instance.localData.isOpenSound)
     {
         if (clip != null)
         {
             AudioItem item = poolAudioItem.BorrowObject <AudioItem>();
             item.PlayAudio(clip, poolAudioItem);
         }
     }
 }
예제 #31
0
    public void StopBGM()
    {
        if (m_bgm == null)
        {
            return;
        }

        m_bgm._audioSource.Stop();
        StartCoroutine(Recycle(m_bgm._handle));
        m_bgm = null;
    }
예제 #32
0
        public override ServerObject GetMetadata()
        {
            Track t = new Track((IntPtr)this.ObjectData);

            AudioItem track = new AudioItem(new MediaServerLocation(typeof(SpotifyTrackHandler), new string[] { this.ObjectData.ToString() }), MediaFormats.LPCM);
            track.Title = t.Name;
            track.Artists.AddRange(t.Artists);
            track.Seconds = t.Seconds;
            track.TrackNumber = t.TrackNumber;
            if (t.Album != null) {
                track.Album = t.Album.Name;
                track.AlbumArtist = t.Album.Artist;
                track.AlbumArt = new ImageResource(new MediaServerLocation(typeof(AlbumArtHandler), new string[] { t.Album.AlbumPtr.ToString() }), MediaFormats.JPEG);
            }

            return track;
        }
예제 #33
0
        public static void ShowPreviewButton(Rect rect, AudioSettingsBase settings)
        {
            if (AudioManager.Find() == null)
                return;

            // Check if scrollbar is visible
            if (Screen.width - rect.x - rect.width > 5f)
                rect.x = Screen.width - 40f;
            else
                rect.x = Screen.width - 24f;

            rect.width = 21f;
            rect.height = 16f;

            GUIStyle buttonStyle = new GUIStyle("MiniToolbarButtonLeft");
            buttonStyle.fixedHeight += 1;

            if (GUI.Button(rect, "", buttonStyle))
            {
                Selection.activeObject = settings;

                if (_previewSettings != settings || (_previewItem != null && _previewItem.State == AudioItem.AudioStates.Stopping))
                {
                    StopPreview();

                    EditorUtility.SetDirty(settings);
                    _previewSettings = settings;
                    _previewItem = AudioManager.Instance.CreateItem(_previewSettings);
                    _previewItem.OnStop += item => { StopPreview(); EditorUtility.SetDirty(settings); EditorApplication.RepaintProjectWindow(); };
                    _previewItem.Play();
                }
                else if (_previewItem != null)
                    _previewItem.Stop();
                else
                    StopPreview();
            }

            bool playing = _previewItem == null || _previewItem.State == AudioItem.AudioStates.Stopping || _previewSettings != settings;
            GUIStyle labelStyle = new GUIStyle("boldLabel");
            labelStyle.fixedHeight += 1;
            labelStyle.fontSize = playing ? 14 : 20;
            labelStyle.contentOffset = playing ? new Vector2(2f, -1f) : new Vector2(2f, -8f);
            labelStyle.clipping = TextClipping.Overflow;

            GUI.Label(rect, playing ? "►" : "■", labelStyle);
        }
예제 #34
0
    internal int _GetIndexOf( AudioItem audioItem )
    {
        if ( AudioItems == null ) return -1;

        for ( int i = 0; i < AudioItems.Length; i++ )
        {
            if ( audioItem == AudioItems[ i ] ) return i;
        }
        return -1;
    }
예제 #35
0
        public AudioItem CreateItem(AudioSettingsBase settings, AudioSpatializer spatializer, AudioItem parent)
        {
            if (settings == null)
                return null;

            AudioItem item;

            switch (settings.Type)
            {
                default:
                    AudioSourceItem sourceItem = Pool<AudioSourceItem>.Create(AudioSourceItem.Default);
                    AudioSource source = ComponentPool<AudioSource>.Create(AudioManager.Instance.Reference);
                    source.Copy(AudioManager.Instance.Reference, AudioManager.Instance.UseCustomCurves);
                    sourceItem.Initialize((AudioSourceSettings)settings, source, spatializer, parent);
                    item = sourceItem;
                    break;
                case AudioItem.AudioTypes.MixContainer:
                    AudioMixContainerItem mixContainerItem = Pool<AudioMixContainerItem>.Create(AudioMixContainerItem.Default);
                    mixContainerItem.Initialize((AudioMixContainerSettings)settings, spatializer, parent);
                    item = mixContainerItem;
                    break;
                case AudioItem.AudioTypes.RandomContainer:
                    AudioRandomContainerItem randomContainerItem = Pool<AudioRandomContainerItem>.Create(AudioRandomContainerItem.Default);
                    randomContainerItem.Initialize((AudioRandomContainerSettings)settings, spatializer, parent);
                    item = randomContainerItem;
                    break;
                case AudioItem.AudioTypes.EnumeratorContainer:
                    AudioEnumeratorContainerItem enumeratorContainerItem = Pool<AudioEnumeratorContainerItem>.Create(AudioEnumeratorContainerItem.Default);
                    enumeratorContainerItem.Initialize((AudioEnumeratorContainerSettings)settings, spatializer, parent);
                    item = enumeratorContainerItem;
                    break;
                case AudioItem.AudioTypes.SwitchContainer:
                    AudioSwitchContainerItem switchContainerItem = Pool<AudioSwitchContainerItem>.Create(AudioSwitchContainerItem.Default);
                    switchContainerItem.Initialize((AudioSwitchContainerSettings)settings, spatializer, parent);
                    item = switchContainerItem;
                    break;
                case AudioItem.AudioTypes.SequenceContainer:
                    AudioSequenceContainerItem sequenceContainerItem = Pool<AudioSequenceContainerItem>.Create(AudioSequenceContainerItem.Default);
                    sequenceContainerItem.Initialize((AudioSequenceContainerSettings)settings, spatializer, parent);
                    item = sequenceContainerItem;
                    break;
            }

            return item;
        }
예제 #36
0
        static void StopPreview()
        {
            if (AudioManager.Find() == null)
                return;

            if (_previewItem != null)
            {
                _previewItem.StopImmediate();
                _previewItem = null;
                _previewSettings = null;
            }
        }
예제 #37
0
 public void Activate(AudioItem item)
 {
     _toUpdate.Add(item);
 }
예제 #38
0
        public void TrimInstances(AudioItem item, int maxInstances)
        {
            if (!_idActiveItems.ContainsKey(item.Id))
                _idActiveItems[item.Id] = new List<AudioItem>();

            List<AudioItem> _activeItems = _idActiveItems[item.Id];

            if (maxInstances > 0)
                while (_activeItems.Count >= maxInstances)
                    _activeItems.Pop().StopImmediate();

            _idActiveItems[item.Id].Add(item);
        }
예제 #39
0
        public void Deactivate(AudioItem item)
        {
            if (_idActiveItems.ContainsKey(item.Id))
                _idActiveItems[item.Id].Remove(item);

            _toUpdate.Remove(item);
        }
예제 #40
0
        /// <summary>
        /// Ergänzt eine neue Tonspur.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void cmdAddAudio_Click( object sender, EventArgs e )
        {
            // Create new
            AudioInformation audio = new AudioInformation { AudioType = AudioTypes.MP2, AudioStream = 0, Language = "Deutsch" };

            // Create list
            List<AudioInformation> audios = new List<AudioInformation>();

            // Fill list
            if (null != CurrentModifier.AudioStreams)
                audios.AddRange( CurrentModifier.AudioStreams );

            // Append new
            audios.Add( audio );

            // Push back
            CurrentModifier.AudioStreams = audios.ToArray();

            // New item
            AudioItem item = new AudioItem( audio );

            // Push back
            selAudio.Items.Add( item );

            // Select it
            selAudio.SelectedItem = item;

            // Update
            selAudio_SelectedIndexChanged( selAudio, EventArgs.Empty );

            // Enable edit
            txAudioLanguage.Enabled = true;
            selAudioType.Enabled = true;
            selAudioPID.Enabled = true;
        }