AssetBundle improvements
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user