UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

66 lines (62 loc) 1.74 kB
/** * A camera. */ export default class Camera { /** * */ constructor() { /** @member {Float32Array} */ this.targetLocation = new Float32Array(3); /** @member {number} */ this.rotation = 0; /** @member {number} */ this.angleOfAttack = 0; /** @member {number} */ this.distance = 0; /** @member {number} */ this.roll = 0; /** @member {number} */ this.fieldOfView = 0; /** @member {number} */ this.farClippingPlane = 0; /** @member {number} */ this.nearClippingPlane = 0; /** @member {string} */ this.cinematicName = ''; } /** * @param {BinaryStream} stream */ load(stream) { this.targetLocation = stream.readFloat32Array(3); this.rotation = stream.readFloat32(); // in degrees this.angleOfAttack = stream.readFloat32(); // in degrees this.distance = stream.readFloat32(); this.roll = stream.readFloat32(); this.fieldOfView = stream.readFloat32(); // in degrees this.farClippingPlane = stream.readFloat32(); this.nearClippingPlane = stream.readFloat32(); // probably near clipping plane this.cinematicName = stream.readUntilNull(); } /** * @param {BinaryStream} stream */ save(stream) { stream.writeFloat32Array(this.targetLocation); stream.writeFloat32(this.rotation); stream.writeFloat32(this.angleOfAttack); stream.writeFloat32(this.distance); stream.writeFloat32(this.roll); stream.writeFloat32(this.fieldOfView); stream.writeFloat32(this.farClippingPlane); stream.writeFloat32(this.nearClippingPlane); stream.write(`${this.cinematicName}\0`); } /** * @return {number} */ getByteLength() { return 41 + this.cinematicName.length; } }