Example #1
0
 public static void PlaySound(this AudioSource audioSource, Vector3 position, AudioRolloffMode audioRollofMode, float spatialBlend = 1, float volume = 1)
 {
     if (CheckAudioSourceAndClip(audioSource))
     {
         SoundManager2.PlaySound(audioSource, audioSource.clip, volume, position, true, spatialBlend, audioRollofMode);
     }
 }
 /// Updates the audio source with given |id| and its properties.
 /// @note This should only be called from the main Unity thread.
 public static void UpdateAudioSource(int id, Transform transform, float gainDb,
                                      AudioRolloffMode rolloffMode, float minDistance,
                                      float maxDistance, float alpha, float sharpness,
                                      float occlusion)
 {
     if (initialized)
     {
         float      gain     = ConvertAmplitudeFromDb(gainDb);
         Vector3    position = transform.position;
         Quaternion rotation = transform.rotation;
         float      scale    = worldScaleInverse * Mathf.Max(transform.lossyScale.x, transform.lossyScale.y,
                                                             transform.lossyScale.z);
         ConvertAudioTransformFromUnity(ref position, ref rotation);
         // Pass the source properties to the audio system.
         SetSourceDirectivity(id, alpha, sharpness);
         SetSourceGain(id, gain);
         SetSourceOcclusionIntensity(id, occlusion);
         if (rolloffMode != AudioRolloffMode.Custom)
         {
             SetSourceDistanceAttenuationMethod(id, rolloffMode, minDistance, maxDistance);
         }
         SetSourceTransform(id, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z,
                            rotation.w, scale);
     }
 }
Example #3
0
        CurveWrapper[] GetCurveWrapperArray()
        {
            List <CurveWrapper> wrappers = new List <CurveWrapper>();

            foreach (AudioCurveWrapper audioCurve in m_AudioCurves)
            {
                if (audioCurve.curveProp == null)
                {
                    continue;
                }

                bool           includeCurve = false;
                AnimationCurve curve        = audioCurve.curveProp.animationCurveValue;

                // Special handling of volume rolloff curve
                if (audioCurve.type == AudioCurveType.Volume)
                {
                    AudioRolloffMode mode = (AudioRolloffMode)m_RolloffMode.enumValueIndex;
                    if (m_RolloffMode.hasMultipleDifferentValues)
                    {
                        includeCurve = false;
                    }
                    else if (mode == AudioRolloffMode.Custom)
                    {
                        includeCurve = !audioCurve.curveProp.hasMultipleDifferentValues;
                    }
                    else
                    {
                        includeCurve = !m_MinDistance.hasMultipleDifferentValues && !m_MaxDistance.hasMultipleDifferentValues;
                        if (mode == AudioRolloffMode.Linear)
                        {
                            curve = AnimationCurve.Linear(m_MinDistance.floatValue / m_MaxDistance.floatValue, 1.0f, 1.0f, 0.0f);
                        }
                        else if (mode == AudioRolloffMode.Logarithmic)
                        {
                            curve = Logarithmic(m_MinDistance.floatValue / m_MaxDistance.floatValue, 1.0f, 1.0f);
                        }
                    }
                }
                // All other curves
                else
                {
                    includeCurve = !audioCurve.curveProp.hasMultipleDifferentValues;
                }

                if (includeCurve)
                {
                    if (curve.length == 0)
                    {
                        Debug.LogError(audioCurve.legend.text + " curve has no keys!");
                    }
                    else
                    {
                        wrappers.Add(GetCurveWrapper(curve, audioCurve));
                    }
                }
            }

            return(wrappers.ToArray());
        }
Example #4
0
    public override void OnInspectorGUI()
    {
        // Update the serializedProperty - always do this in the beginning of OnInspectorGUI.
        serializedObject.Update();

        Id.stringValue = EditorGUILayout.TextField("Id", Id.stringValue);

        AudioClip.objectReferenceValue = EditorGUILayout.ObjectField("AudioClip", AudioClip.objectReferenceValue, typeof(AudioClip), true);

        Volume.floatValue = EditorGUILayout.Slider("Volume", Volume.floatValue, 0, 1);
        ProgressBar(Volume.floatValue, "Volume");

        Loop.boolValue = EditorGUILayout.Toggle("Loop", Loop.boolValue);

        Pitch.floatValue           = EditorGUILayout.Slider("Pitch", Pitch.floatValue, 0, 1);
        PitchRandomness.floatValue = EditorGUILayout.Slider("PitchRandomness", PitchRandomness.floatValue, 0, 1);

        MinDistance.floatValue = EditorGUILayout.Slider("MinDistance", MinDistance.floatValue, 0, 1);

        MaxDistance.floatValue = EditorGUILayout.Slider("MaxDistance", MaxDistance.floatValue, 0, 1);

        // TODO: BUG: this never gets applied. Try to work it out.
        _rolloffMode = (AudioRolloffMode)EditorGUILayout.EnumPopup("RolloffMode", _rolloffMode);
        RolloffMode.enumValueIndex = (int)_rolloffMode;

        // Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI.
        serializedObject.ApplyModifiedProperties();
    }
        /// <summary>
        /// Load saved settings into local variables.
        /// </summary>
        public void LoadSettings()
        {
            Mute = SavedMute;
            // BypassListenerEffects = SavedBypassListenerEffects;
            BypassReverbZones = SavedBypassReverbZones;
            PlayOnAwake       = SavedPlayOnAwake;
            Loop = SavedLoop;

            Priority  = SavedPriority;
            Volume    = SavedVolume;
            Pitch     = SavedPitch;
            StereoPan = SavedStereoPan;

            SpatialBlend  = SavedSpatialBlend;
            ReverbZoneMix = SavedReverbZoneMix;
            DopplerLevel  = SavedDopplerLevel;
            Spread        = SavedSpread;

            VolumeRolloff = SavedVolumeRolloff;

            MinDistance = SavedMinDistance;
            MaxDistance = SavedMaxDistance;

#if NotExposedInUdon
            Gain                   = SavedGain;
            Far                    = SavedFar;
            Near                   = SavedNear;
            VolumetricRadius       = SavedVolumetricRadius;
            AudioSourceVolumeCurve = SavedAudioSourceVolumeCurve;
#endif

            UseScriptSettings();
            UiRefresh();
        }
 /// Updates the audio source with given |id| and its properties.
 /// @note This should only be called from the main Unity thread.
 public static void UpdateAudioSource(int id, Transform transform, bool bypassRoomEffects,
                                      float gainDb, float spread, AudioRolloffMode rolloffMode,
                                      float minDistance, float maxDistance, float alpha,
                                      float sharpness, float occlusion)
 {
     if (initialized)
     {
         float      gain     = ConvertAmplitudeFromDb(gainDb);
         Vector3    position = transform.position;
         Quaternion rotation = transform.rotation;
         ConvertAudioTransformFromUnity(ref position, ref rotation);
         float maxDistanceScaled = worldScaleInverse * maxDistance;
         float minDistanceScaled = worldScaleInverse * minDistance;
         float spreadRad         = Mathf.Deg2Rad * spread;
         // Pass the source properties to the audio system.
         SetSourceBypassRoomEffects(id, bypassRoomEffects);
         SetSourceDirectivity(id, alpha, sharpness);
         SetSourceGain(id, gain);
         SetSourceOcclusionIntensity(id, occlusion);
         SetSourceDistanceAttenuationMethod(id, rolloffMode, minDistanceScaled, maxDistanceScaled);
         SetSourceSpread(id, spreadRad);
         SetSourceTransform(id, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z,
                            rotation.w);
     }
 }
        /// <summary>
        /// Save local settings into saved profile.
        /// </summary>
        public void SaveSettings()
        {
            SavedMute = Mute;
            // SavedBypassListenerEffects = BypassListenerEffects;
            SavedBypassReverbZones = BypassReverbZones;
            SavedPlayOnAwake       = PlayOnAwake;
            SavedLoop = Loop;

            SavedPriority  = Priority;
            SavedVolume    = Volume;
            SavedPitch     = Pitch;
            SavedStereoPan = StereoPan;

            SavedSpatialBlend  = SpatialBlend;
            SavedReverbZoneMix = ReverbZoneMix;
            SavedDopplerLevel  = DopplerLevel;
            SavedSpread        = Spread;

            SavedVolumeRolloff = VolumeRolloff;

            SavedMinDistance = MinDistance;
            SavedMaxDistance = MaxDistance;

#if NotExposedInUdon
            SavedGain                   = Gain;
            SavedFar                    = Far;
            SavedNear                   = Near;
            SavedVolumetricRadius       = VolumetricRadius;
            SavedAudioSourceVolumeCurve = AudioSourceVolumeCurve;
#endif
        }
        public void Copy(DirectAudioDataObject _audio)
        {
            if (_audio == null)
            {
                return;
            }

            Enabled         = _audio.Enabled;
            Foldout         = _audio.Foldout;
            Loop            = _audio.Loop;
            Break           = _audio.Break;
            MaxDistance     = _audio.MaxDistance;
            MinDistance     = _audio.MinDistance;
            DistanceMaximum = _audio.DistanceMaximum;
            MaxPitch        = _audio.MaxPitch;
            MinPitch        = _audio.MinPitch;
            PitchMaximum    = _audio.PitchMaximum;
            RolloffMode     = _audio.RolloffMode;
            Volume          = _audio.Volume;
            MixerGroup      = _audio.MixerGroup;

            Clips.Clear();
            foreach (AudioClip _clip in _audio.Clips)
            {
                Clips.Add(_clip);
            }
        }
Example #9
0
        //Transfers audio settings from an AudioSource. Only used in the editor
        public void TransferFromAudioSource(AudioSource source)
        {
            Loop                  = source.loop;
            Volume                = source.volume;
            AudioClip             = source.clip;
            BypassEffects         = source.bypassEffects;
            BypassListenerEffects = source.bypassListenerEffects;
            BypassReverbZones     = source.bypassReverbZones;
            DopplerLevel          = source.dopplerLevel;
            MaxDistance           = source.maxDistance;
            MinDistance           = source.minDistance;
            Mute                  = source.mute;
            OutputAudioMixerGroup = source.outputAudioMixerGroup;
            PanStereo             = source.panStereo;
            Pitch                 = source.pitch;
            Priority              = source.priority;
            RolloffMode           = source.rolloffMode;
            SpatialBlend          = source.spatialBlend;
            ReverbZoneMix         = source.reverbZoneMix;
            Spatialize            = source.spatialize;

            if (RolloffMode == AudioRolloffMode.Custom)
            {
                CustomRolloffCurve = source.GetCustomCurve(AudioSourceCurveType.CustomRolloff);
            }
            else
            {
                CustomRolloffCurve = null;
            }
        }
        /// <summary>
        /// Plays an audio clip in 3D
        /// </summary>
        /// <param name="clip">clip to play</param>
        /// <param name="position">the position to play this sound at</param>
        /// <param name="looping">is this clip looping?</param>
        /// <param name="volume">scale the clips volume</param>
        /// <param name="pitch">pitch to play the sound at</param>
        /// <param name="pitchVariance">variance in pitch for this clip. 0 will have no variance.</param>
        /// <param name="spatialBlend">spatial blending. 0f = 2D, 1f = 3D</param>
        /// <param name="rollOffMode">the roll off mode to use for this source.</param>
        /// <returns></returns>
        public static AudioSource Play3D(AudioClip clip,
                                         Vector3 position,
                                         bool looping                 = false,
                                         float volume                 = 1f,
                                         float pitch                  = 1f,
                                         float pitchVariance          = 0f,
                                         float spatialBlend           = 1f,
                                         AudioRolloffMode rollOffMode = AudioRolloffMode.Logarithmic)
        {
            var source = Instance.GetNext();

            source.loop         = looping;
            source.spatialBlend = spatialBlend;
            source.rolloffMode  = rollOffMode;
            source.pitch        = pitch + KitRandom.RandomSign() * pitchVariance;

            var go = source.gameObject;

            go.SetActive(true);

            var callback = source.GetComponent <AudioSourceCallback>();

            callback.OnStop.AddListener(s =>
            {
                callback.OnStop.RemoveAllListeners();
                s.gameObject.SetActive(false);
            });

            go.transform.position = position;

            source.clip   = clip;
            source.volume = volume;
            source.Play();
            return(source);
        }
Example #11
0
    // Plays the AudioClip 'clip' with the desired parameters
    private AudioSource playClip(AudioClip clip, bool loop, float volume = 1f, float levelOf3D = 0, Vector3 position = default(Vector3),
                                 float dopplerLevel           = 0f, float spread = 0f, float minDistance = 1, float maxDistance = 500,
                                 AudioRolloffMode rolloffMode = AudioRolloffMode.Logarithmic)
    {
        if (clip == null)
        {
            if (errorOnNullSound)
            {
                Debug.LogError("Error: The audio clip is invalid or missing.");
            }
            return(null);
        }
        AudioSource aSource = getAudioSourceObject();

        aSource.clip = clip;

        // Set the desired settings:
        aSource.volume             = volume;
        aSource.spatialBlend       = levelOf3D;
        aSource.spread             = spread;
        aSource.dopplerLevel       = dopplerLevel;
        aSource.transform.position = position;
        aSource.minDistance        = minDistance;
        aSource.maxDistance        = maxDistance;
        aSource.rolloffMode        = rolloffMode;
        aSource.loop = loop;

        aSource.playOnAwake = false; // for my own sanity
        aSource.Play();
        return(aSource);
    }
Example #12
0
	public IEnumerator playAudioClip( AudioClip audioClip, AudioRolloffMode rolloff, float volume, Vector3 position )
	{
		// Setup the GameObject and AudioSource and start playing
		gameObject.name = audioClip.name;
		audioSource.clip = audioClip;
		
		return play( rolloff, volume, position );
	}
Example #13
0
    public IEnumerator playAudioClip(AudioClip audioClip, AudioRolloffMode rolloff, float volume, Vector3 position)
    {
        // Setup the GameObject and AudioSource and start playing
        gameObject.name  = audioClip.name;
        audioSource.clip = audioClip;

        return(play(rolloff, volume, position));
    }
Example #14
0
    static int IntToEnum(IntPtr L)
    {
        int arg0           = (int)LuaDLL.lua_tonumber(L, 1);
        AudioRolloffMode o = (AudioRolloffMode)arg0;

        LuaScriptMgr.PushEnum(L, o);
        return(1);
    }
Example #15
0
 public virtual void ResetConfig()
 {
     this.volume      = 1;
     this.pitch       = 1;
     this.clip        = null;
     this.minDistance = 1;
     this.maxDistance = 500;
     this.rolloffMode = AudioRolloffMode.Logarithmic;
 }
Example #16
0
 public override TaskStatus OnUpdate()
 {
     if (this.audioSource == null)
     {
         Debug.LogWarning("AudioSource is null");
         return(TaskStatus.Failure);
     }
     this.audioSource.rolloffMode = this.rolloffMode;
     return(TaskStatus.Success);
 }
Example #17
0
        private CurveWrapper[] GetCurveWrapperArray()
        {
            List <CurveWrapper> list = new List <CurveWrapper>();

            AudioSourceInspector.AudioCurveWrapper[] audioCurves = this.m_AudioCurves;
            for (int i = 0; i < audioCurves.Length; i++)
            {
                AudioSourceInspector.AudioCurveWrapper audioCurveWrapper = audioCurves[i];
                if (audioCurveWrapper.curveProp != null)
                {
                    AnimationCurve animationCurve = audioCurveWrapper.curveProp.animationCurveValue;
                    bool           flag;
                    if (audioCurveWrapper.type == AudioSourceInspector.AudioCurveType.Volume)
                    {
                        AudioRolloffMode enumValueIndex = (AudioRolloffMode)this.m_RolloffMode.enumValueIndex;
                        if (this.m_RolloffMode.hasMultipleDifferentValues)
                        {
                            flag = false;
                        }
                        else if (enumValueIndex == AudioRolloffMode.Custom)
                        {
                            flag = !audioCurveWrapper.curveProp.hasMultipleDifferentValues;
                        }
                        else
                        {
                            flag = (!this.m_MinDistance.hasMultipleDifferentValues && !this.m_MaxDistance.hasMultipleDifferentValues);
                            if (enumValueIndex == AudioRolloffMode.Linear)
                            {
                                animationCurve = AnimationCurve.Linear(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f, 0f);
                            }
                            else if (enumValueIndex == AudioRolloffMode.Logarithmic)
                            {
                                animationCurve = AudioSourceInspector.Logarithmic(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f);
                            }
                        }
                    }
                    else
                    {
                        flag = !audioCurveWrapper.curveProp.hasMultipleDifferentValues;
                    }
                    if (flag)
                    {
                        if (animationCurve.length == 0)
                        {
                            Debug.LogError(audioCurveWrapper.legend.text + " curve has no keys!");
                        }
                        else
                        {
                            list.Add(this.GetCurveWrapper(animationCurve, audioCurveWrapper));
                        }
                    }
                }
            }
            return(list.ToArray());
        }
        private CurveWrapper[] GetCurveWrapperArray()
        {
            List <CurveWrapper> list = new List <CurveWrapper>();

            foreach (AudioCurveWrapper wrapper in this.m_AudioCurves)
            {
                if (wrapper.curveProp != null)
                {
                    bool           flag = false;
                    AnimationCurve animationCurveValue = wrapper.curveProp.animationCurveValue;
                    if (wrapper.type == AudioCurveType.Volume)
                    {
                        AudioRolloffMode enumValueIndex = (AudioRolloffMode)this.m_RolloffMode.enumValueIndex;
                        if (this.m_RolloffMode.hasMultipleDifferentValues)
                        {
                            flag = false;
                        }
                        else if (enumValueIndex == AudioRolloffMode.Custom)
                        {
                            flag = !wrapper.curveProp.hasMultipleDifferentValues;
                        }
                        else
                        {
                            flag = !this.m_MinDistance.hasMultipleDifferentValues && !this.m_MaxDistance.hasMultipleDifferentValues;
                            switch (enumValueIndex)
                            {
                            case AudioRolloffMode.Linear:
                                animationCurveValue = AnimationCurve.Linear(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f, 0f);
                                break;

                            case AudioRolloffMode.Logarithmic:
                                animationCurveValue = Logarithmic(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f);
                                break;
                            }
                        }
                    }
                    else
                    {
                        flag = !wrapper.curveProp.hasMultipleDifferentValues;
                    }
                    if (flag)
                    {
                        if (animationCurveValue.length == 0)
                        {
                            Debug.LogError(wrapper.legend.text + " curve has no keys!");
                        }
                        else
                        {
                            list.Add(this.GetCurveWrapper(animationCurveValue, wrapper));
                        }
                    }
                }
            }
            return(list.ToArray());
        }
Example #19
0
 public SoundItem(AudioClip clip, AudioMixerGroup audioMixerGroup, float volume = 1f, float randomPitchRange = .1f, float spatialBlend = 0f, bool loop = false, float minDistance = 1f, float maxDistance = 500f, AudioRolloffMode audioRollOffMode = AudioRolloffMode.Logarithmic)
 {
     this.clip             = clip;
     this.audioMixerGroup  = audioMixerGroup;
     this.volume           = volume;
     this.spatialBlend     = spatialBlend;
     this.loop             = loop;
     this.minDistance      = minDistance;
     this.maxDistance      = maxDistance;
     this.audioRollOffMode = audioRollOffMode;
     this.randomPitchRange = randomPitchRange;
 }
        private CurveWrapper[] GetCurveWrapperArray()
        {
            List <CurveWrapper> curveWrapperList = new List <CurveWrapper>();

            foreach (AudioSourceInspector.AudioCurveWrapper audioCurve in this.m_AudioCurves)
            {
                if (audioCurve.curveProp != null)
                {
                    AnimationCurve curve = audioCurve.curveProp.animationCurveValue;
                    bool           flag;
                    if (audioCurve.type == AudioSourceInspector.AudioCurveType.Volume)
                    {
                        AudioRolloffMode enumValueIndex = (AudioRolloffMode)this.m_RolloffMode.enumValueIndex;
                        if (this.m_RolloffMode.hasMultipleDifferentValues)
                        {
                            flag = false;
                        }
                        else if (enumValueIndex == AudioRolloffMode.Custom)
                        {
                            flag = !audioCurve.curveProp.hasMultipleDifferentValues;
                        }
                        else
                        {
                            flag = !this.m_MinDistance.hasMultipleDifferentValues && !this.m_MaxDistance.hasMultipleDifferentValues;
                            if (enumValueIndex == AudioRolloffMode.Linear)
                            {
                                curve = AnimationCurve.Linear(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f, 0.0f);
                            }
                            else if (enumValueIndex == AudioRolloffMode.Logarithmic)
                            {
                                curve = AudioSourceInspector.Logarithmic(this.m_MinDistance.floatValue / this.m_MaxDistance.floatValue, 1f, 1f);
                            }
                        }
                    }
                    else
                    {
                        flag = !audioCurve.curveProp.hasMultipleDifferentValues;
                    }
                    if (flag)
                    {
                        if (curve.length == 0)
                        {
                            Debug.LogError((object)(audioCurve.legend.text + " curve has no keys!"));
                        }
                        else
                        {
                            curveWrapperList.Add(this.GetCurveWrapper(curve, audioCurve));
                        }
                    }
                }
            }
            return(curveWrapperList.ToArray());
        }
Example #21
0
    /*
     * Plays an AudioClip 'clip' with the desired volume once. Default behavior is playing a 2D sound
     * Returns a reference to the AudioSource component (null if clip is invalid).
     * Will play the audioclip once and then disable the whole GameObject.
     * DISABLING/ENABLING IS HANDLED AUTOMATICALLY, DO NOT ENABLE/DISABLE MANUALLY.
     * levelOf3D controls the spatial blend (0==2D, 1==3D), position only matters, if levelOf3D > 0.
     * The rest of the parameters control the corresponding settings of AudioSource.
     */
    public AudioSource playClipOnce(AudioClip clip, float volume = 1f, float levelOf3D = 0, Vector3 position = default(Vector3),
                                    float dopplerLevel           = 0f, float spread = 0f, float minDistance  = 1, float maxDistance = 500,
                                    AudioRolloffMode rolloffMode = AudioRolloffMode.Logarithmic)
    {
        AudioSource aSource = playClip(clip, false, volume, levelOf3D, position, dopplerLevel, spread, minDistance, maxDistance, rolloffMode);

        if (aSource != null)
        {
            StartCoroutine(disableAfterPlaying(aSource));
        }
        return(aSource);
    }
Example #22
0
 public AudioSource3DData(float dopplerLevel, float minDistance, float maxDistance, float panStereo, AudioRolloffMode rolloffMode, float spread, float spatialBlend, bool spatialize, bool spatializePostEffects)
 {
     this.dopplerLevel          = dopplerLevel;
     this.minDistance           = minDistance;
     this.maxDistance           = maxDistance;
     this.panStereo             = panStereo;
     this.rolloffMode           = rolloffMode;
     this.spread                = spread;
     this.spatialize            = spatialize;
     this.spatialBlend          = spatialBlend;
     this.spatializePostEffects = spatializePostEffects;
 }
        void Start()
        {
            if (!audioSource)
            {
                Destroy(this);
                return;
            }

            origMinDist              = audioSource.minDistance;
            origMaxDist              = audioSource.maxDistance;
            origRolloffMode          = audioSource.rolloffMode;
            audioSource.rolloffMode  = AudioRolloffMode.Logarithmic;
            audioSource.spatialBlend = 1;
        }
Example #24
0
 private void FillSettingsFromAudioSource(AudioSource source)
 {
     playOnAwake   = source.playOnAwake;
     loop          = source.loop;
     priority      = source.priority;
     volume        = source.volume;
     stereoPan     = source.panStereo;
     spatialBlend  = source.spatialBlend;
     dopplerLevel  = source.dopplerLevel;
     spread        = (int)source.spread;
     volumeRolloff = source.rolloffMode;
     minDistance   = source.minDistance;
     maxDistance   = source.maxDistance;
 }
Example #25
0
    public void Apply(AudioSource audioSource)
    {
        if (useFromAudioSource)
        {
            if (this.audioSource == null)
            {
                Debug.LogError("Asked to copy Values from AudioSource, but it's null! ", this);
                return;
            }

            output                = this.audioSource.outputAudioMixerGroup;
            mute                  = this.audioSource.mute;
            bypassEffects         = this.audioSource.bypassEffects;
            bypassListenerEffects = this.audioSource.bypassListenerEffects;
            bypassReverbZones     = this.audioSource.bypassReverbZones;
            playOnAwake           = this.audioSource.playOnAwake;
            loop                  = this.audioSource.loop;
            priority              = this.audioSource.priority;
            volume                = this.audioSource.volume;
            pitch                 = this.audioSource.pitch;
            stereoPan             = this.audioSource.panStereo;
            spatialBlend          = this.audioSource.spatialBlend;
            reverbZoneMix         = this.audioSource.reverbZoneMix;
            dopplerLevel          = this.audioSource.dopplerLevel;
            spread                = this.audioSource.spread;
            volumeRolloff         = this.audioSource.rolloffMode;
            minDistance           = this.audioSource.minDistance;
            maxDistance           = this.audioSource.maxDistance;
        }

        audioSource.outputAudioMixerGroup = output;
        audioSource.mute                  = mute;
        audioSource.bypassEffects         = bypassEffects;
        audioSource.bypassListenerEffects = bypassListenerEffects;
        audioSource.bypassReverbZones     = bypassReverbZones;
        audioSource.playOnAwake           = playOnAwake;
        audioSource.loop                  = loop;
        audioSource.priority              = priority;
        audioSource.volume                = volume;
        audioSource.pitch                 = pitch;
        audioSource.panStereo             = stereoPan;
        audioSource.spatialBlend          = spatialBlend;
        audioSource.reverbZoneMix         = reverbZoneMix;
        audioSource.dopplerLevel          = dopplerLevel;
        audioSource.spread                = spread;
        audioSource.rolloffMode           = volumeRolloff;
        audioSource.minDistance           = minDistance;
        audioSource.maxDistance           = maxDistance;
    }
		void Start()
		{
			if(!audioSource)
			{
				Destroy(this);
				return;
			}

			origMinDist = audioSource.minDistance;
			origMaxDist = audioSource.maxDistance;
			origRolloffMode = audioSource.rolloffMode;
			audioSource.rolloffMode = AudioRolloffMode.Logarithmic;
			audioSource.spatialBlend = 1;
	
		}
 public void LoadDefaults()
 {
     this.m_bypassEffects = false;
     this.m_loop          = false;
     this.m_priority      = 0x80;
     this.m_volume        = 1f;
     this.m_pitch         = 1f;
     this.m_stereoPan     = 0f;
     this.m_spatialBlend  = 1f;
     this.m_reverbZoneMix = 1f;
     this.m_rolloffMode   = AudioRolloffMode.Linear;
     this.m_dopplerLevel  = 1f;
     this.m_minDistance   = 100f;
     this.m_maxDistance   = 500f;
     this.m_spread        = 0f;
 }
Example #28
0
        /// <summary>
        /// Applies options
        /// </summary>
        /// <param name="options"></param>
        public void ApplyOptions(AudioOption[] options)
        {
            if (options != null)
            {
                int len = options.Length;
                for (int i = 0; i < len; i++)
                {
                    AudioOption option = options[i];
                    switch (option.Type)
                    {
                    case AudioOptionType.AudioClip:
                        AudioClip = (AudioClip)option.Value;
                        break;

                    case AudioOptionType.Loop:
                        Loop = (bool)option.Value;
                        break;

                    case AudioOptionType.MaxVolume:
                        MaxDistance = (float)option.Value;
                        break;

                    case AudioOptionType.MinVolume:
                        MinDistance = (float)option.Value;
                        break;

                    case AudioOptionType.Pitch:
                        Pitch = (float)option.Value;
                        break;

                    case AudioOptionType.PitchRandomness:
                        PitchRandomness = (float)option.Value;
                        break;

                    case AudioOptionType.RolloffFactor:
                        RolloffMode = (AudioRolloffMode)option.Value;
                        break;

                    case AudioOptionType.Volume:
                        Volume = (float)option.Value;
                        break;
                    }
                }
            }
        }
Example #29
0
    public static AudioSource BuildAudioSource(
        GameObject go,
        bool loop,
        float spatial_blend          = 1.0f,
        float volume                 = 1.0f,
        AudioRolloffMode roloff_mode = AudioRolloffMode.Linear,
        bool play_on_awake           = false
        )
    {
        AudioSource a = go.AddComponent <AudioSource>();

        a.playOnAwake  = play_on_awake;
        a.spatialBlend = spatial_blend;
        a.rolloffMode  = roloff_mode;
        a.loop         = loop;
        a.volume       = volume;
        return(a);
    }
Example #30
0
        static public AudioSource Trigger(AudioClip audioClip, MMSoundManager.MMSoundManagerTracks mmSoundManagerTrack, Vector3 location,
                                          bool loop       = false, float volume            = 1.0f, int ID = 0,
                                          bool fade       = false, float fadeInitialVolume = 0f, float fadeDuration = 1f, MMTweenType fadeTween = null,
                                          bool persistent = false,
                                          AudioSource recycleAudioSource = null, AudioMixerGroup audioGroup = null,
                                          float pitch          = 1f, float panStereo = 0f, float spatialBlend = 0.0f,
                                          bool soloSingleTrack = false, bool soloAllTracks         = false, bool autoUnSoloOnEnd   = false,
                                          bool bypassEffects   = false, bool bypassListenerEffects = false, bool bypassReverbZones = false, int priority            = 128, float reverbZoneMix = 1f,
                                          float dopplerLevel   = 1f, int spread = 0, AudioRolloffMode rolloffMode = AudioRolloffMode.Logarithmic, float minDistance = 1f, float maxDistance    = 500f)
        {
            MMSoundManagerPlayOptions options = MMSoundManagerPlayOptions.Default;

            options.MmSoundManagerTrack = mmSoundManagerTrack;
            options.Location            = location;
            options.Loop                  = loop;
            options.Volume                = volume;
            options.ID                    = ID;
            options.Fade                  = fade;
            options.FadeInitialVolume     = fadeInitialVolume;
            options.FadeDuration          = fadeDuration;
            options.FadeTween             = fadeTween;
            options.Persistent            = persistent;
            options.RecycleAudioSource    = recycleAudioSource;
            options.AudioGroup            = audioGroup;
            options.Pitch                 = pitch;
            options.PanStereo             = panStereo;
            options.SpatialBlend          = spatialBlend;
            options.SoloSingleTrack       = soloSingleTrack;
            options.SoloAllTracks         = soloAllTracks;
            options.AutoUnSoloOnEnd       = autoUnSoloOnEnd;
            options.BypassEffects         = bypassEffects;
            options.BypassListenerEffects = bypassListenerEffects;
            options.BypassReverbZones     = bypassReverbZones;
            options.Priority              = priority;
            options.ReverbZoneMix         = reverbZoneMix;
            options.DopplerLevel          = dopplerLevel;
            options.Spread                = spread;
            options.RolloffMode           = rolloffMode;
            options.MinDistance           = minDistance;
            options.MaxDistance           = maxDistance;

            return(OnEvent?.Invoke(audioClip, options));
        }
 public AudioKnifeSettings()
 {
     output                = null;
     mute                  = false;
     bypassEffects         = false;
     bypassListenerEffects = false;
     bypassReverbZones     = false;
     priority              = 128;
     volume                = 1f;
     pitch                 = 1f;
     stereoPan             = 0f;
     spatialBlend          = 1f;
     reverbZoneMix         = 1f;
     dopplerLevel          = 1f;
     spread                = 0;
     volumeRolloff         = AudioRolloffMode.Logarithmic;
     minDistance           = 1f;
     maxDistance           = 500f;
 }
Example #32
0
    public void PlaySquencedSFX(AudioSource audioSource, GameObject gameobject, AudioMixer audiomixer, string audiomixergroup,
                                float pitchMin, float pitchMax, AudioClip[] clip01, AudioClip[] clip02,
                                float minVolumeClip01, float maxVolumeClip01, float minVolumeClip02, float maxVolumeClip02,
                                float spatialblend, int spread, float dopplerLevel, AudioRolloffMode rolloffMode, float mindistance, float maxdistance)
    {
        audioSource = gameobject.GetComponent <AudioSource>();
        audioSource.outputAudioMixerGroup = audiomixer.FindMatchingGroups(audiomixergroup)[0];

        audioSource.pitch        = Random.Range(pitchMin, pitchMax);
        audioSource.spatialBlend = spatialblend;
        audioSource.spread       = spread;
        audioSource.dopplerLevel = dopplerLevel;
        audioSource.rolloffMode  = rolloffMode;
        audioSource.minDistance  = mindistance;
        audioSource.maxDistance  = maxdistance;

        if (_clip01Index < clip01.Length)
        {
            audioSource.PlayOneShot(clip01[_clip01Index], Random.Range(minVolumeClip01, maxVolumeClip01));
            _clip01Index++;
        }
        else
        {
            _clip01Index = 0;
            audioSource.PlayOneShot(clip01[_clip01Index], Random.Range(minVolumeClip01, maxVolumeClip01));
            _clip01Index++;
        }

        if (clip02 != null)
        {
            if (_clip02Index < clip02.Length)
            {
                audioSource.PlayOneShot(clip02[_clip02Index], Random.Range(minVolumeClip02, maxVolumeClip02));
                _clip02Index++;
            }
            else
            {
                _clip02Index = 0;
                audioSource.PlayOneShot(clip02[_clip02Index], Random.Range(minVolumeClip02, maxVolumeClip02));
                _clip02Index++;
            }
        }
    }
Example #33
0
	public IEnumerator play( AudioRolloffMode rolloff, float volume, Vector3 position )
	{
		available = false;
		
		// Setup the GameObject and AudioSource and start playing
		gameObject.transform.position = position;
		
		audioSource.rolloffMode = rolloff;
		audioSource.volume = volume;
		//audioSource.pitch = Random.Range( 0.9f, 1.1f );
		audioSource.audio.Play();
		
		// Wait for the clip to finish
		yield return new WaitForSeconds( audioSource.clip.length + 0.1f );
		
		// Should we destory ourself after playing?
		if( destroyAfterPlay )
			this.destroySelf();
		
		available = true;
	}
Example #34
0
	public Sound playSound( AudioClip audioClip, AudioRolloffMode rolloff )
	{
		return playSound( audioClip, rolloff, 0.9f, Vector3.zero );
	}
Example #35
0
 public static void Play(this AudioClip clip, Vector3 position, float volume, float pitch, AudioRolloffMode rolloffMode, float minDistance, float maxDistance, float dopplerLevel, float spread)
 {
     SoundPool.Settings dEF = SoundPool.DEF;
     dEF.localPosition = position;
     dEF.clip = clip;
     dEF.volume = volume;
     dEF.pitch = pitch;
     dEF.doppler = dopplerLevel;
     dEF.min = minDistance;
     dEF.max = maxDistance;
     dEF.mode = rolloffMode;
     dEF.spread = spread;
     SoundPool.Play(ref dEF);
 }
Example #36
0
 public static void Play(this AudioClip clip, Transform on, Vector3 position, float volume, AudioRolloffMode rolloffMode, float minDistance, float maxDistance)
 {
     SoundPool.Settings dEF = SoundPool.DEF;
     dEF.SelectRoot = 6;
     dEF.parent = on;
     dEF.localPosition = position;
     dEF.clip = clip;
     dEF.volume = volume;
     dEF.min = minDistance;
     dEF.max = maxDistance;
     dEF.mode = rolloffMode;
     SoundPool.Play(ref dEF);
 }
Example #37
0
 public static void Play(this AudioClip clip, Vector3 position, Quaternion rotation, float volume, AudioRolloffMode rolloffMode, float minDistance, float maxDistance)
 {
     SoundPool.Settings dEF = SoundPool.DEF;
     dEF.localPosition = position;
     dEF.localRotation = rotation;
     dEF.clip = clip;
     dEF.volume = volume;
     dEF.min = minDistance;
     dEF.max = maxDistance;
     dEF.mode = rolloffMode;
     SoundPool.Play(ref dEF);
 }
Example #38
0
        //Transfers audio settings from an AudioSource. Only used in the editor
        public void TransferFromAudioSource(AudioSource source)
        {
            Loop = source.loop;
            Volume = source.volume;
            AudioClip = source.clip;
            BypassEffects = source.bypassEffects;
            BypassListenerEffects = source.bypassListenerEffects;
            BypassReverbZones = source.bypassReverbZones;
            DopplerLevel = source.dopplerLevel;
            MaxDistance = source.maxDistance;
            MinDistance = source.minDistance;
            Mute = source.mute;
            OutputAudioMixerGroup = source.outputAudioMixerGroup;
            PanStereo = source.panStereo;
            Pitch = source.pitch;
            Priority = source.priority;
            RolloffMode = source.rolloffMode;
            SpatialBlend = source.spatialBlend;
            ReverbZoneMix = source.reverbZoneMix;
            Spatialize = source.spatialize;

            if(RolloffMode == AudioRolloffMode.Custom)
            {
                CustomRolloffCurve = source.GetCustomCurve(AudioSourceCurveType.CustomRolloff);
            }
            else
            {
                CustomRolloffCurve = null;
            }
        }
 /// Updates the audio source with given |id| and its properties.
 /// @note This should only be called from the main Unity thread.
 public static void UpdateAudioSource (int id, Transform transform, float gainDb,
                                       AudioRolloffMode rolloffMode, float minDistance,
                                       float maxDistance, float alpha, float sharpness,
                                       float occlusion) {
   if (initialized) {
     float gain = ConvertAmplitudeFromDb(gainDb);
     Vector3 position = transform.position;
     Quaternion rotation = transform.rotation;
     float scale = worldScaleInverse * Mathf.Max(transform.lossyScale.x, transform.lossyScale.y,
                                                 transform.lossyScale.z);
     ConvertAudioTransformFromUnity(ref position, ref rotation);
     // Pass the source properties to the audio system.
     SetSourceDirectivity(id, alpha, sharpness);
     SetSourceGain(id, gain);
     SetSourceOcclusionIntensity(id, occlusion);
     if (rolloffMode != AudioRolloffMode.Custom) {
       SetSourceDistanceAttenuationMethod(id, rolloffMode, minDistance, maxDistance);
     }
     SetSourceTransform(id, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z,
                        rotation.w, scale);
   }
 }
 private static extern void SetSourceDistanceAttenuationMethod (int sourceId,
                                                                AudioRolloffMode rolloffMode,
                                                                float minDistance,
                                                                float maxDistance);
Example #41
0
    public override void OnInspectorGUI()
    {
        // Update the serializedProperty - always do this in the beginning of OnInspectorGUI.
        serializedObject.Update();

        Id.stringValue = EditorGUILayout.TextField("Id", Id.stringValue);

        AudioClip.objectReferenceValue = EditorGUILayout.ObjectField("AudioClip", AudioClip.objectReferenceValue, typeof(AudioClip), true);

        Volume.floatValue = EditorGUILayout.Slider("Volume", Volume.floatValue, 0, 1);
        ProgressBar(Volume.floatValue, "Volume");

        Loop.boolValue = EditorGUILayout.Toggle("Loop", Loop.boolValue);

        Pitch.floatValue = EditorGUILayout.Slider("Pitch", Pitch.floatValue, 0, 1);
        PitchRandomness.floatValue = EditorGUILayout.Slider("PitchRandomness", PitchRandomness.floatValue, 0, 1);
        
        MinDistance.floatValue = EditorGUILayout.Slider("MinDistance", MinDistance.floatValue, 0, 1);
        
        MaxDistance.floatValue = EditorGUILayout.Slider("MaxDistance", MaxDistance.floatValue, 0, 1);
        
        // TODO: BUG: this never gets applied. Try to work it out.
        _rolloffMode = (AudioRolloffMode) EditorGUILayout.EnumPopup("RolloffMode", _rolloffMode);
        RolloffMode.enumValueIndex = (int) _rolloffMode;

        // Apply changes to the serializedProperty - always do this in the end of OnInspectorGUI.
        serializedObject.ApplyModifiedProperties();
    }
Example #42
0
 /// Updates the audio source with given |id| and its properties.
 /// @note This should only be called from the main Unity thread.
 public static void UpdateAudioSource (int id, Transform transform, bool bypassRoomEffects,
                                       float gainDb, float spread, AudioRolloffMode rolloffMode,
                                       float minDistance, float maxDistance, float alpha,
                                       float sharpness, float occlusion) {
   if (initialized) {
     float gain = ConvertAmplitudeFromDb(gainDb);
     Vector3 position = transform.position;
     Quaternion rotation = transform.rotation;
     ConvertAudioTransformFromUnity(ref position, ref rotation);
     float spreadRad = Mathf.Deg2Rad * spread;
     // Pass the source properties to the audio system.
     SetSourceBypassRoomEffects(id, bypassRoomEffects);
     SetSourceDirectivity(id, alpha, sharpness);
     SetSourceGain(id, gain);
     SetSourceOcclusionIntensity(id, occlusion);
     if (rolloffMode != AudioRolloffMode.Custom) {
       float maxDistanceScaled = worldScaleInverse * maxDistance;
       float minDistanceScaled = worldScaleInverse * minDistance;
       SetSourceDistanceAttenuationMethod(id, rolloffMode, minDistanceScaled, maxDistanceScaled);
     }
     SetSourceSpread(id, spreadRad);
     SetSourceTransform(id, position.x, position.y, position.z, rotation.x, rotation.y, rotation.z,
                        rotation.w);
   }
 }
Example #43
0
        /// <summary>
        /// Applies options
        /// </summary>
        /// <param name="options"></param>
        public void ApplyOptions(AudioOption[] options)
        {
            if (options != null)
            {
                int len = options.Length;
                for (int i = 0; i < len; i++)
                {
                    AudioOption option = options[i];
                    switch (option.Type)
                    {
                        case AudioOptionType.AudioClip:
                            AudioClip = (AudioClip)option.Value;
                            break;

                        case AudioOptionType.Loop:
                            Loop = (bool)option.Value;
                            break;

                        case AudioOptionType.MaxVolume:
                            MaxDistance = (float)option.Value;
                            break;

                        case AudioOptionType.MinVolume:
                            MinDistance = (float)option.Value;
                            break;

                        case AudioOptionType.Pitch:
                            Pitch = (float)option.Value;
                            break;

                        case AudioOptionType.PitchRandomness:
                            PitchRandomness = (float)option.Value;
                            break;

                        case AudioOptionType.RolloffFactor:
                            RolloffMode = (AudioRolloffMode) option.Value;
                            break;

                        case AudioOptionType.Volume:
                            Volume = (float)option.Value;
                            break;
                    }
                }
            }
        }
Example #44
0
 public Player3D(AudioClip clip)
 {
     this.super = new SoundPool.PlayerShared(clip);
     this.minDistance = SoundPool.DEF.min;
     this.maxDistance = SoundPool.DEF.max;
     this.spread = SoundPool.DEF.spread;
     this.dopplerLevel = SoundPool.DEF.doppler;
     this.panLevel = SoundPool.DEF.panLevel;
     this.rolloffMode = SoundPool.DEF.mode;
     this.bypassEffects = SoundPool.DEF.bypassEffects;
     this.cameraSticky = false;
 }
Example #45
0
	public Sound playSound( AudioClip audioClip, AudioRolloffMode rolloff, float volume )
	{
		return playSound( audioClip, rolloff, 0.9f );
	}
Example #46
0
 public override void OnReset()
 {
     targetGameObject = null;
     rolloffMode = AudioRolloffMode.Logarithmic;
 }
Example #47
0
 public static void PlayLocal(this AudioClip clip, Transform on, Vector3 position, Quaternion rotation, float volume, float pitch, AudioRolloffMode rolloffMode, float minDistance, float maxDistance, float dopplerLevel)
 {
     SoundPool.Settings dEF = SoundPool.DEF;
     dEF.SelectRoot = 2;
     dEF.parent = on;
     dEF.localPosition = position;
     dEF.localRotation = rotation;
     dEF.clip = clip;
     dEF.volume = volume;
     dEF.pitch = pitch;
     dEF.doppler = dopplerLevel;
     dEF.min = minDistance;
     dEF.max = maxDistance;
     dEF.mode = rolloffMode;
     SoundPool.Play(ref dEF);
 }
Example #48
0
	public Sound playSound( AudioClip audioClip, AudioRolloffMode rolloff, float volume, Vector3 position )
	{
		/*
		bool multiPlay = false;
		if( !multiPlay )
		{
			if( GameObject.Find( "/" + audioClip.name ) || GameObject.Find( "/" + audioClip.name + "(clone)" ) )
				return;
		}
		*/
		
		// Find the first Sound not being used.  If they are all in use, create a new one
		// we prefer to find a sound that is available and has the same clipname as the current one
		Sound _sound = null;
		bool clipLoaded = false;
		bool foundEmpty = false;
		
		foreach( var s in _soundList )
		{
			// dont care about sounds that arent available
			if( !s.available )
				continue;
			
			if( s.gameObject.name == audioClip.name )
			{
				_sound = s;
				clipLoaded = true;
				break;
			}
			else
			{
				// if we already found an empty no need to check any further
				if( foundEmpty )
					continue;
				
				// empties are preferred if we didnt find a Sound with the clip already loaded
				if( s.gameObject.name == "empty" )
					foundEmpty = true;

				_sound = s;
			}
		}
		
		/* dumb search for available sounds
		Sound _sound = _soundList.Find( delegate( Sound s )
		{
			return s.available;
		});
		*/
		
		// if we didnt find an available found, bail out
		if( _sound == null )
		{
			_sound = new Sound( this );
			_sound.destroyAfterPlay = true;
			_soundList.Add( _sound );
		}
		
		// if we found a preloaded clip then use it
		if( clipLoaded )
			StartCoroutine( _sound.play( rolloff, volume, position ) );
		else
			StartCoroutine( _sound.playAudioClip( audioClip, rolloff, volume, position ) );
		
		return _sound;
	}
 public override void OnReset()
 {
     rolloffMode = AudioRolloffMode.Logarithmic;
 }
Example #50
0
 /*
 ============================================================================
 Action functions
 ============================================================================
 */
 public void SetAudioClip(AudioClip a, float v, float min, float max, float p, AudioRolloffMode arm)
 {
     this.audioClip = a;
     this.aVolume = v;
     this.aMinDistance = min;
     this.aMaxDistance = max;
     this.aPitch = p;
     this.audioRolloffMode = arm;
 }
Example #51
0
 public static void Play(this AudioClip clip, Transform on, Vector3 position, float volume, float pitch, AudioRolloffMode rolloffMode, float minDistance, float maxDistance, float dopplerLevel, float spread, bool bypassEffects)
 {
     SoundPool.Settings dEF = SoundPool.DEF;
     dEF.SelectRoot = 6;
     dEF.parent = on;
     dEF.localPosition = position;
     dEF.clip = clip;
     dEF.volume = volume;
     dEF.pitch = pitch;
     dEF.doppler = dopplerLevel;
     dEF.min = minDistance;
     dEF.max = maxDistance;
     dEF.spread = spread;
     dEF.bypassEffects = bypassEffects;
     dEF.mode = rolloffMode;
     SoundPool.Play(ref dEF);
 }