@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
43 lines (42 loc) • 1.43 kB
JavaScript
;
import {
isVariableSerializable,
serializeVariable,
deserializeVariable
} from "./_BaseJsPersistedConfigUtils";
import { Poly } from "../../../../Poly";
export function serializedVariablesFromFunctionData(functionData) {
const { variableNames, variablesByName } = functionData;
const serializedVariables = [];
for (const variableName of variableNames) {
const variable = variablesByName[variableName];
if (variable != null && isVariableSerializable(variable)) {
const serialized = serializeVariable(variable);
serializedVariables.push(serialized);
}
}
return serializedVariables;
}
export function variablesByNameFromPersistedConfigData(data) {
const { variableNames, variables } = data;
const variablesByName = {};
let i = 0;
for (const variableName of variableNames) {
const serialized = variables[i];
const deserialized = deserializeVariable(serialized);
variablesByName[variableName] = deserialized;
i++;
}
return variablesByName;
}
export function functionsByNameFromPersistedConfigData(data, node) {
const { functionNames } = data;
const functionsByName = {};
for (const functionName of functionNames) {
const namedFunction = Poly.namedFunctionsRegister.getFunction(functionName, node);
if (namedFunction) {
functionsByName[functionName] = namedFunction.func.bind(namedFunction);
}
}
return functionsByName;
}