|
|
- using UnityEngine;
-
- namespace LeTai.TrueShadow
- {
- [RequireComponent(typeof(TrueShadow))]
- public class InsetOnPress : AnimatedBiStateButton
- {
- TrueShadow[] shadows;
- float[] normalOpacity;
- bool wasInset;
-
- void OnEnable()
- {
- shadows = GetComponents<TrueShadow>();
- normalOpacity = new float[shadows.Length];
- }
-
- protected override void Animate(float visualPressAmount)
- {
- void SetAllOpacity(float lerpProgress)
- {
- for (var i = 0; i < shadows.Length; i++)
- {
- var color = shadows[i].Color;
- color.a = Mathf.Lerp(0, normalOpacity[i], lerpProgress);
- shadows[i].Color = color;
- }
- }
-
- bool shouldInset = visualPressAmount > .5f;
-
- if (shouldInset != wasInset)
- {
- for (var i = 0; i < shadows.Length; i++)
- {
- shadows[i].Inset = shouldInset;
- }
-
- wasInset = shouldInset;
- }
-
- if (shouldInset)
- {
- SetAllOpacity(visualPressAmount * 2f - 1f);
- }
- else
- {
- SetAllOpacity(1 - visualPressAmount * 2f);
- }
- }
-
- void MemorizeOpacity()
- {
- if (IsAnimating) return;
-
- for (var i = 0; i < shadows.Length; i++)
- {
- normalOpacity[i] = shadows[i].Color.a;
- }
- }
-
- protected override void OnWillPress()
- {
- wasInset = shadows[0].Inset;
- MemorizeOpacity();
- base.OnWillPress();
- }
- }
- }
|