UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

52 lines (41 loc) 1.35 kB
import { assert } from "../../../../core/assert.js"; /** * Upgrade binary data by executing a sequence of upgraders on it * @param {BinaryClassUpgrader[]} upgraders * @param {BinaryBuffer} buffer input data * @param {BinaryBuffer} tempBuffer0 * @param {BinaryBuffer} tempBuffer1 * @return {BinaryBuffer} buffer with upgraded data, this will be either {@link tempBuffer0} or {@link tempBuffer1} */ export function executeBinaryClassUpgraderChain( upgraders, buffer, tempBuffer0, tempBuffer1 ) { assert.isArray(upgraders, 'upgraders'); assert.defined(buffer, 'buffer'); assert.defined(tempBuffer0); assert.defined(tempBuffer1); /** * * @type {BinaryBuffer[]} */ const tempBuffers = [tempBuffer0, tempBuffer1]; let sourceBuffer = buffer; let targetBuffer = tempBuffer0; const upgraderCount = upgraders.length; //perform upgrade for ( let i = 0; i < upgraderCount; i++, sourceBuffer = targetBuffer, targetBuffer = tempBuffers[i % 2] ) { const upgrader = upgraders[i]; targetBuffer.position = 0; upgrader.upgrade(sourceBuffer, targetBuffer); //rewind target buffer so it can be read targetBuffer.position = 0; } return sourceBuffer; }