@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
51 lines (50 loc) • 1.65 kB
JavaScript
;
import { BasePersistedConfig } from "../../../../utils/BasePersistedConfig";
import { JsParamConfig } from "../../utils/JsParamConfig";
import {
serializedVariablesFromFunctionData,
variablesByNameFromPersistedConfigData,
functionsByNameFromPersistedConfigData
} from "../_BaseJsPersistedConfig";
export class SoftBodyPersistedConfig 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 } = functionData;
const data = {
functionBody,
variableNames,
variables: serializedVariablesFromFunctionData(functionData),
functionNames,
serializedParamConfigs: paramConfigs.map((p) => p.toJSON())
};
return data;
}
load(data) {
const assemblerController = this.node.assemblerController();
if (assemblerController) {
return;
}
const { functionBody, variableNames, functionNames, serializedParamConfigs } = data;
const functionData = {
functionBody,
variableNames,
variablesByName: variablesByNameFromPersistedConfigData(data),
functionNames,
functionsByName: functionsByNameFromPersistedConfigData(data, this.node),
paramConfigs: serializedParamConfigs.map((json) => JsParamConfig.fromJSON(json))
};
this.node.updateFromFunctionData(functionData);
}
}