UNPKG

arx-convert

Version:

Converts various Arx Fatalis formats to JSON or YAML and back

42 lines 1.61 kB
import { Setting } from './Setting.js'; import { BinaryIO } from '../common/BinaryIO.js'; export class Key { /** * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/audio/Ambiance.cpp#L187 */ static readFrom(binary) { binary.readUint32(); // flags - always 0 return { start: binary.readUint32(), loop: binary.readUint32() + 1, delayMin: binary.readUint32(), delayMax: binary.readUint32(), volume: Setting.readFrom(binary), pitch: Setting.readFrom(binary), pan: Setting.readFrom(binary), x: Setting.readFrom(binary), y: Setting.readFrom(binary), z: Setting.readFrom(binary), }; } static accumulateFrom(key) { const buffer = new ArrayBuffer(Key.sizeOf()); const binary = new BinaryIO(buffer); binary.writeUint32(0); // flags binary.writeUint32(key.start); binary.writeUint32(key.loop - 1); binary.writeUint32(key.delayMin); binary.writeUint32(key.delayMax); binary.writeBuffer(Setting.accumulateFrom(key.volume)); binary.writeBuffer(Setting.accumulateFrom(key.pitch)); binary.writeBuffer(Setting.accumulateFrom(key.pan)); binary.writeBuffer(Setting.accumulateFrom(key.x)); binary.writeBuffer(Setting.accumulateFrom(key.y)); binary.writeBuffer(Setting.accumulateFrom(key.z)); return buffer; } static sizeOf() { return BinaryIO.sizeOfInt32() * 5 + Setting.sizeOf() * 6; } } //# sourceMappingURL=Key.js.map