| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | using UnityEngine;using XUGL;namespace XCharts.Runtime{    public static class AnimationStyleHelper    {        public static float CheckDataAnimation(BaseChart chart, Serie serie, int dataIndex, float destProgress, float startPorgress = 0)        {            if (!serie.animation.IsDataAnimation())            {                serie.animation.context.isAllItemAnimationEnd = false;                return destProgress;            }            if (serie.animation.IsFinish())            {                serie.animation.context.isAllItemAnimationEnd = false;                return destProgress;            }            var isDataAnimationEnd = true;            var currHig = serie.animation.CheckItemProgress(dataIndex, destProgress, ref isDataAnimationEnd, startPorgress);            if (!isDataAnimationEnd)            {                serie.animation.context.isAllItemAnimationEnd = false;            }            return currHig;        }        public static void UpdateSerieAnimation(Serie serie)        {            var serieType = serie.GetType();            var animationType = AnimationType.LeftToRight;            var enableSerieDataAnimation = true;            if (serieType.IsDefined(typeof(DefaultAnimationAttribute), false))            {                var attribute = serieType.GetAttribute<DefaultAnimationAttribute>();                animationType = attribute.type;                enableSerieDataAnimation = attribute.enableSerieDataAddedAnimation;            }            UpdateAnimationType(serie.animation, animationType,enableSerieDataAnimation);        }        public static void UpdateAnimationType(AnimationStyle animation, AnimationType defaultType, bool enableSerieDataAnimation)        {            animation.context.type = animation.type == AnimationType.Default ?                defaultType :                animation.type;            animation.context.enableSerieDataAddedAnimation = enableSerieDataAnimation;        }        public static bool GetAnimationPosition(AnimationStyle animation, bool isY, Vector3 lp, Vector3 cp, float progress, ref Vector3 ip)        {            if (animation.context.type == AnimationType.AlongPath)            {                var dist = Vector3.Distance(lp, cp);                var rate = (dist - animation.context.currentPathDistance + animation.GetCurrDetail()) / dist;                ip = Vector3.Lerp(lp, cp, rate);                return true;            }            else            {                var startPos = isY ? new Vector3(-10000, progress) : new Vector3(progress, -10000);                var endPos = isY ? new Vector3(10000, progress) : new Vector3(progress, 10000);                return UGLHelper.GetIntersection(lp, cp, startPos, endPos, ref ip);            }        }    }}
 |