示例#1
0
        public TimelineRegion AddRegion(string regionName)
        {
            GameObject gameObject = new GameObject(regionName);

            gameObject.transform.parent = base.transform;
            TimelineRegion timelineRegion = gameObject.AddComponent <TimelineRegion>();

            timelineRegion.ResetVolumeEnvelope();
            _regions = base.gameObject.GetComponentsInChildren <TimelineRegion>();
            return(timelineRegion);
        }
示例#2
0
 public void UpdateRegionEnvelopes()
 {
     if (_regions.Length <= 0)
     {
         return;
     }
     Array.Sort(_regions, (TimelineRegion r1, TimelineRegion r2) => r1._x.CompareTo(r2._x));
     for (int i = 0; i < _regions.Length; i++)
     {
         _regions[i].ResetVolumeEnvelope();
     }
     for (int j = 0; j < _regions.Length - 1; j++)
     {
         TimelineRegion timelineRegion  = _regions[j];
         TimelineRegion timelineRegion2 = _regions[j + 1];
         float          num             = timelineRegion._x + timelineRegion._width;
         if (num > timelineRegion2._x)
         {
             float num2 = num - timelineRegion2._x;
             timelineRegion._volumeEnvelope._points[2]._x  -= num2;
             timelineRegion2._volumeEnvelope._points[1]._x += num2;
         }
     }
 }
示例#3
0
        public override bool UpdateInternal(ref Context context)
        {
            if (_controlParameter == null || _parameters == null || _regions == null)
            {
                return(false);
            }
            float num = 0f;

            if ((bool)_controlParameter)
            {
                num = _controlParameter.GetNormalisedCurrentValue();
            }
            float num2 = 1f;
            float num3 = 1f;

            for (int i = 0; i < _parameters.Length; i++)
            {
                ParameterToProperty parameterToProperty = _parameters[i];
                if (parameterToProperty != null && parameterToProperty._parameter != null)
                {
                    if (parameterToProperty._property == Property.Volume)
                    {
                        num2 *= parameterToProperty._envelope.Calculate_y(parameterToProperty._parameter.GetNormalisedCurrentValue());
                    }
                    else if (parameterToProperty._property == Property.Pitch)
                    {
                        float num4 = parameterToProperty._envelope.Calculate_y(parameterToProperty._parameter.GetNormalisedCurrentValue());
                        num3 *= Mathf.Pow(2f, num4 * 8f - 4f);
                    }
                }
            }
            for (int j = 0; j < _regions.Length; j++)
            {
                TimelineRegion timelineRegion = _regions[j];
                float          num5           = Mathf.Round(num * _controlParameter._max * 100f) / 100f;
                float          num6           = Mathf.Round(timelineRegion._x * _controlParameter._max * 100f) / 100f;
                float          num7           = num6 + Mathf.Round(timelineRegion._width * _controlParameter._max * 100f) / 100f;
                if (_componentInstance != null && num5 >= num6 && num5 <= num7)
                {
                    float num8 = 1f;
                    if (num != 0f && num != 1f)
                    {
                        num8 = timelineRegion._volumeEnvelope.Calculate_y(num);
                    }
                    timelineRegion.Volume = num8 * num2 * timelineRegion._regionVolume;
                    float num9 = 1f;
                    if (timelineRegion._autopitchenabled)
                    {
                        num9 = 0f + num / timelineRegion._autopitchreference * 1f;
                    }
                    timelineRegion.Pitch = num9 * num3;
                    if (!timelineRegion.IsPlaying() && _layerIsActive)
                    {
                        timelineRegion.PlayInternal(_componentInstance, 0f, 0.5f);
                    }
                    else if (!IsOneShot() && timelineRegion._loopMode == RegionLoopMode.PlayToEnd && timelineRegion.HasReachedEnd())
                    {
                        timelineRegion.StopInternal(stopInstances: false, forceStop: false, 0f, 0.5f);
                    }
                }
                else if (timelineRegion.IsPlaying())
                {
                    if (timelineRegion._loopMode == RegionLoopMode.Cutoff)
                    {
                        timelineRegion.StopInternal(stopInstances: false, forceStop: true, 0f, 0.5f);
                    }
                    else if (timelineRegion._loopMode == RegionLoopMode.PlayToEnd)
                    {
                        timelineRegion._regionIsActive = false;
                    }
                }
                if (timelineRegion._loopMode == RegionLoopMode.PlayToEnd && !timelineRegion.IsOneShot() && timelineRegion.HasReachedEnd())
                {
                    timelineRegion.StopInternal(stopInstances: false, forceStop: false, 0f, 0.5f);
                }
            }
            bool flag = false;

            flag = base.UpdateInternal(ref context);
            if (((TimelineComponent)_parentComponent)._isOneShot || !_layerIsActive)
            {
                _isComponentActive = flag;
                if (!_isComponentActive)
                {
                    _layerIsActive = false;
                }
            }
            else
            {
                _isComponentActive = _layerIsActive;
            }
            return(_isComponentActive);
        }
示例#4
0
 public void RemoveRegion(TimelineRegion region)
 {
     UnityEngine.Object.DestroyImmediate(region.gameObject);
     _regions = base.gameObject.GetComponentsInChildren <TimelineRegion>();
     UpdateRegionEnvelopes();
 }