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); } }
private SetKeyframe(IAnimable animable, string propertyName, string animationId, IKeyframe keyframe) { Animable = animable; PropertyName = propertyName; Keyframe = keyframe; AnimationId = animationId; }
static bool IsAnimationEnabled(IAnimable animable) { foreach (var a in animable.Animators) { if (!a.Enabled) { return(false); } } return(true); }
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); }
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; }
public AnimatorBinding(IAbstractAnimator animator) { Animable = animator.Animable; TargetPropertyPathComparisonCode = animator.TargetPropertyPathComparisonCode; }
private SetAnimator(IAnimable animable, IAnimator animator) { Animable = animable; Animator = animator; }
public static void Perform(IAnimable animable, IAnimator animator) { Document.Current.History.Perform(new SetAnimator(animable, animator)); }
public static void Perform(IAnimable animable, string propertyName, string animationId, IKeyframe keyframe) { Document.Current.History.Perform(new SetKeyframe(animable, propertyName, animationId, keyframe)); }
private RemoveKeyframe(IAnimator animator, int frame) { Frame = frame; Animator = animator; Owner = Animator.Owner; }
public static void AnimateHit(this IAnimable animable) => animable.Animator.SetTrigger(HitHash);
public static void AnimateMiss(this IAnimable animable) => animable.Animator.SetTrigger(MissHash);