1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- 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.IsItemAnimation())
- {
- 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;
- if (serieType.IsDefined(typeof(DefaultAnimationAttribute), false))
- {
- animationType = serieType.GetAttribute<DefaultAnimationAttribute>().type;
- }
- UpdateAnimationType(serie.animation, animationType);
- }
-
- public static void UpdateAnimationType(AnimationStyle animation, AnimationType defaultType)
- {
- animation.context.type = animation.type == AnimationType.Default ?
- defaultType :
- animation.type;
- }
-
- 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);
- }
- }
- }
- }
|