kitchen-simulator
Version:
It is a kitchen simulator (self-contained micro-frontend).
67 lines (66 loc) • 2.5 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.compareVertices = compareVertices;
exports["default"] = Scene3D;
var _react = _interopRequireDefault(require("react"));
var _geometry = require("../../../utils/geometry");
var _convertUnitsLite = require("../../../utils/convert-units-lite");
var _layer3D = _interopRequireDefault(require("./layer3D"));
function compareVertices(v0, v1) {
return v0.x === v1.x ? v0.y - v1.y : v0.x - v1.x;
}
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 = (0, _convertUnitsLite.convert)((0, _geometry.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["default"].createElement("circle", {
key: "grid_".concat(i),
cx: x,
cy: y,
r: 2 * viewScale,
fill: "#bbb"
}));
i++;
}
}
}
return /*#__PURE__*/_react["default"].createElement("g", null, grids, /*#__PURE__*/_react["default"].createElement(_layer3D["default"], {
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
}));
}