Archived
Private
Public Access
1
0

Initial commit

This commit is contained in:
2022-09-04 12:45:01 +02:00
commit f4a01d6a69
11601 changed files with 4206660 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
namespace TSE {
class MaterialReferenceNode {
public material: Material;
public referenceCount: number = 1;
public constructor(material: Material) {
this.material = material;
}
}
export class MaterialManager {
private static _materials: { [name: string]: MaterialReferenceNode } = {};
private constructor() { }
public static registerMaterial(material: Material): void {
if (MaterialManager._materials[material.name] === undefined)
MaterialManager._materials[material.name] = new MaterialReferenceNode(material);
}
public static getMaterial(materialName: string): Material {
if (MaterialManager._materials[materialName] === undefined) return undefined;
MaterialManager._materials[materialName].referenceCount++;
return MaterialManager._materials[materialName].material;
}
public static releaseMaterial(materialName: string): void {
if (MaterialManager._materials[materialName] === undefined) console.warn("Cannot release an undefined Material!");
else {
MaterialManager._materials[materialName].referenceCount--;
if (MaterialManager._materials[materialName].referenceCount < 1) {
MaterialManager._materials[materialName].material.destroy();
delete MaterialManager._materials[materialName];
}
}
}
}
}