/// <summary>
        /// Finishes building the current permutation.
        /// </summary>
        /// <exception cref="System.InvalidOperationException">
        /// Cannot end a permutation if nothing is active
        /// or
        /// Cannot end a permutation while a mesh is still active
        /// or
        /// Cannot end a permutation if no region is active
        /// </exception>
        public void EndPermutation()
        {
            if (_currentPermutation == null)
                throw new InvalidOperationException("Cannot end a permutation if nothing is active");
            if (_currentMesh != null)
                throw new InvalidOperationException("Cannot end a permutation while a mesh is still active");
            if (_currentRegion == null)
                throw new InvalidOperationException("Cannot end a permutation if no region is active");

            _currentRegion.Permutations.Add(_currentPermutation);
            _currentPermutation = null;
        }
        /// <summary>
        /// Begins building a new model permutation in the current region.
        /// </summary>
        /// <param name="name">The name stringID.</param>
        /// <exception cref="System.InvalidOperationException">
        /// Cannot begin a new permutation if a region is not active
        /// or
        /// Cannot begin a new permutation while another is active
        /// </exception>
        public void BeginPermutation(StringId name)
        {
            if (_currentRegion == null)
                throw new InvalidOperationException("Cannot begin a new permutation if a region is not active");
            if (_currentPermutation != null)
                throw new InvalidOperationException("Cannot begin a new permutation while another is active");

            _currentPermutation = new RenderModel.Region.Permutation
            {
                Name = name,
                MeshIndex = (short)_meshes.Count,
            };
        }