@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
78 lines (77 loc) • 2.18 kB
JavaScript
"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)}`;
}
}
}