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