arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
51 lines • 1.93 kB
JavaScript
import { BinaryIO } from '../common/BinaryIO.js';
import { repeat } from '../common/helpers.js';
export var ArxZoneAndPathPointType;
(function (ArxZoneAndPathPointType) {
ArxZoneAndPathPointType[ArxZoneAndPathPointType["Standard"] = 0] = "Standard";
ArxZoneAndPathPointType[ArxZoneAndPathPointType["Bezier"] = 1] = "Bezier";
ArxZoneAndPathPointType[ArxZoneAndPathPointType["BezierControlPoint"] = 2] = "BezierControlPoint";
})(ArxZoneAndPathPointType || (ArxZoneAndPathPointType = {}));
export class ZoneAndPathPoint {
static readFrom(binary, pos) {
const rpos = binary.readVector3();
const data = {
pos: {
x: rpos.x + pos.x,
y: rpos.y + pos.y,
z: rpos.z + pos.z,
},
type: binary.readInt32(),
time: binary.readUint32(),
};
binary.readFloat32Array(2); // fpad - ?
binary.readInt32Array(2); // lpad - ?
binary.readUint8Array(32); // cpad - ?
return data;
}
static allocateFrom(point, pos) {
const buffer = new ArrayBuffer(ZoneAndPathPoint.sizeOf());
const binary = new BinaryIO(buffer);
const rpos = {
x: point.pos.x - pos.x,
y: point.pos.y - pos.y,
z: point.pos.z - pos.z,
};
binary.writeVector3(rpos);
binary.writeInt32(point.type);
binary.writeUint32(point.time);
binary.writeFloat32Array(repeat(0, 2));
binary.writeInt32Array(repeat(0, 2));
binary.writeUint8Array(repeat(0, 32));
return buffer;
}
static sizeOf() {
return (BinaryIO.sizeOfVector3() +
BinaryIO.sizeOfInt32() +
BinaryIO.sizeOfUint32() +
BinaryIO.sizeOfFloat32Array(2) +
BinaryIO.sizeOfInt32Array(2) +
BinaryIO.sizeOfUint8Array(32));
}
}
//# sourceMappingURL=ZoneAndPathPoint.js.map