UNPKG

mylingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

29 lines (25 loc) 1.02 kB
import { omit } from "@lincode/utils" import createObject from "./createObject" import { nonSerializedProperties, SceneGraphNode } from "./types" import Loaded from "../../display/core/Loaded" import { Object3D } from "three" import Reresolvable from "../../display/core/utils/Reresolvable" const nodeToObjectManager = ( node: SceneGraphNode, loadedResolvables: Array<Reresolvable<Object3D>> | undefined ) => { if (node.type === "animation" || node.type === "lingo3d") return const object = createObject(node.type) loadedResolvables && object instanceof Loaded && loadedResolvables.push(object.loaded) Object.assign(object, omit(node, nonSerializedProperties)) node.children ?.map((n) => nodeToObjectManager(n, loadedResolvables)) .forEach((c) => c && object.append(c)) return object } export default ( graph: Array<SceneGraphNode>, loadedResolvables?: Array<Reresolvable<Object3D>> ) => graph.map((n) => nodeToObjectManager(n, loadedResolvables))