| 1234567891011121314151617181920212223242526272829303132333435363738 | using UnityEngine;using UnityEngine.UI;namespace UnityUIPlayables{    public class RawImageUVRectMixer    {        private Vector2 _blendedPosition;        private Vector2 _blendedSize;        private float _totalWeight;        public void SetupFrame()        {            _blendedPosition = Vector2.zero;            _blendedSize = Vector2.zero;            _totalWeight = 0.0f;        }        public void Blend(Rect startValue, Rect endValue, float inputWeight, float progress)        {            _blendedPosition = Vector2.Lerp(startValue.position, endValue.position, progress) * inputWeight;            _blendedSize = Vector2.Lerp(startValue.size, endValue.size, progress) * inputWeight;            _totalWeight += inputWeight;        }        public void ApplyFrame(RawImage binding)        {            if (_totalWeight == 0)            {                return;            }            _blendedPosition += binding.uvRect.position * (1f - _totalWeight);            _blendedSize += binding.uvRect.size * (1f - _totalWeight);            binding.uvRect = new Rect(_blendedPosition, _blendedSize);        }    }}
 |