mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
27 lines (23 loc) • 902 B
text/typescript
import { createEffect } from "@lincode/reactivity"
import { finalSetup } from "../api/settings"
import Setup from "../display/Setup"
import { setupDefaults } from "../interface/ISetup"
import NullableDefault from "../interface/utils/NullableDefault"
import { getSetupStack } from "../states/useSetupStack"
import setupStruct from "./setupStruct"
const setupDefaultsMapped = Object.fromEntries(
Object.entries(setupDefaults).map(([key, value]) => [
key,
value instanceof NullableDefault ? undefined : value
])
)
createEffect(
function (this: Setup) {
const result: Record<string, any> = {}
for (const obj of [setupDefaultsMapped, ...getSetupStack(), finalSetup])
for (const [key, value] of Object.entries(obj))
value !== undefined && (result[key] = value)
Object.assign(setupStruct, result)
},
[getSetupStack]
)