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);
- }
- }
- }
|