polygonjs-engine
Version:
node-based webgl 3D engine https://polygonjs.com
74 lines (67 loc) • 2.53 kB
text/typescript
import {BaseNodeType} from '../../../nodes/_Base';
import {BaseParamType} from '../../../params/_Base';
import {NodeJsonImporter} from './Node';
// import {BaseNodeObjJsonImporter} from './node/Obj';
// import {BaseNodeSopSubnetworkJsonImporter} from './node/Subnetwork';
import {ParamJsonImporter} from './Param';
import {ParamMultipleJsonImporter} from './param/Multiple';
import {ParamStringJsonImporter} from './param/String';
import {ParamRampJsonImporter} from './param/Ramp';
// import {TypedObjNode} from '../../../nodes/obj/_Base';
import {TypedMultipleParam} from '../../../params/_Multiple';
import {StringParam} from '../../../params/String';
import {RampParam} from '../../../params/Ramp';
// import {PolySopNode} from '../../../nodes/sop/Poly';
// import {PolyObjNode} from '../../../nodes/obj/Poly';
import {PolyNodeJsonImporter} from './nodes/Poly';
export class JsonImportDispatcher {
static dispatch_node(node: BaseNodeType) {
// using PolySopNode and PolyObjNode seem to create circular dependency with webpack
// if (node instanceof PolySopNode || node instanceof PolyObjNode)
if (node.polyNodeController) {
return new PolyNodeJsonImporter(node);
}
return new NodeJsonImporter(node);
}
static dispatch_param(param: BaseParamType) {
if (param instanceof TypedMultipleParam) {
return new ParamMultipleJsonImporter(param);
}
if (param instanceof StringParam) {
return new ParamStringJsonImporter(param);
}
if (param instanceof RampParam) {
return new ParamRampJsonImporter(param);
}
return new ParamJsonImporter(param);
}
}
// export class CodeImporterVisitor {
// static node(node: BaseNode): NodeCodeImporter {
// return new NodeCodeImporter(node);
// }
// static node_obj(node: BaseNode) {
// return new BaseNodeObjCodeImporter(node);
// }
// static node_sop_subnetwork(node: BaseNode) {
// return new BaseNodeSopSubnetworkCodeImporter(node);
// }
// static visit_param(param: BaseParam) {
// return new ParamCodeImporter(param);
// }
// static param_multiple(param: BaseParam) {
// return new ParamMultipleCodeImporter(param);
// }
// static param_numeric(param: BaseParam) {
// return new ParamNumericCodeImporter(param);
// }
// static param_operator_path(param: BaseParam) {
// return new ParamOperatorPathCodeImporter(param);
// }
// static param_string(param: BaseParam) {
// return new ParamStringCodeImporter(param);
// }
// static param_ramp(param: BaseParam) {
// return new ParamRampCodeImporter(param);
// }
// }