public static EaseObject XTo(this UIElement obj, double X, double time, PercentHandler transition, double delay)
 {
     return(ArtefactAnimator.AddEase(obj, AnimationTypes.X, X, time, transition, delay));
 }
 public static EaseObject AutoAlphaCollapsedTo(this UIElement obj, double alpha, double time, PercentHandler transition, double delay)
 {
     ArtefactAnimator.StopEase(obj, new string[] { AnimationTypes.Alpha, AnimationTypes.AutoAlpha, AnimationTypes.AutoAlphaCollapsed });
     return(ArtefactAnimator.AddEase(obj, AnimationTypes.AutoAlphaCollapsed, alpha, time, transition, delay));
 }
 //  instant
 public static void AutoAlphaCollapsedTo(this UIElement obj, double alpha)
 {
     ArtefactAnimator.StopEase(obj, new string[] { AnimationTypes.Alpha, AnimationTypes.AutoAlpha, AnimationTypes.AutoAlphaCollapsed });
     obj.Opacity    = alpha;
     obj.Visibility = alpha > 0 ? Visibility.Visible : Visibility.Collapsed;
 }
 /// <summary>
 /// Sets and Returns Model3D.Transform with Children in standard order [ TranslateTransform3D, ScaleTransform3D, RotateTransform3D, ... ]
 /// </summary>
 public static Transform3DGroup NormalizeTransform3DGroup(this Camera obj)
 {
     obj.Transform = ArtefactAnimator.NormalizeTransform3DGroup(obj.Transform as Transform3DGroup);
     return(obj.Transform as Transform3DGroup);
 }
 /// <summary>
 /// Get Model3D.Transform with Children in standard order [ TranslateTransform3D, ScaleTransform3D, RotateTransform3D, ... ]
 /// </summary>
 public static Transform3DGroup NormalizedTransform3DGroup(this Model3D obj)
 {
     return(ArtefactAnimator.NormalizeTransform3DGroup(obj.Transform as Transform3DGroup));
 }
        // UTILS



        /// <summary>
        /// Get FrameworkElement.RenderTransform with Children in standard order [ ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, ... ]
        /// </summary>
        public static TransformGroup NormalizedTransformGroup(this FrameworkElement element)
        {
            return(ArtefactAnimator.NormalizeTransformGroup(element));
        }
 public static EaseObject DimensionsTo(this UIElement obj, double width, double height, double time, PercentHandler transition, double delay)
 {
     return(ArtefactAnimator.AddEase(obj, new[] { AnimationTypes.Width, AnimationTypes.Height }, new object[] { width, height }, time, transition, delay));
 }
 public static EaseObject SlideTo(this UIElement obj, double x, double y, double time, PercentHandler transition, double delay)
 {
     return(ArtefactAnimator.AddEase(obj, new[] { AnimationTypes.X, AnimationTypes.Y }, new object[] { x, y }, time, transition, delay));
 }