コード例 #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);
     }
 }
コード例 #2
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, 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);
     }
 }
コード例 #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());
        }
コード例 #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();
    }
コード例 #5
0
        /// <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();
        }
コード例 #6
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 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);
     }
 }
コード例 #7
0
        /// <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
        }
コード例 #8
0
        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);
            }
        }
コード例 #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;
            }
        }
コード例 #10
0
        /// <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);
        }
コード例 #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);
    }
コード例 #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 );
	}
コード例 #13
0
ファイル: Sound.cs プロジェクト: t-nodi/P31UnityAddOns
    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));
    }
コード例 #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);
    }
コード例 #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;
 }
コード例 #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);
 }
コード例 #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());
        }
コード例 #18
0
        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());
        }
コード例 #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;
 }
コード例 #20
0
        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());
        }
コード例 #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);
    }
コード例 #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;
 }
コード例 #23
0
        void Start()
        {
            if (!audioSource)
            {
                Destroy(this);
                return;
            }

            origMinDist              = audioSource.minDistance;
            origMaxDist              = audioSource.maxDistance;
            origRolloffMode          = audioSource.rolloffMode;
            audioSource.rolloffMode  = AudioRolloffMode.Logarithmic;
            audioSource.spatialBlend = 1;
        }
コード例 #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;
 }
コード例 #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;
    }
コード例 #26
0
		void Start()
		{
			if(!audioSource)
			{
				Destroy(this);
				return;
			}

			origMinDist = audioSource.minDistance;
			origMaxDist = audioSource.maxDistance;
			origRolloffMode = audioSource.rolloffMode;
			audioSource.rolloffMode = AudioRolloffMode.Logarithmic;
			audioSource.spatialBlend = 1;
	
		}
コード例 #27
0
 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;
 }
コード例 #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;
                    }
                }
            }
        }
コード例 #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);
    }
コード例 #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));
        }
コード例 #31
0
 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;
 }
コード例 #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++;
            }
        }
    }
コード例 #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;
	}
コード例 #34
0
	public Sound playSound( AudioClip audioClip, AudioRolloffMode rolloff )
	{
		return playSound( audioClip, rolloff, 0.9f, Vector3.zero );
	}
コード例 #35
0
ファイル: SoundPool.cs プロジェクト: HexHash/LegacyRust
 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);
 }
コード例 #36
0
ファイル: SoundPool.cs プロジェクト: HexHash/LegacyRust
 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);
 }
コード例 #37
0
ファイル: SoundPool.cs プロジェクト: HexHash/LegacyRust
 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);
 }
コード例 #38
0
ファイル: AudioManager.cs プロジェクト: pacificIT/UberAudio
        //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;
            }
        }
コード例 #39
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, 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);
   }
 }
コード例 #40
0
 private static extern void SetSourceDistanceAttenuationMethod (int sourceId,
                                                                AudioRolloffMode rolloffMode,
                                                                float minDistance,
                                                                float maxDistance);
コード例 #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();
    }
コード例 #42
0
ファイル: GvrAudio.cs プロジェクト: 2954722256/gvr-unity-sdk
 /// 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);
   }
 }
コード例 #43
0
ファイル: AudioToken.cs プロジェクト: adahera222/eDriven
        /// <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;
                    }
                }
            }
        }
コード例 #44
0
ファイル: SoundPool.cs プロジェクト: HexHash/LegacyRust
 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;
 }
コード例 #45
0
	public Sound playSound( AudioClip audioClip, AudioRolloffMode rolloff, float volume )
	{
		return playSound( audioClip, rolloff, 0.9f );
	}
コード例 #46
0
ファイル: SetRolloffMode.cs プロジェクト: dev-celvin/DK
 public override void OnReset()
 {
     targetGameObject = null;
     rolloffMode = AudioRolloffMode.Logarithmic;
 }
コード例 #47
0
ファイル: SoundPool.cs プロジェクト: HexHash/LegacyRust
 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);
 }
コード例 #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;
	}
コード例 #49
0
 public override void OnReset()
 {
     rolloffMode = AudioRolloffMode.Logarithmic;
 }
コード例 #50
0
ファイル: DamageDealer.cs プロジェクト: hughrogers/RPGQuest
 /*
 ============================================================================
 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;
 }
コード例 #51
0
ファイル: SoundPool.cs プロジェクト: HexHash/LegacyRust
 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);
 }