@dcl/ecs
Version:
Decentraland ECS
55 lines (54 loc) • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createVersionGSet = void 0;
/**
*
* @returns a new GSet
*/
function createVersionGSet() {
const lastVersion = new Map();
return {
/**
*
* @param number
* @param version
* @returns
*/
addTo(number, version) {
/* istanbul ignore next */
if (version < 0) {
/* istanbul ignore next */
return false;
}
const currentValue = lastVersion.get(number);
// If the version is >=, it means the value it's already in the set
if (currentValue !== undefined && currentValue >= version) {
return true;
}
lastVersion.set(number, version);
return true;
},
/**
* @returns the set with [number, version] of each value
*/
has(n, v) {
const currentValue = lastVersion.get(n);
// If the version is >=, it means the value it's already in the set
if (currentValue !== undefined && currentValue >= v) {
return true;
}
return false;
},
/**
* Warning: this function returns the reference to the internal map,
* if you need to mutate some value, make a copy.
* For optimization purpose the copy isn't made here.
*
* @returns the map of number to version
*/
getMap() {
return lastVersion;
}
};
}
exports.createVersionGSet = createVersionGSet;