UNPKG

@polygonjs/polygonjs

Version:

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

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