float GetPower(int channel) { if (audioWatcher == null) { audioWatcher = AudioWatcher.Instance; } return(Mathf.Abs((int)audioWatcher.CurrentSPL(channel) >> 2)); }
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(); }
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)); }
void FixedUpdate() { if (audioWatcher == null) { audioWatcher = AudioWatcher.Instance; return; } foreach (AudioWatcher.Bands b in bands) { foreach (AudioWatcher.EventTypes e in eventTypes) { InvokeEvents(b, e); } } }
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; } } }; }
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(); } }; } }
void Awake() { audioManager = GetComponent<UAudioManager>(); audioWatcher = GetComponent<AudioWatcher>(); }
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; } }
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)); }