Provides an easy wrapper to looping audio sources with nice transitions for volume when starting and stopping
        protected override void Awake()
        {
            base.Awake();

            // constant effect, so set the duration really high and add an infinite looping sound
            LoopingAudioSource = new LoopingAudioSource(this, AudioSource, StartTime, StopTime);
            Duration = 999999999;
        }
示例#2
0
    protected override void OnEnable()
    {
        base.OnEnable();

        // constant effect, so set the duration really high and add an infinite looping sound
        LoopingAudioSource = new LoopingAudioSource(this, AudioSource, StartTime, StopTime);
        Duration           = 1;
    }
示例#3
0
    protected virtual void Start()
    {
#if DEBUG
        if (RainFallParticleSystem == null)
        {
            Debug.LogError("Rain fall particle system must be set to a particle system");
            return;
        }
#endif

        if (Camera == null)
        {
            Camera = Camera.main;
        }

        audioSourceRainLight  = new LoopingAudioSource(this, RainSoundLight, RainSoundAudioMixer);
        audioSourceRainMedium = new LoopingAudioSource(this, RainSoundMedium, RainSoundAudioMixer);
        audioSourceRainHeavy  = new LoopingAudioSource(this, RainSoundHeavy, RainSoundAudioMixer);
        audioSourceWind       = new LoopingAudioSource(this, WindSound, RainSoundAudioMixer);

        if (RainFallParticleSystem != null)
        {
            ParticleSystem.EmissionModule e = RainFallParticleSystem.emission;
            e.enabled = false;
            Renderer rainRenderer = RainFallParticleSystem.GetComponent <Renderer>();
            rainRenderer.enabled = false;
            rainMaterial         = new Material(rainRenderer.material);
            rainMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            rainRenderer.material = rainMaterial;
        }
        if (RainExplosionParticleSystem != null)
        {
            ParticleSystem.EmissionModule e = RainExplosionParticleSystem.emission;
            e.enabled = false;
            Renderer rainRenderer = RainExplosionParticleSystem.GetComponent <Renderer>();
            rainExplosionMaterial = new Material(rainRenderer.material);
            rainExplosionMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            rainRenderer.material = rainExplosionMaterial;
        }
        if (RainMistParticleSystem != null)
        {
            ParticleSystem.EmissionModule e = RainMistParticleSystem.emission;
            e.enabled = false;
            Renderer rainRenderer = RainMistParticleSystem.GetComponent <Renderer>();
            rainRenderer.enabled = false;
            rainMistMaterial     = new Material(rainRenderer.material);
            if (UseRainMistSoftParticles)
            {
                rainMistMaterial.EnableKeyword("SOFTPARTICLES_ON");
            }
            else
            {
                rainMistMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            }
            rainRenderer.material = rainMistMaterial;
        }
    }
示例#4
0
    // Use this for initialization
    void Start()
    {
        if (Camera == null)
        {
            Camera = Camera.main;
        }

        audioSourceRainLight  = new LoopingAudioSource(this, RainSoundLight);
        audioSourceRainMedium = new LoopingAudioSource(this, RainSoundMedium);
        audioSourceRainHeavy  = new LoopingAudioSource(this, RainSoundHeavy);
        audioSourceWind       = new LoopingAudioSource(this, WindSound);

        if (RainFallParticleSystem != null)
        {
            RainFallParticleSystem.enableEmission = false;
            Renderer rainRenderer = RainFallParticleSystem.GetComponent <Renderer>();
            rainRenderer.enabled = false;
            rainMaterial         = new Material(rainRenderer.material);
            rainMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            rainRenderer.material = rainMaterial;
        }
        if (RainExplosionParticleSystem != null)
        {
            Renderer rainRenderer = RainExplosionParticleSystem.GetComponent <Renderer>();
            rainExplosionMaterial = new Material(rainRenderer.material);
            rainExplosionMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            rainRenderer.material = rainExplosionMaterial;
        }
        if (RainMistParticleSystem != null)
        {
            RainMistParticleSystem.enableEmission = false;
            Renderer rainRenderer = RainMistParticleSystem.GetComponent <Renderer>();
            rainRenderer.enabled = false;
            rainMistMaterial     = new Material(rainRenderer.material);
            rainMistMaterial.EnableKeyword("SOFTPARTICLES_ON");
            rainRenderer.material = rainMistMaterial;
        }
    }
示例#5
0
 private void CheckForRainChange()
 {
     if (lastRainValue != RainIntensity)
     {
         lastRainValue = RainIntensity;
         if (RainIntensity <= 0.01f)
         {
             if (audioSourceRainCurrent != null)
             {
                 audioSourceRainCurrent.Stop();
                 audioSourceRainCurrent = null;
             }
             if (RainFallParticleSystem != null)
             {
                 RainFallParticleSystem.enableEmission = false;
             }
             if (RainMistParticleSystem != null)
             {
                 RainMistParticleSystem.enableEmission = false;
             }
         }
         else
         {
             LoopingAudioSource newSource;
             if (RainIntensity >= 0.67f)
             {
                 newSource = audioSourceRainHeavy;
             }
             else if (RainIntensity >= 0.33f)
             {
                 newSource = audioSourceRainMedium;
             }
             else
             {
                 newSource = audioSourceRainLight;
             }
             if (audioSourceRainCurrent != newSource)
             {
                 if (audioSourceRainCurrent != null)
                 {
                     audioSourceRainCurrent.Stop();
                 }
                 audioSourceRainCurrent = newSource;
                 audioSourceRainCurrent.Play(1.0f);
             }
             if (RainFallParticleSystem != null)
             {
                 RainFallParticleSystem.enableEmission = RainFallParticleSystem.GetComponent <Renderer>().enabled = true;
                 RainFallParticleSystem.emissionRate   = (RainFallParticleSystem.maxParticles / RainFallParticleSystem.startLifetime) * RainIntensity;
             }
             if (RainMistParticleSystem != null)
             {
                 RainMistParticleSystem.enableEmission = RainMistParticleSystem.GetComponent <Renderer>().enabled = true;
                 float emissionRate;
                 if (RainIntensity < 0.5f)
                 {
                     emissionRate = 0.0f;
                 }
                 else
                 {
                     // must have 0.5 or higher rain intensity to start seeing mist
                     emissionRate = (RainMistParticleSystem.maxParticles / RainMistParticleSystem.startLifetime) * RainIntensity * RainIntensity;
                 }
                 RainMistParticleSystem.emissionRate = emissionRate;
             }
         }
     }
 }
示例#6
0
 private void CheckForRainChange()
 {
     if (lastIntensityValue != Intensity)
         {
             lastIntensityValue = Intensity;
             if (Intensity <= 0.01f)
             {
                 if (audioSourceCurrent != null)
                 {
                     audioSourceCurrent.Stop();
                     audioSourceCurrent = null;
                 }
                 if (FallParticleSystem != null)
                 {
                     ParticleSystem.EmissionModule e = FallParticleSystem.emission;
                     e.enabled = false;
                     FallParticleSystem.Stop();
                 }
                 if (MistParticleSystem != null)
                 {
                     ParticleSystem.EmissionModule e = MistParticleSystem.emission;
                     e.enabled = false;
                     MistParticleSystem.Stop();
                 }
             }
             else
             {
                 LoopingAudioSource newSource;
                 if (Intensity >= 0.67f)
                 {
                     newSource = audioSourceHeavy;
                 }
                 else if (Intensity >= 0.33f)
                 {
                     newSource = audioSourceMedium;
                 }
                 else
                 {
                     newSource = audioSourceLight;
                 }
                 if (audioSourceCurrent != newSource)
                 {
                     if (audioSourceCurrent != null)
                     {
                         audioSourceCurrent.Stop();
                     }
                     audioSourceCurrent = newSource;
                     audioSourceCurrent.Play(1.0f);
                 }
                 if (FallParticleSystem != null)
                 {
                     ParticleSystem.EmissionModule e = FallParticleSystem.emission;
                     e.enabled = FallParticleSystem.GetComponent<Renderer>().enabled = true;
                     FallParticleSystem.Play();
                     ParticleSystem.MinMaxCurve rate = e.rate;
                     rate.mode = ParticleSystemCurveMode.Constant;
                     rate.constantMin = rate.constantMax = RainFallEmissionRate();
                     e.rate = rate;
                 }
                 if (MistParticleSystem != null)
                 {
                     ParticleSystem.EmissionModule e = MistParticleSystem.emission;
                     e.enabled = MistParticleSystem.GetComponent<Renderer>().enabled = true;
                     MistParticleSystem.Play();
                     float emissionRate;
                     if (Intensity < MistThreshold)
                     {
                         emissionRate = 0.0f;
                     }
                     else
                     {
                         emissionRate = MistEmissionRate();
                     }
                     ParticleSystem.MinMaxCurve rate = e.rate;
                     rate.mode = ParticleSystemCurveMode.Constant;
                     rate.constantMin = rate.constantMax = emissionRate;
                     e.rate = rate;
                 }
             }
         }
 }
示例#7
0
    protected virtual void Start()
    {
        #if DEBUG

            if (FallParticleSystem == null)
            {
                Debug.LogError("Fall particle is not detected");
                return;
            }

        #endif

            if (Camera == null)
            {
                Camera = Camera.main;
            }

            audioSourceLight = new LoopingAudioSource(this, SoundLight);
            audioSourceMedium = new LoopingAudioSource(this, SoundMedium);
            audioSourceHeavy = new LoopingAudioSource(this, SoundHeavy);
            audioSourceWind = new LoopingAudioSource(this, WindSound);

            if (FallParticleSystem != null)
            {
                ParticleSystem.EmissionModule e = FallParticleSystem.emission;
                e.enabled = false;
                Renderer rainRenderer = FallParticleSystem.GetComponent<Renderer>();
                rainRenderer.enabled = false;
                material = new Material(rainRenderer.material);
                rainRenderer.material = material;
            }
            if (ExplosionParticleSystem != null)
            {
                ParticleSystem.EmissionModule e = ExplosionParticleSystem.emission;
                e.enabled = false;
                Renderer rainRenderer = ExplosionParticleSystem.GetComponent<Renderer>();
                explosionMaterial = new Material(rainRenderer.material);
                rainRenderer.material = explosionMaterial;
            }
            if (MistParticleSystem != null)
            {
                ParticleSystem.EmissionModule e = MistParticleSystem.emission;
                e.enabled = false;
                Renderer rainRenderer = MistParticleSystem.GetComponent<Renderer>();
                rainRenderer.enabled = false;
                mistMaterial = new Material(rainRenderer.material);
                rainRenderer.material = mistMaterial;
            }
    }
示例#8
0
 private void CheckForRainChange()
 {
     if (lastRainIntensityValue != RainIntensity)
     {
         lastRainIntensityValue = RainIntensity;
         if (RainIntensity <= 0.01f)
         {
             if (audioSourceRainCurrent != null)
             {
                 audioSourceRainCurrent.Stop();
                 audioSourceRainCurrent = null;
             }
             if (RainFallParticleSystem != null)
             {
                 ParticleSystem.EmissionModule e = RainFallParticleSystem.emission;
                 e.enabled = false;
                 RainFallParticleSystem.Stop();
             }
             if (RainMistParticleSystem != null)
             {
                 ParticleSystem.EmissionModule e = RainMistParticleSystem.emission;
                 e.enabled = false;
                 RainMistParticleSystem.Stop();
             }
         }
         else
         {
             LoopingAudioSource newSource;
             if (RainIntensity >= 0.7f)
             {
                 newSource = audioSourceRainHeavy;
             }
             else if (RainIntensity >= 0.3f)
             {
                 newSource = audioSourceRainMedium;
             }
             else
             {
                 newSource = audioSourceRainLight;
             }
             if (audioSourceRainCurrent != newSource)
             {
                 if (audioSourceRainCurrent != null)
                 {
                     audioSourceRainCurrent.Stop();
                 }
                 audioSourceRainCurrent = newSource;
                 audioSourceRainCurrent.Play(0.6f);
             }
             if (RainFallParticleSystem != null)
             {
                 ParticleSystem.EmissionModule e = RainFallParticleSystem.emission;
                 e.enabled = RainFallParticleSystem.GetComponent <Renderer>().enabled = true;
                 if (!RainFallParticleSystem.isPlaying)
                 {
                     RainFallParticleSystem.Play();
                 }
                 ParticleSystem.MinMaxCurve rate = e.rateOverTime;
                 rate.mode        = ParticleSystemCurveMode.Constant;
                 rate.constantMin = rate.constantMax = RainFallEmissionRate();
                 e.rateOverTime   = rate;
             }
             if (RainMistParticleSystem != null)
             {
                 ParticleSystem.EmissionModule e = RainMistParticleSystem.emission;
                 e.enabled = RainMistParticleSystem.GetComponent <Renderer>().enabled = true;
                 if (!RainMistParticleSystem.isPlaying)
                 {
                     RainMistParticleSystem.Play();
                 }
                 float emissionRate;
                 if (RainIntensity < RainMistThreshold)
                 {
                     emissionRate = 0.0f;
                 }
                 else
                 {
                     // must have RainMistThreshold or higher rain intensity to start seeing mist
                     emissionRate = MistEmissionRate();
                 }
                 ParticleSystem.MinMaxCurve rate = e.rateOverTime;
                 rate.mode        = ParticleSystemCurveMode.Constant;
                 rate.constantMin = rate.constantMax = emissionRate;
                 e.rateOverTime   = rate;
             }
         }
     }
 }
示例#9
0
    // Use this for initialization
    void Start()
    {
        if (Camera == null)
        {
            Camera = Camera.main;
        }

        audioSourceRainLight = new LoopingAudioSource(this, RainSoundLight);
        audioSourceRainMedium = new LoopingAudioSource(this, RainSoundMedium);
        audioSourceRainHeavy = new LoopingAudioSource(this, RainSoundHeavy);
        audioSourceWind = new LoopingAudioSource(this, WindSound);

        if (RainFallParticleSystem != null)
        {
            RainFallParticleSystem.enableEmission = false;
            Renderer rainRenderer = RainFallParticleSystem.GetComponent<Renderer>();
            rainRenderer.enabled = false;
            rainMaterial = new Material(rainRenderer.material);
            rainMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            rainRenderer.material = rainMaterial;
        }
        if (RainExplosionParticleSystem != null)
        {
            Renderer rainRenderer = RainExplosionParticleSystem.GetComponent<Renderer>();
            rainExplosionMaterial = new Material(rainRenderer.material);
            rainExplosionMaterial.EnableKeyword("SOFTPARTICLES_OFF");
            rainRenderer.material = rainExplosionMaterial;
        }
        if (RainMistParticleSystem != null)
        {
            RainMistParticleSystem.enableEmission = false;
            Renderer rainRenderer = RainMistParticleSystem.GetComponent<Renderer>();
            rainRenderer.enabled = false;
            rainMistMaterial = new Material(rainRenderer.material);
			rainMistMaterial.EnableKeyword("SOFTPARTICLES_ON");
            rainRenderer.material = rainMistMaterial;
        }
    }
示例#10
0
 private void CheckForRainChange()
 {
     if (lastRainValue != RainIntensity)
     {
         lastRainValue = RainIntensity;
         if (RainIntensity <= 0.01f)
         {
             if (audioSourceRainCurrent != null)
             {
                 audioSourceRainCurrent.Stop();
                 audioSourceRainCurrent = null;
             }
             if (RainFallParticleSystem != null)
             {
                 RainFallParticleSystem.enableEmission = false;
             }
             if (RainMistParticleSystem != null)
             {
                 RainMistParticleSystem.enableEmission = false;
             }
         }
         else
         {
             LoopingAudioSource newSource;
             if (RainIntensity >= 0.67f)
             {
                 newSource = audioSourceRainHeavy;
             }
             else if (RainIntensity >= 0.33f)
             {
                 newSource = audioSourceRainMedium;
             }
             else
             {
                 newSource = audioSourceRainLight;
             }
             if (audioSourceRainCurrent != newSource)
             {
                 if (audioSourceRainCurrent != null)
                 {
                     audioSourceRainCurrent.Stop();
                 }
                 audioSourceRainCurrent = newSource;
                 audioSourceRainCurrent.Play(1.0f);
             }
             if (RainFallParticleSystem != null)
             {
                 RainFallParticleSystem.enableEmission = RainFallParticleSystem.GetComponent<Renderer>().enabled = true;
                 RainFallParticleSystem.emissionRate = (RainFallParticleSystem.maxParticles / RainFallParticleSystem.startLifetime) * RainIntensity;
             }
             if (RainMistParticleSystem != null)
             {
                 RainMistParticleSystem.enableEmission = RainMistParticleSystem.GetComponent<Renderer>().enabled = true;
                 float emissionRate;
                 if (RainIntensity < 0.5f)
                 {
                     emissionRate = 0.0f;
                 }
                 else
                 {
                     // must have 0.5 or higher rain intensity to start seeing mist
                     emissionRate = (RainMistParticleSystem.maxParticles / RainMistParticleSystem.startLifetime) * RainIntensity * RainIntensity;
                 }
                 RainMistParticleSystem.emissionRate = emissionRate;
             }
         }
     }
 }