Dawn/ts/asset/AssetManager.ts
2021-09-26 00:42:35 -07:00

39 lines
1.0 KiB
TypeScript

export interface IAssetOwner {
}
export class AssetManager {
private owners:{ [key:string]:IAssetOwner[] };
private textures:{ [key:string]:Texture };
private shaders:{ [key:string]:Shader };
constructor() {
this.owners = {};
this.textures = {};
this.shaders = {};
}
private addOwner(name:string, owner:IAssetOwner) {
this.owners[name] = this.owners[name] || [];
this.owners[name].push(owner);
}
public textureLoad(name:string, owner:IAssetOwner):Texture {
this.addOwner(name, owner);
if(this.textures[name]) return this.textures[name];
this.textures[name] = textureCreate();
assetTextureLoad(this.textures[name], name);
return this.textures[name];
}
public shaderLoad(vert:string, frag:string, owner:IAssetOwner):Shader {
this.addOwner(vert, owner);
if(this.shaders[vert]) return this.shaders[vert];
this.shaders[vert] = shaderCreate();
assetShaderLoad(this.shaders[vert], vert, frag);
return this.shaders[vert];
}
public releaseOwner(owner:IAssetOwner) {
}
}