AssetBundle improvements

This commit is contained in:
Joshua Granick
2019-06-20 21:46:17 -07:00
parent e9bc17ef42
commit f50904e1d4
3 changed files with 37 additions and 8 deletions

View File

@@ -1,6 +1,9 @@
package lime.utils;
import haxe.io.BytesInput;
import haxe.io.Input;
import haxe.zip.Reader;
import lime.app.Future;
import lime.utils.Bytes;
#if sys
@@ -27,6 +30,23 @@ class AssetBundle
{
#if sys
var input = File.read(path);
return __extractBundle(input);
#else
return null;
#end
}
public static function loadFromFile(path:String):Future<AssetBundle>
{
return Bytes.loadFromFile(path).then(function(bytes)
{
var input = new BytesInput(bytes);
return Future.withValue(__extractBundle(input));
});
}
@:noCompletion private static function __extractBundle(input:Input):AssetBundle
{
var entries = Reader.readZip(input);
var bundle = new AssetBundle();
@@ -46,8 +66,5 @@ class AssetBundle
}
return bundle;
#else
return null;
#end
}
}

View File

@@ -613,7 +613,7 @@ class AssetLibrary
if (id != null)
{
var size = sizes.get(id);
var size = sizes.exists(id) ? sizes.get(id) : 0;
if (!bytesLoadedCache.exists(id))
{
@@ -658,6 +658,7 @@ class AssetLibrary
{
id = Reflect.hasField(asset, "id") ? asset.id : asset.path;
data = bundle.data.get(asset.path);
if (Reflect.hasField(asset, "type"))
{
type = asset.type;
@@ -753,7 +754,7 @@ class AssetLibrary
{
id = Reflect.hasField(asset, "id") ? asset.id : asset.path;
if (preload.exists(id) && preload.get(id))
if (preload.exists(id) && preload.get(id) && sizes.exists(id))
{
bytesTotal += sizes.get(id);
}

View File

@@ -77,9 +77,20 @@ class AssetManifest
var manifestData = Json.parse(data);
var manifest = new AssetManifest();
if (Reflect.hasField(manifestData, "name"))
{
manifest.name = manifestData.name;
}
if (Reflect.hasField(manifestData, "libraryType"))
{
manifest.libraryType = manifestData.libraryType;
}
if (Reflect.hasField(manifestData, "libraryArgs"))
{
manifest.libraryArgs = manifestData.libraryArgs;
}
if (Reflect.hasField(manifestData, "version") && manifestData.version <= 2)
{