UNPKG

arx-convert

Version:

Converts various Arx Fatalis formats to JSON or YAML and back

62 lines 2.32 kB
import { BinaryIO } from '../common/BinaryIO.js'; import { Color } from '../common/Color.js'; import { repeat } from '../common/helpers.js'; export class Fog { static readFrom(binary) { const dataBlock1 = { pos: binary.readVector3(), color: Color.readFrom(binary, 'rgb'), size: binary.readFloat32(), special: binary.readInt32(), scale: binary.readFloat32(), move: binary.readVector3(), angle: binary.readRotation(), speed: binary.readFloat32(), rotateSpeed: binary.readFloat32(), toLive: binary.readInt32(), }; binary.readInt32(); // blend - always 0 const frequency = binary.readFloat32(); binary.readFloat32Array(32); // fpad - ? binary.readInt32Array(32); // lpad - ? binary.readString(256); // cpad - ? return { ...dataBlock1, frequency, }; } static accumulateFrom(fog) { const buffer = new ArrayBuffer(Fog.sizeOf()); const binary = new BinaryIO(buffer); binary.writeVector3(fog.pos); binary.writeBuffer(Color.accumulateFrom(fog.color, 'rgb')); binary.writeFloat32(fog.size); binary.writeInt32(fog.special); binary.writeFloat32(fog.scale); binary.writeVector3(fog.move); binary.writeRotation(fog.angle); binary.writeFloat32(fog.speed); binary.writeFloat32(fog.rotateSpeed); binary.writeInt32(fog.toLive); binary.writeInt32(0); // blend binary.writeFloat32(fog.frequency); binary.writeFloat32Array(repeat(0, 32)); // fpad binary.writeInt32Array(repeat(0, 32)); // lpad binary.writeString('', 256); // cpad return buffer; } static sizeOf() { return (BinaryIO.sizeOfVector3() + Color.sizeOf('rgb') + BinaryIO.sizeOfFloat32Array(2) + BinaryIO.sizeOfInt32() + BinaryIO.sizeOfVector3() + BinaryIO.sizeOfRotation() + BinaryIO.sizeOfFloat32Array(3) + BinaryIO.sizeOfInt32Array(2) + BinaryIO.sizeOfFloat32Array(32) + BinaryIO.sizeOfInt32Array(32) + BinaryIO.sizeOfString(256)); } } //# sourceMappingURL=Fog.js.map