public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
        {
            int len    = _size.x * _size.y;
            var buffer = dstManager.AddBuffer <MapTilesBuffer>(entity);

            buffer.ResizeUninitialized(len);
            unsafe
            {
                UnsafeUtility.MemClear(buffer.GetUnsafePtr(), buffer.Length *
                                       UnsafeUtility.SizeOf <MapTilesBuffer>());
            }

            dstManager.AddComponent <Map>(entity);
            dstManager.AddComponentData <MapSize>(entity, _size);

            var playerPrefab = _playerPrefab == null ? Entity.Null :
                               conversionSystem.GetPrimaryEntity(_playerPrefab);

            var monsterPrefabs = new NativeList <Entity>(Allocator.Temp);
            var itemPrefabs    = new NativeList <Entity>(Allocator.Temp);

            foreach (var goPrefab in _monsterPrefabs)
            {
                monsterPrefabs.Add(
                    conversionSystem.GetPrimaryEntity(goPrefab));
            }
            foreach (var item in _itemPrefabs)
            {
                itemPrefabs.Add(conversionSystem.GetPrimaryEntity(item));
            }

            if (_genSettings.Seed == 0)
            {
                _genSettings.Seed = (uint)UnityEngine.Random.Range(1, int.MaxValue);
            }

            var tiles = dstManager.AddBuffer <MapTileAssetsBuffer>(entity);

            // Each index of the buffer should map to it's corresponding "tile type"
            /// <seealso cref="MapTileType"/>
            tiles.Add(_wallTile.ToTerminalTile());
            tiles.Add(_floorTile.ToTerminalTile());

            GenerateMap.AddToEntity(dstManager, entity,
                                    _genSettings,
                                    playerPrefab,
                                    monsterPrefabs,
                                    itemPrefabs);
        }