From fdd24be624a0ed10704e334b1bded388eb6c5d6e Mon Sep 17 00:00:00 2001 From: fallenoak Date: Mon, 25 May 2020 13:38:37 -0500 Subject: [PATCH] feat(vector3): add accessors for x, y, z (#54) --- src/lib/Vector3.mjs | 33 +++++++++++++++++++++++++++ src/spec/Vector3.spec.js | 48 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/src/lib/Vector3.mjs b/src/lib/Vector3.mjs index 5a87c7a..7911061 100644 --- a/src/lib/Vector3.mjs +++ b/src/lib/Vector3.mjs @@ -61,6 +61,39 @@ class Vector3 extends Float32Array { } } + /** + * @type {Number} + */ + get x() { + return this[0]; + } + + set x(x) { + this[0] = x; + } + + /** + * @type {Number} + */ + get y() { + return this[1]; + } + + set y(y) { + this[1] = y; + } + + /** + * @type {Number} + */ + get z() { + return this[2]; + } + + set z(z) { + this[2] = z; + } + /** * Add given vector v to this vector. * diff --git a/src/spec/Vector3.spec.js b/src/spec/Vector3.spec.js index d1c593b..dbeeab7 100644 --- a/src/spec/Vector3.spec.js +++ b/src/spec/Vector3.spec.js @@ -16,6 +16,54 @@ describe('Vector3', () => { }); }); + describe('prototype.x', () => { + test('gets x component', () => { + const vector = Vector3.of(1.0, 2.0, 3.0); + + expect(vector.x).toEqual(1.0); + }); + + test('sets x component', () => { + const vector = Vector3.of(1.0, 2.0, 3.0); + + vector.x = 4.0; + + expect(vector.x).toEqual(4.0); + }); + }); + + describe('prototype.y', () => { + test('gets y component', () => { + const vector = Vector3.of(1.0, 2.0, 3.0); + + expect(vector.y).toEqual(2.0); + }); + + test('sets y component', () => { + const vector = Vector3.of(1.0, 2.0, 3.0); + + vector.y = 4.0; + + expect(vector.y).toEqual(4.0); + }); + }); + + describe('prototype.z', () => { + test('gets z component', () => { + const vector = Vector3.of(1.0, 2.0, 3.0); + + expect(vector.z).toEqual(3.0); + }); + + test('sets z component', () => { + const vector = Vector3.of(1.0, 2.0, 3.0); + + vector.z = 4.0; + + expect(vector.z).toEqual(4.0); + }); + }); + describe('prototype.add()', () => { test('returns expected result when adding positive vector', () => { const vector1 = Vector3.of(1.0, 2.0, 3.0);