Esempio n. 1
0
        static AnimationState GetAnimationState(IAnimable animable)
        {
            var animators = animable.Animators;

            if (animators.Count == 0)
            {
                return(AnimationState.None);
            }
            int enabled = 0;

            foreach (var a in animators)
            {
                if (a.Enabled)
                {
                    enabled++;
                }
            }
            if (enabled == 0)
            {
                return(AnimationState.Disabled);
            }
            else if (enabled == animators.Count)
            {
                return(AnimationState.Enabled);
            }
            else
            {
                return(AnimationState.PartiallyEnabled);
            }
        }
Esempio n. 2
0
 private SetKeyframe(IAnimable animable, string propertyName, string animationId, IKeyframe keyframe)
 {
     Animable     = animable;
     PropertyName = propertyName;
     Keyframe     = keyframe;
     AnimationId  = animationId;
 }
Esempio n. 3
0
 static bool IsAnimationEnabled(IAnimable animable)
 {
     foreach (var a in animable.Animators)
     {
         if (!a.Enabled)
         {
             return(false);
         }
     }
     return(true);
 }
Esempio n. 4
0
        public void Bind(IAnimable owner)
        {
            Owner = owner;
            var p = AnimationUtils.GetProperty(owner.GetType(), TargetProperty);

            IsTriggerable = p.Triggerable;
            var mi = p.Info.GetSetMethod();

            if (mi == null)
            {
                throw new Lime.Exception("Property '{0}' (class '{1}') is readonly", TargetProperty, owner.GetType());
            }
            Setter = (SetterDelegate)Delegate.CreateDelegate(typeof(SetterDelegate), owner, mi);
        }
Esempio n. 5
0
        public static void SetAnimatorAndInitialKeyframeIfNeed(IAnimable animable, params string[] properties)
        {
            var frame = Document.Current.AnimationFrame;

            Document.Current.AnimationFrame = 0;
            IAnimator animator;

            foreach (var propName in properties)
            {
                if (!animable.Animators.TryFind(propName, out animator, Document.Current.AnimationId))
                {
                    var propValue = animable.GetType().GetProperty(propName).GetValue(animable);
                    SetProperty.Perform(animable, propName, propValue);
                    var type = animable.GetType().GetProperty(propName).PropertyType;
                    animator = AnimatorRegistry.Instance.CreateAnimator(type);
                    animator.TargetProperty = propName;
                    animator.AnimationId    = Document.Current.AnimationId;
                    SetAnimator.Perform(animable, animator);
                    SetAnimableProperty.Perform(animable, propName, propValue);
                }
            }
            Document.Current.AnimationFrame = frame;
        }
Esempio n. 6
0
 public AnimatorBinding(IAbstractAnimator animator)
 {
     Animable = animator.Animable;
     TargetPropertyPathComparisonCode = animator.TargetPropertyPathComparisonCode;
 }
Esempio n. 7
0
 private SetAnimator(IAnimable animable, IAnimator animator)
 {
     Animable = animable;
     Animator = animator;
 }
Esempio n. 8
0
 public static void Perform(IAnimable animable, IAnimator animator)
 {
     Document.Current.History.Perform(new SetAnimator(animable, animator));
 }
Esempio n. 9
0
 public static void Perform(IAnimable animable, string propertyName, string animationId, IKeyframe keyframe)
 {
     Document.Current.History.Perform(new SetKeyframe(animable, propertyName, animationId, keyframe));
 }
Esempio n. 10
0
 private RemoveKeyframe(IAnimator animator, int frame)
 {
     Frame    = frame;
     Animator = animator;
     Owner    = Animator.Owner;
 }
Esempio n. 11
0
 public static void AnimateHit(this IAnimable animable) => animable.Animator.SetTrigger(HitHash);
Esempio n. 12
0
 public static void AnimateMiss(this IAnimable animable) => animable.Animator.SetTrigger(MissHash);