lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
25 lines • 1.02 kB
JavaScript
import { sharedPoolReleaseSystem } from "../../systems/configSystems/sharedPoolReleaseSystem";
export default (factory, dispose) => {
const paramsInstanceMap = new Map();
const paramsCountRecord = {};
const objectParamStringMap = new WeakMap();
const request = (params, paramString = JSON.stringify(params), context = undefined) => {
if ((paramsCountRecord[paramString] =
(paramsCountRecord[paramString] ?? 0) + 1) === 1) {
const result = factory(params, context);
objectParamStringMap.set(result, paramString);
paramsInstanceMap.set(paramString, result);
return result;
}
return paramsInstanceMap.get(paramString);
};
const release = (object) => object &&
sharedPoolReleaseSystem.add(object, {
objectParamStringMap,
paramsCountRecord,
dispose,
paramsInstanceMap
});
return [request, release];
};
//# sourceMappingURL=createSharedPool.js.map