enable loading multiple manifests

This commit is contained in:
Andreas Schaafsma 2025-04-11 23:54:05 +02:00
parent d73b8bb02e
commit e01cc817ef

View File

@ -1,5 +1,6 @@
package; package;
#if sys
import haxe.io.Path; import haxe.io.Path;
import lime.utils.AssetLibrary; import lime.utils.AssetLibrary;
import lime.utils.AssetManifest; import lime.utils.AssetManifest;
@ -8,33 +9,42 @@ import sys.FileSystem;
@:access(lime.utils.Assets) @:access(lime.utils.Assets)
@:keep class ManifestResources { @:keep class ManifestResources {
public static var preloadLibraries:Array<AssetLibrary> = []; public static var preloadLibraries:Array<AssetLibrary> = [];
public static var preloadLibraryNames:Array<String> = []; public static var preloadLibraryNames:Array<String> = [];
public static var rootPath:String; public static var rootPath:String;
public static function init(config:Dynamic):Void { public static function init(config:Dynamic):Void {
rootPath = ""; rootPath = "";
#if sys var manifestDirPath = Path.join(["manifest"]);
var manifestPath = Path.join(["manifest", "data.json"]); var manifests = FileSystem.readDirectory(manifestDirPath);
if (!FileSystem.exists(manifestPath)) { for (manifest in manifests) {
trace("Manifest file not found: " + manifestPath); if (StringTools.endsWith(manifest, ".json")) {
return; var manifestPath = Path.join([manifestDirPath, manifest]);
} loadManifest(manifestPath);
#end }
}
}
try { public static function loadManifest(manifestPath) {
var manifest = AssetManifest.fromFile(manifestPath); if (!FileSystem.exists(manifestPath)) {
if (manifest != null) { trace("Manifest file not found: " + manifestPath);
var library = AssetLibrary.fromManifest(manifest); return;
if (library != null) { }
preloadLibraries.push(library);
preloadLibraryNames.push("default"); try {
LimeAssets.registerLibrary("default", library); var manifest = AssetManifest.fromFile(manifestPath);
} if (manifest != null) {
} var library = AssetLibrary.fromManifest(manifest);
} catch (e:Dynamic) { if (library != null) {
trace("Error loading asset manifest: " + e); preloadLibraries.push(library);
} preloadLibraryNames.push("default");
} LimeAssets.registerLibrary("default", library);
} }
}
} catch (e:Dynamic) {
trace("Error loading asset manifest: " + e);
}
}
}
#end