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