UNPKG

@polygonjs/polygonjs

Version:

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

53 lines (52 loc) 1.74 kB
"use strict"; import { BasePersistedConfig } from "../../../../utils/BasePersistedConfig"; import { JsParamConfig } from "../../utils/JsParamConfig"; import { serializedVariablesFromFunctionData, variablesByNameFromPersistedConfigData, functionsByNameFromPersistedConfigData } from "../_BaseJsPersistedConfig"; export class BaseEntityBuilderPersistedConfig extends BasePersistedConfig { constructor(node) { super(node); this.node = node; } async toData() { await this.node.compile(); const assemblerController = this.node.assemblerController(); if (!assemblerController) { return; } const functionData = this.node.functionData(); if (!functionData) { return; } const { functionBody, variableNames, functionNames, paramConfigs, attributesData } = functionData; const data = { functionBody, variableNames, variables: serializedVariablesFromFunctionData(functionData), functionNames, serializedParamConfigs: paramConfigs.map((p) => p.toJSON()), attributesData }; return data; } load(data) { const assemblerController = this.node.assemblerController(); if (assemblerController) { return; } const { functionBody, variableNames, functionNames, serializedParamConfigs, attributesData } = data; const functionData = { functionBody, variableNames, variablesByName: variablesByNameFromPersistedConfigData(data), functionNames, functionsByName: functionsByNameFromPersistedConfigData(data, this.node), paramConfigs: serializedParamConfigs.map((json) => JsParamConfig.fromJSON(json)), attributesData }; this.node.updateFromFunctionData(functionData); } }