private void DrawSlider(Rect rect, AmbienceZone zone, AmbienceSource source)
        {
            float level = zone.GetLevel(source);
            float num   = AudioUI.DrawHorizontalSlider(rect, 0f, 1f, 0f, level, AudioSliderType.Volume);

            if (level == num)
            {
                return;
            }
            if (zone.sources != null && zone.sources.Length > 0)
            {
                for (int i = 0; i < zone.sources.Length; i++)
                {
                    if (zone.sources[i] == source)
                    {
                        if (num == 0f)
                        {
                            zone.sources[i] = zone.sources[zone.sources.Length - 1];
                            zone.volumes[i] = zone.volumes[zone.sources.Length - 1];
                            Array.Resize(ref zone.volumes, zone.sources.Length - 1);
                            Array.Resize(ref zone.sources, zone.sources.Length - 1);
                        }
                        else
                        {
                            zone.volumes[i] = num;
                        }
                        if (activeAmbience.activeZone != null)
                        {
                            activeAmbience.TransitionToZone(activeAmbience.activeZone, 0.1f);
                        }
                        return;
                    }
                }
            }
            if (zone.sources != null)
            {
                Array.Resize(ref zone.volumes, zone.sources.Length + 1);
                Array.Resize(ref zone.sources, zone.sources.Length + 1);
            }
            else
            {
                zone.volumes = new float[1];
                zone.sources = new AmbienceSource[1];
            }
            zone.sources[zone.sources.Length - 1] = source;
            zone.volumes[zone.sources.Length - 1] = num;
            if (activeAmbience.activeZone != null)
            {
                activeAmbience.TransitionToZone(activeAmbience.activeZone, 0.1f);
            }
        }
示例#2
0
 public float GetLevel(AmbienceSource source)
 {
     if (sources == null)
     {
         return(0f);
     }
     for (int i = 0; i < sources.Length; i++)
     {
         if (sources[i] == source)
         {
             return(volumes[i]);
         }
     }
     return(0f);
 }