/// <summary>
        /// Tries to spawn a child chunk.
        /// </summary>
        /// <returns>The spawn chunk.</returns>
        /// <param name="x">The x coordinate.</param>
        /// <param name="y">The y coordinate.</param>
        /// <param name="z">The z coordinate.</param>
        public Chunk TrySpawnChunk(int x, int y, int z)
        {
            // create the key
            string key = GenerateKey(x, y, z);

            // exit if the key already exists
            if (ChunkDict.ContainsKey(key))
            {
                return(null);
            }

            // spawn the chunk, and parent it
            Chunk newChunk = Instantiate(_chunkPrefab, transform);

            // generate and set the position
            Vector3 localPos = LocalisedPositionFromGroupCoord(x, y, z);

            newChunk.transform.localPosition = localPos;

            // set basic values
            // name
            newChunk.name = "Chunk_" + key;
            // parent
            newChunk.Parent = this;
            // group coord
            newChunk.GroupCoord = new Vector3Int(x, y, z);
            newChunk.SetChunkVars(ChunkSize);

            ChunkDict.Add(key, newChunk);

            return(newChunk);
        }
        /// <summary>
        /// Gets the <see cref="UnityTools.ChunkGroup`1"/> with the specified key.
        ///
        /// Primary access for Chunks via the ChunkGroup.
        /// </summary>
        /// <param name="key">Key.</param>
        public Chunk this[string key]
        {
            get
            {
                if (!ChunkDict.ContainsKey(key))
                {
                    string[] xyz = key.Split(',');
                    //                    Debug.Log();
                    throw new NoChunkException(
                              string.Format("No Chunk present at key [{0}]", key),
                              new Vector3Int(
                                  int.Parse(xyz[0]),
                                  int.Parse(xyz[1]),
                                  int.Parse(xyz[2])
                                  )
                              );
                }

                return(ChunkDict[key]);
            }
        }