UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

78 lines (77 loc) 2.18 kB
"use strict"; import { TypeAssert } from "../../engine/poly/Assert"; export var AnimationPositionMode = /* @__PURE__ */ ((AnimationPositionMode2) => { AnimationPositionMode2["RELATIVE"] = "relative"; AnimationPositionMode2["ABSOLUTE"] = "absolute"; return AnimationPositionMode2; })(AnimationPositionMode || {}); export const ANIMATION_POSITION_MODES = ["relative" /* RELATIVE */, "absolute" /* ABSOLUTE */]; export var AnimationPositionRelativeTo = /* @__PURE__ */ ((AnimationPositionRelativeTo2) => { AnimationPositionRelativeTo2["START"] = "start"; AnimationPositionRelativeTo2["END"] = "end"; return AnimationPositionRelativeTo2; })(AnimationPositionRelativeTo || {}); export const ANIMATION_POSITION_RELATIVE_TOS = [ "start" /* START */, "end" /* END */ ]; export class AnimationPosition { constructor() { this._mode = "relative" /* RELATIVE */; this._relativeTo = "end" /* END */; this._offset = 0; } clone() { const new_position = new AnimationPosition(); new_position.setMode(this._mode); new_position.setRelativeTo(this._relativeTo); new_position.setOffset(this._offset); return new_position; } setMode(mode) { this._mode = mode; } mode() { return this._mode; } setRelativeTo(relative_to) { this._relativeTo = relative_to; } relativeTo() { return this._relativeTo; } setOffset(offset) { this._offset = offset; } offset() { return this._offset; } toParameter() { switch (this._mode) { case "relative" /* RELATIVE */: return this._relative_position_param(); case "absolute" /* ABSOLUTE */: return this._absolutePositionParam(); } TypeAssert.unreachable(this._mode); } _relative_position_param() { switch (this._relativeTo) { case "end" /* END */: return this._offsetString(); case "start" /* START */: return `<${this._offset}`; } TypeAssert.unreachable(this._relativeTo); } _absolutePositionParam() { return this._offset; } _offsetString() { if (this._offset > 0) { return `+=${this._offset}`; } else { return `-=${Math.abs(this._offset)}`; } } }