public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
        {
            base.GetPropertyHeight(property, label);

            _audioOption = property.GetValue<AudioOption>();
            _dynamicValue = _audioOption.Value;
            _hasCurve = _audioOption.HasCurve();
            _typeProperty = property.FindPropertyRelative("_type");
            _delayProperty = property.FindPropertyRelative("_delay");

            UpdateProperties();

            InitializeValue(_typeProperty.GetValue<AudioOption.Types>());

            float height = 16f;

            if (property.isExpanded)
            {
                height += 38f + EditorGUI.GetPropertyHeight(_valueProperty, label, true);

                if (_timeProperty != null)
                    height += EditorGUI.GetPropertyHeight(_timeProperty) + 2f;
                if (_easeProperty != null)
                    height += EditorGUI.GetPropertyHeight(_easeProperty) + 2f;
            }

            return height;
        }
Beispiel #2
0
        public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
        {
            base.GetPropertyHeight(property, label);

            audioOption   = property.GetValue <AudioOption>();
            dynamicValue  = audioOption.Value;
            hasCurve      = audioOption.HasCurve();
            typeProperty  = property.FindPropertyRelative("type");
            delayProperty = property.FindPropertyRelative("delay");

            UpdateProperties();
            InitializeValue(typeProperty.GetValue <AudioOption.Types>());

            float height = 16f;

            if (property.isExpanded)
            {
                height += 38f + EditorGUI.GetPropertyHeight(valueProperty, label, true);

                if (timeProperty != null)
                {
                    height += EditorGUI.GetPropertyHeight(timeProperty) + 2f;
                }
                if (easeProperty != null)
                {
                    height += EditorGUI.GetPropertyHeight(easeProperty) + 2f;
                }
            }

            return(height);
        }
Beispiel #3
0
        protected override void ApplyOptionNow(AudioOption option, bool recycle)
        {
            if (state != AudioStates.Stopped)
            {
                switch (option.Type)
                {
                case AudioOption.Types.VolumeScale:
                    var volumeData = option.GetValue <Vector3>();
                    SetVolumeScale(volumeData.x, volumeData.y, (TweenUtility.Ease)volumeData.z, true);
                    break;

                case AudioOption.Types.PitchScale:
                    var pitchData = option.GetValue <Vector3>();
                    SetPitchScale(pitchData.x, pitchData.y, (TweenUtility.Ease)pitchData.z, true);
                    break;

                case AudioOption.Types.RandomVolume:
                    float randomVolume = option.GetValue <float>();
                    settings.RandomVolume         = randomVolume;
                    volumeModifier.RandomModifier = 1f + UnityEngine.Random.Range(-randomVolume, randomVolume);
                    break;

                case AudioOption.Types.RandomPitch:
                    float randomPitch = option.GetValue <float>();
                    settings.RandomPitch         = randomPitch;
                    pitchModifier.RandomModifier = 1f + UnityEngine.Random.Range(-randomPitch, randomPitch);
                    break;

                case AudioOption.Types.FadeIn:
                    var fadeInData = option.GetValue <Vector2>();
                    settings.FadeIn     = fadeInData.x;
                    settings.FadeInEase = (TweenUtility.Ease)fadeInData.y;
                    break;

                case AudioOption.Types.FadeOut:
                    var fadeOutData = option.GetValue <Vector2>();
                    settings.FadeIn     = fadeOutData.x;
                    settings.FadeInEase = (TweenUtility.Ease)fadeOutData.y;
                    break;

                case AudioOption.Types.Loop:
                    bool loop = option.GetValue <bool>();
                    settings.Loop = loop;
                    source.loop   = loop && !hasBreak;
                    break;

                case AudioOption.Types.Clip:
                    var clip = option.GetValue <AudioClip>();
                    settings.Clip = clip;
                    source.clip   = clip;
                    break;

                case AudioOption.Types.Output:
                    var output = option.GetValue <AudioMixerGroup>();
                    settings.Output = output;
                    source.outputAudioMixerGroup = output;
                    break;

                case AudioOption.Types.DopplerLevel:
                    source.dopplerLevel = option.GetValue <float>();
                    break;

                case AudioOption.Types.RolloffMode:
                    if (option.HasCurve())
                    {
                        source.rolloffMode = AudioRolloffMode.Custom;
                        source.SetCustomCurve(AudioSourceCurveType.CustomRolloff, option.GetValue <AnimationCurve>());
                    }
                    else
                    {
                        source.rolloffMode = option.GetValue <AudioRolloffMode>();
                    }
                    break;

                case AudioOption.Types.MinDistance:
                    source.minDistance = option.GetValue <float>();
                    break;

                case AudioOption.Types.MaxDistance:
                    source.maxDistance = option.GetValue <float>();
                    break;

                case AudioOption.Types.Spread:
                    if (option.HasCurve())
                    {
                        source.SetCustomCurve(AudioSourceCurveType.Spread, option.GetValue <AnimationCurve>());
                    }
                    else
                    {
                        source.spread = option.GetValue <float>();
                    }
                    break;

                case AudioOption.Types.Mute:
                    source.mute = option.GetValue <bool>();
                    break;

                case AudioOption.Types.BypassEffects:
                    source.bypassEffects = option.GetValue <bool>();
                    break;

                case AudioOption.Types.BypassListenerEffects:
                    source.bypassListenerEffects = option.GetValue <bool>();
                    break;

                case AudioOption.Types.BypassReverbZones:
                    source.bypassReverbZones = option.GetValue <bool>();
                    break;

                case AudioOption.Types.Priority:
                    source.priority = option.GetValue <int>();
                    break;

                case AudioOption.Types.StereoPan:
                    source.panStereo = option.GetValue <float>();
                    break;

                case AudioOption.Types.SpatialBlend:
                    if (option.HasCurve())
                    {
                        source.SetCustomCurve(AudioSourceCurveType.SpatialBlend, option.GetValue <AnimationCurve>());
                    }
                    else
                    {
                        source.spatialBlend = option.GetValue <float>();
                    }
                    break;

                case AudioOption.Types.ReverbZoneMix:
                    if (option.HasCurve())
                    {
                        source.SetCustomCurve(AudioSourceCurveType.ReverbZoneMix, option.GetValue <AnimationCurve>());
                    }
                    else
                    {
                        source.reverbZoneMix = option.GetValue <float>();
                    }
                    break;

                case AudioOption.Types.PlayRange:
                    var playRangeData = option.GetValue <Vector2>();
                    settings.PlayRangeStart = playRangeData.x;
                    settings.PlayRangeEnd   = playRangeData.y;
                    lastTime = source.time;
                    break;

                case AudioOption.Types.Time:
                    source.time = option.GetValue <float>();
                    lastTime    = source.time;
                    break;

                case AudioOption.Types.TimeSamples:
                    source.timeSamples = option.GetValue <int>();
                    lastTime           = source.time;
                    break;

                case AudioOption.Types.VelocityUpdateMode:
                    source.velocityUpdateMode = option.GetValue <AudioVelocityUpdateMode>();
                    break;

                case AudioOption.Types.IgnoreListenerPause:
                    source.ignoreListenerPause = option.GetValue <bool>();
                    break;

                case AudioOption.Types.IgnoreListenerVolume:
                    source.ignoreListenerVolume = option.GetValue <bool>();
                    break;

                case AudioOption.Types.Spatialize:
                    source.spatialize = option.GetValue <bool>();
                    break;
                }
            }

            if (recycle)
            {
                TypePoolManager.Recycle(ref option);
            }
        }