private void PackVoxelSprites(VoxelDatabase database)
        {
            List <VoxelSideIDs> sideIDs       = new List <VoxelSideIDs>();
            SpriteTexturePacker texturePacker = new SpriteTexturePacker();

            foreach (var voxel in database.GetVoxels())
            {
                VoxelSideIDs ids = new VoxelSideIDs();
                ids.Top    = texturePacker.AddSprite(voxel.TopSprite);
                ids.Bottom = texturePacker.AddSprite(voxel.BottomSprite);
                ids.North  = texturePacker.AddSprite(voxel.NorthSprite);
                ids.South  = texturePacker.AddSprite(voxel.SouthSprite);
                ids.West   = texturePacker.AddSprite(voxel.WestSprite);
                ids.East   = texturePacker.AddSprite(voxel.EastSprite);
                sideIDs.Add(ids);
            }

            texturePacker.Pack();

            for (int i = 0; i < database.GetVoxels().Count; i++)
            {
                VoxelData    voxel = database.GetVoxels()[i];
                VoxelSideIDs id    = sideIDs[i];

                voxel.TopUV    = texturePacker.GetUVs(id.Top);
                voxel.BottomUV = texturePacker.GetUVs(id.Bottom);
                voxel.NorthUV  = texturePacker.GetUVs(id.North);
                voxel.SouthUV  = texturePacker.GetUVs(id.South);
                voxel.WestUV   = texturePacker.GetUVs(id.West);
                voxel.EastUV   = texturePacker.GetUVs(id.East);

                EditorUtility.SetDirty(voxel);
            }
        }
        public void FindAllVoxelTypes(VoxelDatabase database)
        {
            var voxels = AssetDatabase.FindAssets("t:VoxelData");

            database.ClearVoxels();

            Debug.Log("Searching for Voxels");
            foreach (var voxelGuid in voxels)
            {
                Debug.Log(voxelGuid);
                var assetPath = AssetDatabase.GUIDToAssetPath(voxelGuid);
                var voxelData = AssetDatabase.LoadAssetAtPath <VoxelData>(assetPath);
                database.AddVoxel(voxelData);
            }

            EditorUtility.SetDirty(database);

            PackVoxelSprites(database);
        }