Exemple #1
0
        /// <summary>
        /// Parses a Easing type string.
        /// </summary>
        /// <param name="e">The Easing type string.</param>
        /// <returns>Returns the instance of the parsed type.</returns>
        public static Easing Parse(string e)
        {
            if (e.Contains(','))
            {
                return(new SplineEasing(KeySpline.Parse(e, CultureInfo.InvariantCulture)));
            }

            if (_easingTypes == null)
            {
                _easingTypes = new Dictionary <string, Type>();

                // Fetch the built-in easings.
                var derivedTypes = typeof(Easing).Assembly.GetTypes()
                                   .Where(p => p.Namespace == s_thisType.Namespace)
                                   .Where(p => p.IsSubclassOf(s_thisType))
                                   .Select(p => p).ToList();

                foreach (var easingType in derivedTypes)
                {
                    _easingTypes.Add(easingType.Name, easingType);
                }
            }

            if (_easingTypes.ContainsKey(e))
            {
                var type = _easingTypes[e];
                return((Easing)Activator.CreateInstance(type));
            }
            else
            {
                throw new FormatException($"Easing \"{e}\" was not found in {s_thisType.Namespace} namespace.");
            }
        }
        /// <summary>
        /// Parses a Easing type string.
        /// </summary>
        /// <param name="e">The Easing type string.</param>
        /// <returns>Returns the instance of the parsed type.</returns>
        public static Easing Parse(string e)
        {
#if NETSTANDARD2_0
            if (e.Contains(","))
#else
            if (e.Contains(','))
#endif
            {
                return(new SplineEasing(KeySpline.Parse(e, CultureInfo.InvariantCulture)));
            }

            return(TryCreateEasingInstance(e, out var easing)
                ? easing
                : throw new FormatException($"Easing \"{e}\" was not found in {Namespace} namespace."));
        }