コード例 #1
0
ファイル: DeathCylinder.cs プロジェクト: snaami/MusicWars
    float GetPower(int channel)
    {
        if (audioWatcher == null)
        {
            audioWatcher = AudioWatcher.Instance;
        }

        return(Mathf.Abs((int)audioWatcher.CurrentSPL(channel) >> 2));
    }
コード例 #2
0
        public void Update()
        {
            //While setting key bindings, do nothing
            //If colossal ui has focus do nothing
            if (UIKeyBindingButton.CurrentListeningButton != null || UIView.HasInputFocus())
            {
                _key_MusicSettings_IsDown = false;
                _key_NextTrack_IsDown     = false;
                return;
            }

            //Next track
            if (ModOptions.Key_NextTrack != KeyCode.None)
            {
                if (Input.GetKeyDown(ModOptions.Key_NextTrack))
                {
                    _key_NextTrack_IsDown = true;
                }
                else if (Input.GetKeyUp(ModOptions.Key_NextTrack) && _key_NextTrack_IsDown)
                {
                    _key_NextTrack_IsDown = false;

                    AudioWatcher.RequestSwitchMusic();
                }
            }

            //Settings panel
            if (ModOptions.Key_Settings != KeyCode.None)
            {
                if (Input.GetKeyDown(ModOptions.Key_Settings))
                {
                    _key_MusicSettings_IsDown = true;
                }
                else if (Input.GetKeyUp(ModOptions.Key_Settings) && _key_MusicSettings_IsDown)
                {
                    _key_MusicSettings_IsDown = false;

                    if (_current_Settings_Panel.isVisible)
                    {
                        _current_Settings_Panel.Hide();
                    }
                    else
                    {
                        _current_Settings_Panel.Show();
                    }
                }
            }

            //Settings panel <-> toobar button
            if (_toolbar_Button != null && _current_Settings_Panel != null)
            {
                _toolbar_Button.isChecked = _current_Settings_Panel.isVisible;
            }

            UpdateToolbarButton();
        }
コード例 #3
0
 void Awake()
 {
     instance     = this;
     actors       = new List <AudioActor>();
     bandOffsets  = new int[channels.Length, numBands];
     spectrumData = new float[spectrumDensity];
     outputData   = new float[spectrumDensity];
     audioSource  = gameObject.GetComponent <AudioSource>();
     baseBands    = (int)Mathf.Ceil(Mathf.Log(spectrumDensity));
 }
コード例 #4
0
ファイル: AudioActor.cs プロジェクト: rmwxiong/UnityAudioSync
    void FixedUpdate()
    {
        if (audioWatcher == null)
        {
            audioWatcher = AudioWatcher.Instance;
            return;
        }

        foreach (AudioWatcher.Bands b in bands)
        {
            foreach (AudioWatcher.EventTypes e in eventTypes)
            {
                InvokeEvents(b, e);
            }
        }
    }
コード例 #5
0
        private void InitializeMusicList()
        {
            var panel = _musicList = AddUIComponent <UIListBox>();

            panel.width            = width - 34;
            panel.height           = height - 80 - 20;
            panel.relativePosition = new Vector3(10, 80 + 10);
            panel.textColor        = new Color32(150, 150, 150, 255);
            panel.itemHover        = "SubcategoriesPanel";
            panel.itemHeight       = 32;
            panel.itemPadding      = new RectOffset(0, 0, 4, 4);
            panel.tooltip          = "Click on an item to play the song.\nDouble click to enable/disable it.\nDrag to resort the list.";

            panel.Show();

            /**
             * Not working -.-
             * */

            //Update 3.3 scrollbar
            //if (CSLMusicModSettings.MusicListEnableScrollbar)
            {
                var scroller = panel.AddUIComponent <UIScrollbar>();
                scroller.width            = 15;
                scroller.height           = panel.height;
                scroller.relativePosition = new Vector3(width - 15 - 15f, 0);
                scroller.orientation      = UIOrientation.Vertical;

                //All credits to https://github.com/justacid/Skylines-ExtendedPublicTransport
                {
                    var track = scroller.AddUIComponent <UISlicedSprite>();
                    track.relativePosition = Vector2.zero;
                    track.autoSize         = true;
                    track.size             = track.parent.size;
                    track.fillDirection    = UIFillDirection.Vertical;
                    track.spriteName       = "ScrollbarTrack";
                    scroller.trackObject   = track;

                    {
                        UISlicedSprite thumbSprite = track.AddUIComponent <UISlicedSprite>();
                        thumbSprite.relativePosition = Vector2.zero;
                        thumbSprite.fillDirection    = UIFillDirection.Vertical;
                        thumbSprite.autoSize         = true;
                        thumbSprite.width            = thumbSprite.parent.width;
                        thumbSprite.spriteName       = "ChirpScrollbarThumb";
                        thumbSprite.color            = new Color32(255, 255, 255, 128);
                        //thumbSprite.color = new Color32(0, 100, 180, 255);

                        scroller.thumbObject = thumbSprite;
                    }
                }

                _musicList.scrollbar = scroller;

                scroller.isVisible = true;
            }

            //UpdateMusicList();

            panel.eventItemClicked += delegate(UIComponent component, int value)
            {
                if (AudioWatcher != null)
                {
                    //+ Only if not resorted, switch to track
                    if (!_resort_resorted && value >= 0 && _filtered_MusicEntryList.Count > value)
                    {
                        //AudioWatcher.RequestSwitchMusic(MusicManager.MusicEntries[value]);
                        AudioWatcher.RequestSwitchMusic(_filtered_MusicEntryList[value]); //use filtered list
                    }
                }
            };
            panel.eventItemDoubleClicked += delegate(UIComponent component, int value)
            {
                if (value >= 0 && _filtered_MusicEntryList.Count > value)
                {
                    //Store old entry
                    MusicEntry current = AudioWatcher.CurrentMusicEntry;

                    //MusicEntry entry = MusicManager.MusicEntries[value];
                    var entry = _filtered_MusicEntryList[value];
                    entry.Enable = !entry.Enable;

                    UpdateMusicListPreserveScroll();

                    //Restore the current entry
                    AudioWatcher.RequestSwitchMusic(current);
                }
            };

            //Add feature to resort the music list
            panel.eventItemMouseDown += delegate(UIComponent component, int value)
            {
                if (AudioWatcher != null)
                {
                    //Disable resort while filtering
                    if (Filtered)
                    {
                        return;
                    }

                    if (value >= 0 && MusicManager.MusicEntries.Count > value)
                    {
                        _resort_CurrentItem       = MusicManager.MusicEntries[value];
                        _resort_currentPivotIndex = value;
                        _resort_resorted          = false;
                    }
                }
            };
            panel.eventItemMouseUp += delegate(UIComponent component, int value)
            {
                _resort_CurrentItem = null;

                if (_resort_resorted)
                {
                    MusicManager.SaveMusicFileSettings();
                }
            };
            panel.eventItemMouseHover += delegate(UIComponent component, int value)
            {
                if (value >= 0 && _filtered_MusicEntryList.Count > value)
                {
                    if (_resort_CurrentItem != null && value != _resort_currentPivotIndex)
                    {
                        //Disable resort while filtering
                        if (Filtered)
                        {
                            return;
                        }

                        MusicManager.MusicEntries.Remove(_resort_CurrentItem);
                        MusicManager.MusicEntries.Insert(value, _resort_CurrentItem);
                        _resort_currentPivotIndex = value;

                        UpdateMusicListPreserveScroll();

                        _resort_resorted = true;
                    }
                    else
                    {
                        var entry = _filtered_MusicEntryList[value];

                        String tooltip = entry.BaseName + "\n----\n";
                        tooltip += "Supported tags:\n";
                        foreach (var tag in entry.TagSongs.Keys)
                        {
                            if (tag == "")
                            {
                                tooltip += "Default music\n";
                            }
                            else
                            {
                                tooltip += MusicManager.TagIndicator + tag + "\n";
                            }
                        }
                        tooltip += "\n\nClick on an item to play the song.\nDouble click to enable/disable it.\nDrag to resort the list.";

                        _musicList.tooltip = tooltip;
                    }
                }
            };
        }
コード例 #6
0
        private void InitializeHeaderToolbar()
        {
            //Header background
            {
                var header = AddUIComponent <UIPanel>();
                header.relativePosition = Vector3.zero;
                header.width            = this.width;
                header.height           = 80;
                header.backgroundSprite = "GenericTab";
            }
            {
                _MusicVolumeSlider = AddUIComponent <UISlider>();
                _MusicVolumeSlider.relativePosition = new Vector3(15, 22);
                _MusicVolumeSlider.width            = 100;
                _MusicVolumeSlider.height           = 10;
                //_MusicVolumeSlider.backgroundSprite = "GenericPanelLight";
                //_MusicVolumeSlider.color = new Color32(255, 255, 255, 100);
                _MusicVolumeSlider.minValue = 0;
                _MusicVolumeSlider.maxValue = 100;
                _MusicVolumeSlider.tooltip  = "Drag to change the music volume";

                UIPanel thumb = _MusicVolumeSlider.AddUIComponent <UIPanel>();
                thumb.width            = 15;
                thumb.height           = 15;
                thumb.backgroundSprite = "GenericProgressBarFill";

                UIPanel fill = _MusicVolumeSlider.AddUIComponent <UIPanel>();
                fill.backgroundSprite = "GenericProgressBarFill";
                //fill.color = new Color32(79, 210, 233, 255);
                _MusicVolumeSlider.fillIndicatorObject = fill;

                _MusicVolumeSlider.thumbObject = thumb;

                _MusicVolumeSlider.eventValueChanged += delegate(UIComponent component, float value)
                {
                    if (this.m_IsDisposing)
                    {
                        return;
                    }

                    //I use x100 because it failed with 0..1?
                    value = value / 100f;

                    if (_MusicAudioVolume.value != value)
                    {
                        _MusicAudioVolume.value = value;
                    }
                };
            }
            {
                _Previous_Track                  = AddUIComponent <UIButton>();
                _Previous_Track.width            = 36;
                _Previous_Track.height           = 36;
                _Previous_Track.relativePosition = new Vector3(130, 10);
                _Previous_Track.tooltip          = "Play previous track";

                _Previous_Track.atlas           = _atlas;
                _Previous_Track.hoveredBgSprite = "OptionBaseFocused";
                _Previous_Track.pressedBgSprite = "OptionBasePressed";
                _Previous_Track.normalFgSprite  = "Previous";

                _Previous_Track.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    AudioWatcher.RequestSwitchToPreviousMusic();
                };
            }
            {
                _Next_Track                  = AddUIComponent <UIButton>();
                _Next_Track.width            = 36;
                _Next_Track.height           = 36;
                _Next_Track.relativePosition = new Vector3(130 + 40, 10);
                _Next_Track.normalBgSprite   = "GenericPanel";
                _Next_Track.tooltip          = "Play next track";

                _Next_Track.atlas           = _atlas;
                _Next_Track.hoveredBgSprite = "OptionBaseFocused";
                _Next_Track.pressedBgSprite = "OptionBasePressed";
                _Next_Track.normalFgSprite  = "Next";

                _Next_Track.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    AudioWatcher.RequestSwitchMusic();
                };
            }
            {
                _SortAscending                  = AddUIComponent <UIButton>();
                _SortAscending.width            = 36;
                _SortAscending.height           = 36;
                _SortAscending.relativePosition = new Vector3(130 + 40 * 2, 10);
                _SortAscending.normalBgSprite   = "GenericPanel";
                _SortAscending.tooltip          = "Sort ascending";

                _SortAscending.atlas           = _atlas;
                _SortAscending.hoveredBgSprite = "OptionBaseFocused";
                _SortAscending.pressedBgSprite = "OptionBasePressed";
                _SortAscending.normalFgSprite  = "SortAscending";

                _SortAscending.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    MusicManager.MusicEntries.Sort(new Comparison <MusicEntry>((x, y) =>
                    {
                        return(x.BaseName.CompareTo(y.BaseName));
                    }));
                    MusicManager.SaveMusicFileSettings();

                    UpdateMusicListPreserveScroll();
                };
            }
            {
                _SortDescending                  = AddUIComponent <UIButton>();
                _SortDescending.width            = 36;
                _SortDescending.height           = 36;
                _SortDescending.relativePosition = new Vector3(130 + 40 * 3, 10);
                _SortDescending.normalBgSprite   = "GenericPanel";
                _SortDescending.tooltip          = "Sort ascending";

                _SortDescending.atlas           = _atlas;
                _SortDescending.hoveredBgSprite = "OptionBaseFocused";
                _SortDescending.pressedBgSprite = "OptionBasePressed";
                _SortDescending.normalFgSprite  = "SortDescending";

                _SortDescending.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    MusicManager.MusicEntries.Sort(new Comparison <MusicEntry>((x, y) =>
                    {
                        return(-x.BaseName.CompareTo(y.BaseName));
                    }));
                    MusicManager.SaveMusicFileSettings();

                    UpdateMusicListPreserveScroll();
                };
            }
            {
                _Filter                          = AddUIComponent <UITextField>();
                _Filter.width                    = width - 130 - 40 - 36 - 10 - 10 - 36 * 3 - 10;
                _Filter.height                   = 36;
                _Filter.relativePosition         = new Vector3(130 + 40 + 10 + 36 * 3, 10);
                _Filter.padding                  = new RectOffset(6, 6, 3, 3);
                _Filter.builtinKeyNavigation     = true;
                _Filter.isInteractive            = true;
                _Filter.readOnly                 = false;
                _Filter.horizontalAlignment      = UIHorizontalAlignment.Left;
                _Filter.verticalAlignment        = UIVerticalAlignment.Middle;
                _Filter.selectionSprite          = "EmptySprite";
                _Filter.selectionBackgroundColor = new Color32(0, 172, 234, 255);
                _Filter.normalBgSprite           = "TextFieldPanel";
                _Filter.disabledTextColor        = new Color32(0, 0, 0, 128);
                _Filter.color                    = new Color32(60, 60, 60, 255);
                _Filter.textColor                = Color.gray;
                _Filter.padding                  = new RectOffset(6, 6, 9, 9);

                _Filter_Clear                  = AddUIComponent <UIButton>();
                _Filter_Clear.width            = 22;
                _Filter_Clear.height           = 22;
                _Filter_Clear.relativePosition = _Filter.relativePosition + new Vector3(7 + _Filter.width - 36, 7);
                _Filter_Clear.atlas            = _atlas;
                _Filter_Clear.normalFgSprite   = "Search";
                _Filter_Clear.hoveredColor     = new Color32(255, 255, 255, 128);

                _Filter.eventTextChanged += delegate
                {
                    if (!Filtered)
                    {
                        _Filter_Clear.normalFgSprite = "Search";
                    }
                    else
                    {
                        _Filter_Clear.normalFgSprite = "Clear";
                    }

                    UpdateMusicList();
                };
                _Filter_Clear.eventClick += (component, eventParam) =>
                {
                    _Filter.text = "";
                };
            }
            {
                _enable_Playlist_random                  = AddUIComponent <UICheckButton>();
                _enable_Playlist_random.width            = 36;
                _enable_Playlist_random.height           = 36;
                _enable_Playlist_random.relativePosition = new Vector3(width - 10 - 36, 10);
                _enable_Playlist_random.normalBgSprite   = "GenericPanel";
                _enable_Playlist_random.tooltip          = "Enable randomized playback";

                _enable_Playlist_random.atlas           = _atlas;
                _enable_Playlist_random.normalBgSprite  = "OptionBase";
                _enable_Playlist_random.hoveredBgSprite = "OptionBaseFocused";
                _enable_Playlist_random.pressedBgSprite = "OptionBasePressed";
                _enable_Playlist_random.normalFgSprite  = "Shuffle";

                _enable_Playlist_random.eventCheckStateChanged += delegate(UICheckButton sender, bool state)
                {
                    if (SettingsManager.ModOptions.RandomTrackSelection != state)
                    {
                        SettingsManager.ModOptions.RandomTrackSelection = state;
                        SettingsManager.SaveModSettings();
                    }
                };
            }
        }
コード例 #7
0
	void Awake()
    {
        audioManager = GetComponent<UAudioManager>();
        audioWatcher = GetComponent<AudioWatcher>();
    }
コード例 #8
0
        public void Update()
        {
            if (_mainAudioSource == null || _helperAudioSource == null)
            {
                return;
            }

            switch (CurrentState)
            {
            case State.Playing:
                // Increase or decrease volume until it is the same
                if (_mainAudioSource.volume < FinalVolume)
                {
                    var volume2 = Math.Min(FinalVolume, _mainAudioSource.volume + VolumeModifier_Switch);
                    _mainAudioSource.volume = volume2;

                    if (volume2 < FinalVolume)
                    {
                        Debug.Log("[CSLMusicMod] Increasing volume of Playing state to " + volume2);
                    }
                }
                else
                {
                    var volume2 = Math.Max(FinalVolume, _mainAudioSource.volume - VolumeModifier_Switch);
                    _mainAudioSource.volume = volume2;

                    if (volume2 < FinalVolume)
                    {
                        Debug.Log("[CSLMusicMod] Decreasing volume of Playing state to " + volume2);
                    }
                }

                //Is the music finished?
                if (!_mainAudioSource.isPlaying)
                {
                    Debug.Log("[CSLMusicMod] Playback finished.");
                    ImmediatelyStopPlayback();

                    if (_playback_req == null)
                    {
                        AudioWatcher.RequestSwitchMusic();
                    }
                    else
                    {
                        Debug.Log("[CSLMusicMod] Playback finished. Not requesting a new song as a song is in queue.");
                    }
                }

                if (_playback_req != null)
                {
                    __Playback(_playback_req, _playback_req_entry);
                    _playback_req_entry = null;
                    _playback_req       = null;
                }

                break;

            case State.Stopping:

                // Decrease main audio volume and go to "stopped" if volume is 0
                var volume = Math.Max(0f, _mainAudioSource.volume - VolumeModifier_Switch);

                _mainAudioSource.volume = volume;

                if (volume <= 0)
                {
                    _currentClip = null;
                    CurrentState = State.Stopped;
                    Debug.Log("[CSLMusicMod] Stopping finished.");
                }

                break;

            case State.Stopped:

                // If stopping has ended, play the requested clip
                if (_requestedClip != null)
                {
                    StopAndPlay(_requestedClip);
                }
                else if (_playback_req != null)
                {
                    __Playback(_playback_req, _playback_req_entry);
                    _playback_req       = null;
                    _playback_req_entry = null;
                }

                break;

            case State.Crossfading:

                // Decrease main audio volume and go to "stopped" if volume is 0
            {
                var volume1 = Math.Max(0f, _helperAudioSource.volume - VolumeModifier_Crossover);
                _helperAudioSource.volume = volume1;
                var volume2 = Math.Min(FinalVolume, _mainAudioSource.volume + VolumeModifier_Crossover);
                _mainAudioSource.volume = volume2;

                //x-fade into "Playing" state
                if (volume1 <= 0 && volume2 >= FinalVolume)
                {
                    CurrentState = State.Playing;
                    Debug.Log("[CSLMusicMod] Crossfading finished.");
                }
            }
            break;
            }
        }
コード例 #9
0
 void Awake()
 {
     instance      = this;
     actors        = new List<AudioActor>();
     bandOffsets   = new int[channels.Length, numBands];
     spectrumData  = new float[spectrumDensity];
     outputData    = new float[spectrumDensity];
     audioSource   = gameObject.GetComponent<AudioSource>();
     baseBands     = (int) Mathf.Ceil(Mathf.Log(spectrumDensity));
 }