예제 #1
0
    private void FinishSetupToPlay(float maxVolume)
    {
        //Debug.Log("finishing setup");
        timesLocationUpdated = 0;

        if (!_audio.isPlaying && _audio.time > 0f)
        {
            // paused. Do nothing except Play
        }
        else if (useFades && (fadeInTime > 0f || fadeOutTime > 0f))
        {
            fadeMaxVolume = maxVolume;
            _audio.volume = 0f;
            StartCoroutine(FadeInOut());
        }

        if (playSndParams != null && playSndParams.isChainLoop)
        {
            _audio.loop = false;
        }

        ParentGroup.AddActiveAudioSourceId(this);

        StartCoroutine(DetectSoundFinished(playSndParams.delaySoundTime));

        attachToSource = false;

        bool useClipAgePriority = MasterAudio.Instance.prioritizeOnDistance && (MasterAudio.Instance.useClipAgePriority || ParentGroup.useClipAgePriority);

        if (playSndParams.attachToSource || useClipAgePriority)
        {
            attachToSource = playSndParams.attachToSource;
            if (ObjectToFollow != null && ObjectToFollow.root.GetInstanceID() == MasterAudio.ListenerID)
            {
                AudioUpdater updater = gameObject.AddComponent <AudioUpdater>();
                updater.FollowTransform = ObjectToFollow;
                attachToSource          = false;        // Do not modify playParams as the sound group may contain more variations
                ObjectToFollow          = null;
            }
            StartCoroutine(FollowSoundMaker());
        }
    }
예제 #2
0
    /// <summary>
    /// This method allows you to stop the audio being played by this Variation. 
    /// </summary>
    public void Stop(bool stopEndDetection = false)
    {
        if (stopEndDetection || isWaitingForDelay)
        {
            curDetectEndMode = DetectEndMode.None; // turn off the chain loop endless repeat
        }
		
		objectToFollow = null;	
        objectToTriggerFrom = null;
		ParentGroup.RemoveActiveAudioSourceId(InstanceId);
		
        VarAudio.Stop();
		VarAudio.time = 0f;
		
        playSndParams = null;

        if (SoundFinished != null)
        {
            SoundFinished(); // parameters aren't used
			SoundFinished = null; // clear it out so subscribers don't have to clean up
		}
		
		if (_updater != null) {
			GameObject.Destroy(_updater);
			_updater = null;
		}		
		
        MaybeUnloadClip();
    }
예제 #3
0
	public void FinishSetupToPlay() {
		timesLocationUpdated = 0;

        if (!VarAudio.isPlaying && VarAudio.time > 0f)
        {
            // paused. Do nothing except Play
        }
        else if (useFades && (fadeInTime > 0f || fadeOutTime > 0f))
        {
            fadeMaxVolume = _maxVol;
            VarAudio.volume = 0f;
            StartCoroutine(FadeInOut());
        }
		
		VarAudio.loop = this.audioLoops; // restore original loop setting in case it got lost by loop setting code below for a previous play.
		
        if (playSndParams != null && (playSndParams.isChainLoop || playSndParams.isSingleSubscribedPlay)) {
            VarAudio.loop = false;
        }

        if (playSndParams == null)
        {
            return; // has already been "stop" 'd.
        }

        ParentGroup.AddActiveAudioSourceId(InstanceId);

        StartCoroutine(DetectSoundFinished(playSndParams.delaySoundTime));

        attachToSource = false;

        bool useClipAgePriority = MasterAudio.Instance.prioritizeOnDistance && (MasterAudio.Instance.useClipAgePriority || ParentGroup.useClipAgePriority);
        if (playSndParams.attachToSource || useClipAgePriority)
        {
            attachToSource = playSndParams.attachToSource;
	        if (ObjectToFollow != null) {
                if (ObjectToFollow.root.GetInstanceID() == MasterAudio.ListenerID) {
				    _updater = _go.GetComponent<AudioUpdater>() ?? _go.AddComponent<AudioUpdater>();
				    _updater.FollowTransform = ObjectToFollow;
				    attachToSource = false;	// Do not modify playParams as the sound group may contain more variations
				    ObjectToFollow = null;
                }
			}
            StartCoroutine(FollowSoundMaker());
        }
	}
예제 #4
0
    private void FinishSetupToPlay()
    {
        if (!VarAudio.isPlaying && VarAudio.time > 0f) {
            // paused. Do nothing except Play
        } else if (useFades && (fadeInTime > 0f || fadeOutTime > 0f)) {
            fadeMaxVolume = _maxVol;
            VarAudio.volume = 0f;
            if (VariationUpdater != null) {
                VariationUpdater.enabled = true;
                VariationUpdater.FadeInOut();
            }
        }

        VarAudio.loop = this.AudioLoops; // restore original loop setting in case it got lost by loop setting code below for a previous play.

        if (playSndParam.isPlaying && (playSndParam.isChainLoop || playSndParam.isSingleSubscribedPlay)) {
            VarAudio.loop = false;
        }

        if (!playSndParam.isPlaying) {
            return; // has already been "stop" 'd.
        }

        ParentGroup.AddActiveAudioSourceId(InstanceId);

        if (VariationUpdater != null) {
            VariationUpdater.enabled = true;
            VariationUpdater.WaitForSoundFinish(playSndParam.delaySoundTime);
        }

        attachToSource = false;

        bool useClipAgePriority = MasterAudio.Instance.prioritizeOnDistance && (MasterAudio.Instance.useClipAgePriority || ParentGroup.useClipAgePriority);

        if (playSndParam.attachToSource || useClipAgePriority) {
            attachToSource = playSndParam.attachToSource;
            if (ObjectToFollow != null) {
                if (ObjectToFollow.root.GetInstanceID() == MasterAudio.ListenerID) {
                    _updater = GameObj.GetComponent<AudioUpdater>() ?? GameObj.AddComponent<AudioUpdater>();
                    _updater.FollowTransform = ObjectToFollow;
                    attachToSource = false;	// Do not modify playParams as the sound group may contain more variations
                    ObjectToFollow = null;
                }
            }

            if (VariationUpdater != null) {
                VariationUpdater.FollowObject(attachToSource, ObjectToFollow, useClipAgePriority);
            }
        }
    }
예제 #5
0
    /// <summary>
    /// This method allows you to stop the audio being played by this Variation. 
    /// </summary>
    public void Stop(bool stopEndDetection = false)
    {
        var waitStopped = false;

        if (stopEndDetection || isWaitingForDelay) {
            if (VariationUpdater != null) {
                VariationUpdater.StopWaitingForFinish(); // turn off the chain loop endless repeat
                waitStopped = true;
            }
        }

        objectToFollow = null;
        objectToTriggerFrom = null;
        ParentGroup.RemoveActiveAudioSourceId(InstanceId);

        VarAudio.Stop();
        VarAudio.time = 0f;
        if (VariationUpdater != null) {
            VariationUpdater.StopFollowing();
            VariationUpdater.StopFading();
        }

        if (!waitStopped) {
            if (VariationUpdater != null) {
                VariationUpdater.StopWaitingForFinish();
            }
        }

        playSndParam.isPlaying = false;

        if (SoundFinished != null) {
            SoundFinished(); // parameters aren't used
            SoundFinished = null; // clear it out so subscribers don't have to clean up
        }

        if (_updater != null) {
            GameObject.Destroy(_updater);
            _updater = null;
        }

        MaybeUnloadClip();
    }