@tamgl/colyseus-schema
Version:
Binary state serializer with delta encoding for games
50 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getIndent = getIndent;
exports.dumpChanges = dumpChanges;
exports.getNextPowerOf2 = getNextPowerOf2;
const spec_1 = require("./encoding/spec");
const symbols_1 = require("./types/symbols");
function getIndent(level) {
return (new Array(level).fill(0)).map((_, i) => (i === level - 1) ? `└─ ` : ` `).join("");
}
function dumpChanges(schema) {
const $root = schema[symbols_1.$changes].root;
const dump = {
ops: {},
refs: []
};
// for (const refId in $root.changes) {
$root.changes.forEach(changeTree => {
// skip if ChangeTree is undefined
if (changeTree === undefined) {
return;
}
const changes = changeTree.indexedOperations;
dump.refs.push(`refId#${changeTree.refId}`);
for (const index in changes) {
const op = changes[index];
const opName = spec_1.OPERATION[op];
if (!dump.ops[opName]) {
dump.ops[opName] = 0;
}
dump.ops[spec_1.OPERATION[op]]++;
}
});
return dump;
}
function getNextPowerOf2(number) {
// If number is already a power of 2, return it
if ((number & (number - 1)) === 0) {
return number;
}
// Find the position of the most significant bit
let msbPosition = 0;
while (number > 0) {
number >>= 1;
msbPosition++;
}
// Return the next power of 2
return 1 << msbPosition;
}
//# sourceMappingURL=utils.js.map