UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

48 lines (37 loc) 1.29 kB
/** * * @param {Vector3} result * @param {number} distance * @param {number} origin_x * @param {number} source_y * @param {number} source_z * @param {number} direction_x * @param {number} direction_y * @param {number} direction_z * @returns {boolean} true if displaced successfully, false if direction had 0 magnitude */ export function v3_displace_in_direction( result, distance, origin_x, source_y, source_z, direction_x, direction_y, direction_z ) { if (distance === 0) { result.set(origin_x, source_y, source_z); return true; } // scale direction to have length equal to distance const direction_length_sqr = direction_x * direction_x + direction_y * direction_y + direction_z * direction_z; if (direction_length_sqr === 0) { // direction vector is zero length, avoid division by zero, clamp to source instead result.set(origin_x, source_y, source_z); return false; } const direction_length = Math.sqrt(direction_length_sqr); const m = distance / direction_length; const x = origin_x + direction_x * m; const y = source_y + direction_y * m; const z = source_z + direction_z * m; result.set(x, y, z); return true; }