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; package lime.utils;
import haxe.io.BytesInput;
import haxe.io.Input;
import haxe.zip.Reader; import haxe.zip.Reader;
import lime.app.Future;
import lime.utils.Bytes; import lime.utils.Bytes;
#if sys #if sys
@@ -27,6 +30,23 @@ class AssetBundle
{ {
#if sys #if sys
var input = File.read(path); 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 entries = Reader.readZip(input);
var bundle = new AssetBundle(); var bundle = new AssetBundle();
@@ -46,8 +66,5 @@ class AssetBundle
} }
return bundle; return bundle;
#else
return null;
#end
} }
} }

View File

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

View File

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