UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

43 lines (30 loc) 1.13 kB
import { MarkerNodeTransformer } from "./MarkerNodeTransformer.js"; import Vector2 from "../../../core/geom/Vector2.js"; import Vector3 from "../../../core/geom/Vector3.js"; export class MarkerNodeTransformerOffsetPosition extends MarkerNodeTransformer { offset = new Vector2(); /** * * @param {number} x * @param {number} y * @return {MarkerNodeTransformerOffsetPosition} */ static from(x, y) { const r = new MarkerNodeTransformerOffsetPosition(); r.offset.set(x, y); return r; } transform(node, grid) { const r = node.clone(); //rotate offset const rotation = r.transform.rotation.computeTwistAngle(Vector3.down); const sin = Math.sin(rotation); const cos = Math.cos(rotation); const local_x = this.offset.x; const local_y = this.offset.y; const rotated_local_x = local_x * cos - local_y * sin const rotated_local_y = local_x * sin + local_y * cos; r.position._add(rotated_local_x, rotated_local_y); return r; } }