[TASK] Initial commit with basic product setup

This commit is contained in:
2019-08-18 13:50:14 +02:00
commit 01a66a8e1f
2548 changed files with 167528 additions and 0 deletions

View File

@@ -0,0 +1,77 @@
using Mapbox.Map;
using Mapbox.Unity;
using Mapbox.Unity.Map;
using Mapbox.Unity.MeshGeneration.Data;
using Mapbox.Unity.MeshGeneration.Enums;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DataFetcherParameters
{
public CanonicalTileId canonicalTileId;
public string mapid;
public UnityTile tile;
}
public class ImageDataFetcherParameters : DataFetcherParameters
{
public bool useRetina = true;
}
public class TerrainDataFetcherParameters : DataFetcherParameters
{
}
public class VectorDataFetcherParameters : DataFetcherParameters
{
public bool useOptimizedStyle = false;
public Style style = null;
}
public abstract class DataFetcher : ScriptableObject
{
protected MapboxAccess _fileSource;
public void OnEnable()
{
_fileSource = MapboxAccess.Instance;
}
public abstract void FetchData(DataFetcherParameters parameters);
}
public class TerrainDataFetcher : DataFetcher
{
public Action<UnityTile, RawPngRasterTile> DataRecieved = (t, s) => { };
public Action<UnityTile, RawPngRasterTile, TileErrorEventArgs> FetchingError = (t, r, s) => { };
//tile here should be totally optional and used only not to have keep a dictionary in terrain factory base
public override void FetchData(DataFetcherParameters parameters)
{
var terrainDataParameters = parameters as TerrainDataFetcherParameters;
if(terrainDataParameters == null)
{
return;
}
var pngRasterTile = new RawPngRasterTile();
pngRasterTile.Initialize(_fileSource, terrainDataParameters.canonicalTileId, terrainDataParameters.mapid, () =>
{
if (terrainDataParameters.tile.CanonicalTileId != pngRasterTile.Id)
{
//this means tile object is recycled and reused. Returned data doesn't belong to this tile but probably the previous one. So we're trashing it.
return;
}
if (pngRasterTile.HasError)
{
FetchingError(terrainDataParameters.tile, pngRasterTile, new TileErrorEventArgs(terrainDataParameters.canonicalTileId, pngRasterTile.GetType(), null, pngRasterTile.Exceptions));
}
else
{
DataRecieved(terrainDataParameters.tile, pngRasterTile);
}
});
}
}