kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
59 lines • 2.14 kB
JavaScript
import React from 'react';
import { verticesDistance } from "../../../utils/geometry";
import { convert } from "../../../utils/convert-units-lite";
import Layer3D from "./layer3D";
export function compareVertices(v0, v1) {
return v0.x === v1.x ? v0.y - v1.y : v0.x - v1.x;
}
export default function Scene3D(_ref) {
var scene = _ref.scene,
catalog = _ref.catalog,
width = _ref.width,
height = _ref.height,
mode = _ref.mode,
downloadFlag = _ref.downloadFlag;
var layers = scene.layers;
var selectedLayer = layers.get(scene.selectedLayer);
var ceilHeight = selectedLayer.ceilHeight;
var selectedLine = selectedLayer.lines.get(selectedLayer.selected.lines.toJS()[0]);
var vertex0 = selectedLayer.vertices.get(selectedLine.vertices.get(0));
var vertex1 = selectedLayer.vertices.get(selectedLine.vertices.get(1));
var lineLength = convert(verticesDistance(vertex0, vertex1)).from(scene.unit).to(selectedLayer.unit);
var multi = downloadFlag ? 0.85 : 0.6;
var scale = Math.min(width * multi / lineLength, height * multi / ceilHeight);
var frontRect = {
width: lineLength * scale,
height: ceilHeight * scale
};
var i = 0,
grids = [];
var viewScale = Math.min(width / window.innerWidth, height / window.innerHeight);
for (var x = -width / 2; x <= width / 2; x = x + 30 * viewScale) {
for (var y = -height / 2; y <= height / 2; y = y + 30 * viewScale) {
if (Math.abs(x) > frontRect.width / 2 || Math.abs(y) > frontRect.height / 2) {
grids.push(/*#__PURE__*/React.createElement("circle", {
key: "grid_".concat(i),
cx: x,
cy: y,
r: 2 * viewScale,
fill: "#bbb"
}));
i++;
}
}
}
return /*#__PURE__*/React.createElement("g", null, grids, /*#__PURE__*/React.createElement(Layer3D, {
key: selectedLayer.id,
layer: selectedLayer,
frontRect: frontRect,
lineLength: lineLength,
ceilHeight: ceilHeight.toFixed(0),
catalog: catalog,
scene: scene,
scale: scale,
mode: mode,
line: selectedLine,
viewScale: viewScale,
downloadFlag: downloadFlag
}));
}