Archived
Private
Public Access
1
0
This repository has been archived on 2026-02-04. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
ProjectBackup/C#/TSEngine/Core/Assets/assetManager.ts
2022-09-04 12:45:01 +02:00

54 lines
1.7 KiB
TypeScript

namespace TSE {
export const MESSAGE_ASSET_LOADER_ASSET_LOADED = "MESSAGE_ASSET_LOADER_ASSET_LOADED::";
export class AssetManager {
private static _loaders: IAssetLoader[] = [];
private static _loadedAssets: { [name: string]: IAsset } = {};
private constructor() {}
public static initialize(): void {
this.registerLoader(new ImageAssetLoader());
this.registerLoader(new JsonAssetLoader());
}
public static registerLoader(loader: IAssetLoader): void {
AssetManager._loaders.push(loader);
}
public static onAssetLoaded(asset: IAsset): void {
AssetManager._loadedAssets[asset.name] = asset;
Message.send(MESSAGE_ASSET_LOADER_ASSET_LOADED + asset.name, this, asset);
}
public static loadAsset(assetName: string): void {
let extention = assetName.split('.').pop().toLowerCase();
for (let loader of AssetManager._loaders) {
if (loader.supportedExtensions.indexOf(extention) !== -1) {
loader.loadAsset(assetName);
return;
}
}
console.warn("Unable to load asset with extention: '" + extention + "'. no loader was found.");
}
public static isAssetLoaded(assetName: string): boolean {
return AssetManager._loadedAssets[assetName] !== undefined;
}
public static getAsset(assetName: string): IAsset {
if (AssetManager.isAssetLoaded(assetName)) {
return AssetManager._loadedAssets[assetName];
} else {
AssetManager.loadAsset(assetName);
}
return undefined;
}
}
}