/// <summary>
        /// Initializes a new instance of the <see cref="MorphWeightCollection"/> class for the specified morph
        /// targets.
        /// </summary>
        /// <param name="morphTargetNames">The names of the morph targets.</param>
        /// <exception cref="ArgumentException">
        /// No parameters specified. Or the name of a morph target is null or empty.
        /// </exception>
        public MorphWeightCollection(params string[] morphTargetNames)
        {
            if (morphTargetNames == null || morphTargetNames.Length == 0)
            {
                throw new ArgumentException("The list of morph target names is empty.");
            }

            for (int i = 0; i < morphTargetNames.Length; i++)
            {
                if (string.IsNullOrEmpty(morphTargetNames[i]))
                {
                    throw new ArgumentException("The name of the morph target must not be null or empty.");
                }
            }

            _names = new string[morphTargetNames.Length];
            Array.Copy(morphTargetNames, _names, morphTargetNames.Length);
            Array.Sort(_names, StringComparer.Ordinal);

            _names   = morphTargetNames;
            _weights = new MorphWeight[morphTargetNames.Length];
            for (int i = 0; i < morphTargetNames.Length; i++)
            {
                _weights[i] = new MorphWeight();
            }
        }
        /// <summary>
        /// Creates a copy of the specified <see cref="MorphWeightCollection"/> instance.
        /// </summary>
        /// <param name="source">The source <see cref="MorphWeightCollection"/>.</param>
        private MorphWeightCollection(MorphWeightCollection source)
        {
            Name   = source.Name;
            _names = source._names;

            var weights = source._weights;

            _weights = new MorphWeight[weights.Length];
            for (int i = 0; i < weights.Length; i++)
            {
                _weights[i] = new MorphWeight {
                    Value = weights[i].Value
                }
            }
            ;
        }