lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
139 lines • 4.98 kB
JavaScript
import { Cancellable } from "@lincode/promiselikes";
import getStaticProperties from "../../display/utils/getStaticProperties";
import addInputs from "./addInputs";
import createParams from "./createParams";
import splitObject from "./splitObject";
import { defaultsOwnKeysRecordMap } from "../../collections/defaultsCollections";
export default (pane, selectionTarget, includeKeys, connection, toggle) => {
const handle = new Cancellable();
const { defaults, componentName } = getStaticProperties(selectionTarget);
const [params, manager] = createParams(selectionTarget, includeKeys, !connection && !toggle);
const [ownParams, ownRest] = splitObject(params, Object.keys(defaultsOwnKeysRecordMap.get(defaults) ?? {}));
const [generalParams, generalRest] = splitObject(ownRest, [
"name",
"id",
"uuid"
]);
if (generalParams)
addInputs(handle, pane, "general", manager, generalParams, true, connection, toggle);
const [physicsParams, physicsRest] = splitObject(generalRest, [
"physics",
"mass",
"gravity"
]);
physicsParams &&
addInputs(handle, pane, "physics", manager, physicsParams, false, connection, toggle);
const [transformParams0, transformRest] = splitObject(physicsRest, [
"x",
"y",
"z",
"rotationX",
"rotationY",
"rotationZ",
"scale",
"scaleX",
"scaleY",
"scaleZ",
"innerX",
"innerY",
"innerZ",
"innerRotationX",
"innerRotationY",
"innerRotationZ",
"width",
"height",
"depth"
]);
if (transformParams0) {
const [innerTransformParams, transformParams] = splitObject(transformParams0, [
"innerX",
"innerY",
"innerZ",
"innerRotationX",
"innerRotationY",
"innerRotationZ",
"width",
"height",
"depth"
]);
addInputs(handle, pane, "transform", manager, transformParams, false, connection, toggle);
innerTransformParams &&
addInputs(handle, pane, "inner transform", manager, innerTransformParams, false, connection, toggle);
}
const [interactionParams, interactionRest] = splitObject(transformRest, [
"hitTarget"
]);
interactionParams &&
addInputs(handle, pane, "interaction", manager, interactionParams, false, connection, toggle);
const [animationParams, animationRest] = splitObject(interactionRest, [
"animation",
"animationPaused"
]);
animationParams &&
addInputs(handle, pane, "animation", manager, animationParams, false, connection, toggle);
const [displayParams, displayRest] = splitObject(animationRest, [
"visible",
"innerVisible",
"reflectionVisible",
"castShadow"
]);
displayParams &&
addInputs(handle, pane, "display", manager, displayParams, false, connection, toggle);
const [effectsParams, effectsRest] = splitObject(displayRest, [
"bloom",
"outline"
]);
effectsParams &&
addInputs(handle, pane, "effects", manager, effectsParams, false, connection, toggle);
const [adjustMaterialParams, adjustMaterialRest] = splitObject(effectsRest, [
"metalnessFactor",
"roughnessFactor",
"opacityFactor",
"envFactor",
"reflection"
]);
adjustMaterialParams &&
addInputs(handle, pane, "adjust material", manager, adjustMaterialParams, false, connection, toggle);
const [materialParams, materialRest] = splitObject(adjustMaterialRest, [
...("textureRotation" in manager
? ["opacity", "color", "texture"]
: []),
"textureRepeat",
"textureFlipY",
"textureRotation",
"wireframe",
"depthTest",
"blending",
"emissive",
"emissiveIntensity"
]);
materialParams &&
addInputs(handle, pane, "material", manager, materialParams, false, connection, toggle);
const [pbrMaterialParams, pbrMaterialRest] = splitObject(materialRest, [
"metalnessMap",
"metalness",
"roughnessMap",
"roughness",
"normalMap",
"normalScale",
"bumpMap",
"bumpScale",
"displacementMap",
"displacementScale",
"displacementBias",
"aoMap",
"aoMapIntensity",
"lightMap",
"lightMapIntensity",
"envMap",
"envMapIntensity",
"alphaMap"
]);
pbrMaterialParams &&
addInputs(handle, pane, "pbr material", manager, pbrMaterialParams, false, connection, toggle);
Object.assign(pbrMaterialRest, ownParams);
if (Object.keys(pbrMaterialRest).length)
addInputs(handle, pane, componentName, manager, pbrMaterialRest, true, connection, toggle);
return handle;
};
//# sourceMappingURL=addTargetInputs.js.map