public static IEnumerator Create <P, D>(DataLayer dataLayer, string file, CreatePatch <P, D> create, GetPatchLoader <P, D> getLoader, Action <Patch, string> callback) where P : Patch where D : PatchData { // Assume we're getting a bin file PatchDataFormat format = PatchDataFormat.BIN; #if !UNITY_WEBGL string binFile = file; // Check which format it is (Web only reads binary files) if (file.EndsWith(CSV_EXTENSION)) { binFile = Path.ChangeExtension(file, BIN_EXTENSION); format = PatchDataFormat.CSV; } #endif // Load the patch file (this only reads the (.bin) header, or the whole .csv) D data = null; var load = getLoader(format); yield return(load(file, (g) => data = g)); if (data == null) { #if !UNITY_WEBGL // Take a break (wait for next frame) since loading CSVs is quite slow if (format != PatchDataFormat.BIN) { yield return(IEnumeratorExtensions.AvoidRunThru); } #endif yield break; } SplitFileName(file, out int level, out string site, out int _, out int year, out int month, out int day, out string type); // Create the patch based on the file name P newPatch = create(dataLayer, level, year, data, file); #if !UNITY_WEBGL // Create binary file if data was loaded from different format if (format != PatchDataFormat.BIN) { newPatch.Save(binFile); newPatch.UnloadData(); } #endif callback(newPatch, site); #if !UNITY_WEBGL // Take a break (wait for next frame) since loading CSVs is quite slow if (format != PatchDataFormat.BIN) { yield return(IEnumeratorExtensions.AvoidRunThru); } #endif }
public override void Save(string filename, PatchDataFormat format) { switch (format) { case PatchDataFormat.BIN: pointData.SaveBin(filename); SetFilename(filename); break; default: Debug.LogError("Not implemented"); break; } }
public static LoadPatchData <GridPatch, GridData> GetPatchHeaderLoader(PatchDataFormat format) { return(headerLoader[(int)format]); }
public abstract void Save(string filename, PatchDataFormat format = PatchDataFormat.BIN);