This commit is contained in:
yhh
2021-04-23 21:27:34 +08:00
parent 99eca546d2
commit d576a95548
6 changed files with 82 additions and 9 deletions

View File

@@ -0,0 +1,39 @@
module es {
interface IdentityHashMap {
[key: string]: ComponentType;
}
export class ComponentTypeFactory {
private componentTypes_: IdentityHashMap;
private componentTypeCount_ = 0;
public types: Bag<ComponentType>;
constructor() {
this.componentTypes_ = {};
this.types = new Bag<ComponentType>();
}
public getTypeFor(c): ComponentType {
if ("number" === typeof c) {
return this.types.get(c);
}
let type: ComponentType = this.componentTypes_[getClassName(c)];
if (type == null) {
const index: number = this.componentTypeCount_++;
type = new ComponentType(c, index);
this.componentTypes_[getClassName(c)] = type;
this.types.set(index, type);
}
return type;
}
public getIndexFor(c): number {
return this.getTypeFor(c).getIndex();
}
}
}