lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
35 lines • 1.19 kB
JavaScript
import serialize from "../api/serializer/serialize";
import throttleFrameTrailing from "./utils/throttleFrameTrailing";
let prevNodes = {};
export default throttleFrameTrailing(() => {
//@ts-ignore
const nodes = serialize().group((node) => node.uuid);
const createNodes = [];
const updateNodes = [];
const deleteNodes = [];
for (const [uuid, [node]] of Object.entries(nodes)) {
if (!(uuid in prevNodes)) {
createNodes.push(node);
continue;
}
const prevNode = prevNodes[uuid][0];
const diffNode = { uuid };
let hasDiff = false;
for (const [key, value] of Object.entries(node))
if (value !== prevNode[key]) {
diffNode[key] = value;
hasDiff = true;
}
hasDiff && updateNodes.push(diffNode);
}
for (const [uuid, [node]] of Object.entries(prevNodes)) {
if (uuid in nodes)
continue;
deleteNodes.push(node);
}
console.log("create", createNodes);
console.log("update", updateNodes);
console.log("delete", deleteNodes);
prevNodes = nodes;
});
//# sourceMappingURL=diffSceneGraph.js.map