UNPKG

@tamgl/colyseus-schema

Version:

Binary state serializer with delta encoding for games

50 lines 1.56 kB
"use strict"; 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