UNPKG

@polygonjs/polygonjs

Version:

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

115 lines (114 loc) 2.78 kB
"use strict"; import { ParamType } from "../../engine/poly/ParamType"; import { Vector2 } from "three"; import { Vector3 } from "three"; import { Vector4 } from "three"; import { Color } from "three"; export class FloatParamProxy { constructor(param) { this.param = param; this.proxyValue = param.value; } update(interpolant) { if (interpolant) { const val = interpolant.evaluate(this.proxyValue)[0]; this.param.set(val); } else { this.param.set(this.proxyValue); } } } export class IntegerParamProxy { constructor(param) { this.param = param; this.proxyValue = param.value; } update() { this.param.set(this.proxyValue); } } export class Vector2ParamProxy { constructor(param) { this.param = param; this.proxyValue = new Vector2(); this._array = [0, 0]; this.proxyValue.copy(param.value); } update() { this.proxyValue.toArray(this._array); this.param.set(this._array); } } export class Vector3ParamProxy { constructor(param) { this.param = param; this.proxyValue = new Vector3(); this._array = [0, 0, 0]; this.proxyValue.copy(param.value); } update() { this.proxyValue.toArray(this._array); this.param.set(this._array); } } export class Vector4ParamProxy { constructor(param) { this.param = param; this.proxyValue = new Vector4(); this._array = [0, 0, 0, 0]; this.proxyValue.copy(param.value); } update() { this.proxyValue.toArray(this._array); this.param.set(this._array); } } export class ColorParamProxy { constructor(param) { this.param = param; this.proxyValue = new Color(); this._array = [0, 0, 0]; this.proxyValue.copy(param.valuePreConversion()); } update() { this.proxyValue.toArray(this._array); this.param.set(this._array); } } export class AnimationNodeParamsProxy { constructor(node) { this._map = /* @__PURE__ */ new Map(); const params = node.params.all; for (const param of params) { const paramProxy = this._createParamProxy(param); if (paramProxy) { this._map.set(param, paramProxy); } } } _createParamProxy(param) { switch (param.type()) { case ParamType.INTEGER: { return new IntegerParamProxy(param); } case ParamType.FLOAT: { return new FloatParamProxy(param); } case ParamType.VECTOR2: { return new Vector2ParamProxy(param); } case ParamType.VECTOR3: { return new Vector3ParamProxy(param); } case ParamType.COLOR: { return new ColorParamProxy(param); } case ParamType.VECTOR4: { return new Vector4ParamProxy(param); } } } getParamProxy(param) { return this._map.get(param); } }