UNPKG

cyclone-physics

Version:

Pure Javascript physics engine based on http://procyclone.com/

74 lines (65 loc) 2.17 kB
elation.require(['engine.external.three.three'], function() { class CycloneVector3 extends THREE.Vector3 { get x() { return this._x; } set x(v) { this.changed = (this.changed || v !== this._x); this._x = v; } get y() { return this._y; } set y(v) { this.changed = (this.changed || v !== this._y); this._y = v; } get z() { return this._z; } set z(v) { this.changed = (this.changed || v !== this._z); this._z = v; } reset() { this.changed = false; } toJSON() { return {x: this._x, y: this._y, z: this._z}; } clone() { return super.clone(); } } // FIXME - orientation doesn't currently work properly because THREE.Quaternion already uses getters and setters internally class CycloneQuaternion extends THREE.Quaternion { get x() { return this._x; } set x(v) { this.changed = (this.changed || v !== this._x); this._x = v; } get y() { return this._y; } set y(v) { this.changed = (this.changed || v !== this._y); this._y = v; } get z() { return this._z; } set z(v) { this.changed = (this.changed || v !== this._z); this._z = v; } get w() { return this._w; } set w(v) { this.changed = (this.changed || v !== this._w); this._w = v; } copy(quat) { this.changed = true; return super.copy(quat); } clone() { return super.clone(); } set(x, y, z, w) { this.changed = true; return super.set(x, y, z, w); } setFromEuler(euler, update) { this.changed = true; return super.setFromEuler(euler, update); } setFromAxisAngle(axis, angle) { this.changed = true; return super.setFromAxisAngle(axis, angle); } setFromRotationMatrix(m) { this.changed = true; return super.setFromRotationMatrix(m); } setFromUnitVectors(v1, v2) { this.changed = true; return super.setFromUnitVectors(v1, v2); } reset() { this.changed = false; } toJSON() { return {x: this._x, y: this._y, z: this._z, w: this.w}; } } elation.extend('physics.vector3', CycloneVector3); elation.extend('physics.quaternion', CycloneQuaternion); });