abstract-3d 2.12.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/abstract-3d.d.ts +32 -5
- package/lib/abstract-3d.d.ts.map +1 -1
- package/lib/abstract-3d.js.map +1 -1
- package/lib/renderers/ifc/ifc-encoding.d.ts +5 -2
- package/lib/renderers/ifc/ifc-encoding.d.ts.map +1 -1
- package/lib/renderers/ifc/ifc-encoding.js +30 -7
- package/lib/renderers/ifc/ifc-encoding.js.map +1 -1
- package/lib/renderers/ifc/ifc-geometry.d.ts +4 -0
- package/lib/renderers/ifc/ifc-geometry.d.ts.map +1 -1
- package/lib/renderers/ifc/ifc-geometry.js +8 -0
- package/lib/renderers/ifc/ifc-geometry.js.map +1 -1
- package/lib/renderers/ifc/ifc.d.ts +36 -23
- package/lib/renderers/ifc/ifc.d.ts.map +1 -1
- package/lib/renderers/ifc/ifc.js +164 -67
- package/lib/renderers/ifc/ifc.js.map +1 -1
- package/lib/renderers/react/index.d.ts +0 -1
- package/lib/renderers/react/index.d.ts.map +1 -1
- package/lib/renderers/react/index.js.map +1 -1
- package/lib/renderers/react/react-dimension.d.ts +2 -2
- package/lib/renderers/react/react-dimension.d.ts.map +1 -1
- package/lib/renderers/react/react-dimension.js +2 -2
- package/lib/renderers/react/react-dimension.js.map +1 -1
- package/lib/renderers/react/react-group.d.ts +3 -2
- package/lib/renderers/react/react-group.d.ts.map +1 -1
- package/lib/renderers/react/react-group.js +3 -3
- package/lib/renderers/react/react-group.js.map +1 -1
- package/lib/renderers/react/react-material.d.ts +2 -2
- package/lib/renderers/react/react-material.d.ts.map +1 -1
- package/lib/renderers/react/react-material.js +3 -3
- package/lib/renderers/react/react-material.js.map +1 -1
- package/lib/renderers/react/react-relation.d.ts +10 -0
- package/lib/renderers/react/react-relation.d.ts.map +1 -0
- package/lib/renderers/react/react-relation.js +31 -0
- package/lib/renderers/react/react-relation.js.map +1 -0
- package/lib/renderers/react/react-scene.d.ts +4 -7
- package/lib/renderers/react/react-scene.d.ts.map +1 -1
- package/lib/renderers/react/react-scene.js +4 -4
- package/lib/renderers/react/react-scene.js.map +1 -1
- package/lib/renderers/react/react.d.ts +8 -7
- package/lib/renderers/react/react.d.ts.map +1 -1
- package/lib/renderers/react/react.js +2 -2
- package/lib/renderers/react/react.js.map +1 -1
- package/package.json +2 -2
- package/src/abstract-3d.ts +33 -6
- package/src/renderers/ifc/ifc-encoding.ts +31 -7
- package/src/renderers/ifc/ifc-geometry.ts +12 -0
- package/src/renderers/ifc/ifc.test.ts +285 -101
- package/src/renderers/ifc/ifc.ts +313 -98
- package/src/renderers/react/index.ts +0 -1
- package/src/renderers/react/react-dimension.tsx +3 -3
- package/src/renderers/react/react-group.test.ts +2 -2
- package/src/renderers/react/react-group.tsx +5 -4
- package/src/renderers/react/react-material.tsx +4 -4
- package/src/renderers/react/react-relation.tsx +86 -0
- package/src/renderers/react/react-scene.tsx +9 -21
- package/src/renderers/react/react.tsx +11 -14
- package/lib/renderers/react/react-hotspot.d.ts +0 -27
- package/lib/renderers/react/react-hotspot.d.ts.map +0 -1
- package/lib/renderers/react/react-hotspot.js +0 -37
- package/lib/renderers/react/react-hotspot.js.map +0 -1
- package/src/renderers/react/react-hotspot.tsx +0 -112
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-group.js","sourceRoot":"","sources":["../../../src/renderers/react/react-group.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;AAEtE,SAAS,cAAc,CAAC,EACtB,CAAC,EACD,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"react-group.js","sourceRoot":"","sources":["../../../src/renderers/react/react-group.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,14 @@ import { type MaterialParameters } from "three";
|
|
|
3
3
|
import type { Material } from "../../abstract-3d.js";
|
|
4
4
|
export type MaterialState = "Accept" | "Error" | "Warning";
|
|
5
5
|
export declare const ERROR_IMG_KEY = "error";
|
|
6
|
-
export declare function ReactMaterial({ material, selected, hovered, disabled, materialState, isText,
|
|
6
|
+
export declare function ReactMaterial({ material, selected, hovered, disabled, materialState, isText, isRelation, drawBackOnly, }: {
|
|
7
7
|
readonly material: Material;
|
|
8
8
|
readonly hovered?: boolean | undefined;
|
|
9
9
|
readonly selected?: boolean;
|
|
10
10
|
readonly disabled?: boolean;
|
|
11
11
|
readonly materialState?: MaterialState | undefined;
|
|
12
12
|
readonly isText: boolean;
|
|
13
|
-
readonly
|
|
13
|
+
readonly isRelation?: boolean;
|
|
14
14
|
readonly drawBackOnly?: boolean;
|
|
15
15
|
}): React.JSX.Element;
|
|
16
16
|
export declare const materialDefaults: MaterialParameters;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-material.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-material.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAC3D,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"react-material.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-material.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAmC,KAAK,kBAAkB,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKrD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAC3D,eAAO,MAAM,aAAa,UAAU,CAAC;AAErC,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EACN,UAAU,EACV,YAAY,GACb,EAAE;IACD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA6CpB;AAED,eAAO,MAAM,gBAAgB,EAAE,kBAK9B,CAAC;AAGF,eAAO,MAAM,SAAS,EAAE,QAAqF,CAAC;AAK9G,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAE9I"}
|
|
@@ -4,14 +4,14 @@ import { BackSide, DoubleSide, FrontSide } from "three";
|
|
|
4
4
|
import { shade } from "../../utils.js";
|
|
5
5
|
const decreasedOpacity = 0.125;
|
|
6
6
|
export const ERROR_IMG_KEY = "error";
|
|
7
|
-
export function ReactMaterial({ material, selected, hovered, disabled, materialState, isText,
|
|
7
|
+
export function ReactMaterial({ material, selected, hovered, disabled, materialState, isText, isRelation, drawBackOnly, }) {
|
|
8
8
|
const mat = !materialState ? material : materialState === "Accept" ? acceptMat : materialState === "Error" ? errorMar : warningMat;
|
|
9
9
|
const opacity = material.opacity ?? materialDefaults.opacity;
|
|
10
10
|
if (isText) {
|
|
11
11
|
return (_jsx("meshBasicMaterial", { color: getColor(selected, hovered, mat, textSelectMat), side: FrontSide, transparent: true, ...(opacity < 1 ? { opacity } : materialDefaults) }, `mesh_material_text`));
|
|
12
12
|
}
|
|
13
|
-
if (
|
|
14
|
-
return (_jsx("meshBasicMaterial", { color: getColor(selected, hovered, mat, selectMat), side: drawBackOnly === true ? BackSide : DoubleSide, depthTest: true, depthWrite: true, transparent: false, opacity: 1.0 }, "
|
|
13
|
+
if (isRelation) {
|
|
14
|
+
return (_jsx("meshBasicMaterial", { color: getColor(selected, hovered, mat, selectMat), side: drawBackOnly === true ? BackSide : DoubleSide, depthTest: true, depthWrite: true, transparent: false, opacity: 1.0 }, "mesh_material_relation"));
|
|
15
15
|
}
|
|
16
16
|
return (_jsx("meshStandardMaterial", { color: getColor(selected, hovered, mat, selectMat), roughness: mat.roughness, metalness: mat.metalness, side: material.backfaceCulling ? FrontSide : DoubleSide, ...(opacity < 1 || disabled
|
|
17
17
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-material.js","sourceRoot":"","sources":["../../../src/renderers/react/react-material.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAA2B,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAG/B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC;AAErC,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"react-material.js","sourceRoot":"","sources":["../../../src/renderers/react/react-material.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ThreeEvent } from "@react-three/fiber";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import type { Relation } from "../../abstract-3d.js";
|
|
4
|
+
/** The shape of each active relation, e.g. where a component can be inserted on an air relation, clickable and darker when hovered */
|
|
5
|
+
export declare const ReactRelations: React.MemoExoticComponent<({ relations, activeRelations, onClickRelation, }: {
|
|
6
|
+
readonly relations: ReadonlyArray<Relation> | undefined;
|
|
7
|
+
readonly activeRelations: ReadonlyArray<string> | undefined;
|
|
8
|
+
readonly onClickRelation?: (relation: Relation, e: ThreeEvent<MouseEvent>) => void;
|
|
9
|
+
}) => React.JSX.Element>;
|
|
10
|
+
//# sourceMappingURL=react-relation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-relation.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-relation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAS,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAO5D,sIAAsI;AACtI,eAAO,MAAM,cAAc,+EAKtB;IACD,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC5D,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;CACpF,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAStB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { vec3Scale } from "../../abstract-3d.js";
|
|
4
|
+
import { ReactMaterial } from "./react-material.js";
|
|
5
|
+
import { ReactMesh } from "./react-mesh.js";
|
|
6
|
+
const outlineMat = { normal: "rgb(0, 0, 0)", opacity: 1.0 };
|
|
7
|
+
/** The shape of each active relation, e.g. where a component can be inserted on an air relation, clickable and darker when hovered */
|
|
8
|
+
export const ReactRelations = React.memo(({ relations, activeRelations, onClickRelation, }) => (_jsx(_Fragment, { children: relations
|
|
9
|
+
?.filter((r) => activeRelations?.includes(r.id))
|
|
10
|
+
.map((r) => (_jsx(ReactRelation, { relation: r, onClickRelation: onClickRelation }, r.id))) })));
|
|
11
|
+
function ReactRelation({ relation, onClickRelation, }) {
|
|
12
|
+
const [hovered, setHovered] = React.useState(false);
|
|
13
|
+
return (_jsx("group", { onClick: (e) => {
|
|
14
|
+
if (onClickRelation) {
|
|
15
|
+
e.stopPropagation();
|
|
16
|
+
onClickRelation(relation, e);
|
|
17
|
+
}
|
|
18
|
+
}, onPointerOver: (e) => {
|
|
19
|
+
e.stopPropagation();
|
|
20
|
+
document.body.style.cursor = "pointer";
|
|
21
|
+
setHovered(true);
|
|
22
|
+
}, onPointerOut: () => {
|
|
23
|
+
document.body.style.cursor = "auto";
|
|
24
|
+
setHovered(false);
|
|
25
|
+
}, onContextMenu: (e) => e.stopPropagation(), children: relation.groups?.map((g, i) => (_jsx(ReactRelationGroup, { g: g, hovered: hovered }, i))) }));
|
|
26
|
+
}
|
|
27
|
+
/** A group of a relation's shape, unlit, with a black outline around its boxes */
|
|
28
|
+
function ReactRelationGroup({ g, hovered }) {
|
|
29
|
+
return (_jsxs("group", { position: [g.pos.x, g.pos.y, g.pos.z], rotation: [g.rot?.x ?? 0, g.rot?.y ?? 0, g.rot?.z ?? 0], children: [g.meshes?.map((m, i) => (_jsxs(React.Fragment, { children: [_jsx(ReactMesh, { mesh: m, children: _jsx(ReactMaterial, { isText: false, isRelation: true, material: m.material, hovered: hovered }) }), m.geometry.type === "Box" && (_jsx(ReactMesh, { mesh: { ...m, geometry: { ...m.geometry, size: vec3Scale(m.geometry.size, 1.0125) } }, children: _jsx(ReactMaterial, { isText: false, isRelation: true, drawBackOnly: true, material: outlineMat, hovered: hovered }) }))] }, i))), g.groups?.map((c, i) => (_jsx(ReactRelationGroup, { g: c, hovered: hovered }, i)))] }));
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=react-relation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-relation.js","sourceRoot":"","sources":["../../../src/renderers/react/react-relation.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import type { ThreeEvent } from "@react-three/fiber";
|
|
2
2
|
import React from "react";
|
|
3
|
-
import type { Scene, Group } from "../../abstract-3d.js";
|
|
4
|
-
import type { HotSpotInfo } from "./react-hotspot.js";
|
|
3
|
+
import type { Scene, Group, Relation } from "../../abstract-3d.js";
|
|
5
4
|
import type { MaterialState } from "./react-material.js";
|
|
6
5
|
import type { ReactPopover } from "./react-types.js";
|
|
7
6
|
export type SceneMouseEvent = ThreeEvent<MouseEvent>;
|
|
8
|
-
export declare function ReactScene({ scene, selectedIds, hoveredIdsExternal,
|
|
7
|
+
export declare function ReactScene({ scene, selectedIds, hoveredIdsExternal, activeRelations, activeComponents, showDimensions, useAlphaTest, materialStateImages, reactPopovers, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, }: {
|
|
9
8
|
readonly scene: Scene;
|
|
10
9
|
readonly selectedIds: Record<string, boolean> | undefined;
|
|
11
10
|
readonly hoveredIdsExternal: ReadonlyArray<string> | undefined;
|
|
12
|
-
readonly
|
|
11
|
+
readonly activeRelations: ReadonlyArray<string> | undefined;
|
|
13
12
|
readonly activeComponents: Record<string, MaterialState> | undefined;
|
|
14
|
-
readonly showHotSpotTexts: boolean;
|
|
15
13
|
readonly showDimensions: boolean;
|
|
16
14
|
readonly useAlphaTest?: boolean;
|
|
17
|
-
readonly hotSpotTexts?: Record<string, string>;
|
|
18
15
|
readonly materialStateImages?: Record<string, string>;
|
|
19
16
|
readonly reactPopovers?: ReadonlyArray<ReactPopover>;
|
|
20
17
|
readonly onClickGroup?: (id: string | undefined, rootData: Record<string, string> | undefined, data: Record<string, string> | undefined, e: SceneMouseEvent) => void;
|
|
21
18
|
readonly onHoverGroup?: (id: string | undefined, rootData: Record<string, string> | undefined, data: Record<string, string> | undefined, e: SceneMouseEvent) => void;
|
|
22
19
|
readonly onContextMenuGroup?: (id: string, rootData: Record<string, string> | undefined, data: Record<string, string> | undefined, left: number, top: number, e: SceneMouseEvent) => void;
|
|
23
20
|
readonly getTooltips?: (id: string) => ReadonlyArray<ReactPopover>;
|
|
24
|
-
readonly
|
|
21
|
+
readonly onClickRelation?: (relation: Relation, e: SceneMouseEvent) => void;
|
|
25
22
|
readonly createGroupKey?: (g: Group, idx: number, rootData: Record<string, string> | undefined, id: string) => string;
|
|
26
23
|
readonly createGroupId?: (g: Group) => string;
|
|
27
24
|
}): React.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-scene.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-scene.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"react-scene.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react-scene.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import { Html } from "@react-three/drei";
|
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { ReactDimensions } from "./react-dimension.js";
|
|
5
5
|
import { ReactGroup } from "./react-group.js";
|
|
6
|
-
import {
|
|
7
|
-
export function ReactScene({ scene, selectedIds, hoveredIdsExternal,
|
|
6
|
+
import { ReactRelations } from "./react-relation.js";
|
|
7
|
+
export function ReactScene({ scene, selectedIds, hoveredIdsExternal, activeRelations, activeComponents, showDimensions, useAlphaTest, materialStateImages, reactPopovers, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, }) {
|
|
8
8
|
return (_jsxs("group", { rotation: [scene.rotation_deprecated?.x ?? 0, scene.rotation_deprecated?.y ?? 0, scene.rotation_deprecated?.z ?? 0], position: [-(scene.center_deprecated?.x ?? 0), -(scene.center_deprecated?.y ?? 0), -(scene.center_deprecated?.z ?? 0)], children: [scene.groups.map((g, i) => {
|
|
9
9
|
const id = createGroupId ? createGroupId(g) : "";
|
|
10
|
-
return (_jsx(ReactGroup, { g: g, selectedIds: selectedIds,
|
|
11
|
-
}), _jsx(ReactDimensions, { dimensions: scene.dimensions_deprecated, showDimensions: showDimensions, sceneRotation: scene.rotation_deprecated, sceneCenter: scene.center_deprecated, selectedIds: selectedIds,
|
|
10
|
+
return (_jsx(ReactGroup, { g: g, selectedIds: selectedIds, relationsActive: activeRelations !== undefined, activeComponents: activeComponents, materialStateImages: materialStateImages, hoveredIdsExternal: hoveredIdsExternal, onClickGroup: onClickGroup, onHoverGroup: onHoverGroup, onContextMenuGroup: onContextMenuGroup, getTooltips: getTooltips, createGroupKey: createGroupKey, id: id, useAlphaTest: useAlphaTest, rootData: g.data }, createGroupKey ? createGroupKey(g, 0, g.data, id) : i));
|
|
11
|
+
}), _jsx(ReactDimensions, { dimensions: scene.dimensions_deprecated, showDimensions: showDimensions, sceneRotation: scene.rotation_deprecated, sceneCenter: scene.center_deprecated, selectedIds: selectedIds, relationsActive: activeRelations !== undefined, onClickGroup: onClickGroup, onHoverGroup: onHoverGroup, onContextMenuGroup: onContextMenuGroup }), _jsx(ReactRelations, { relations: scene.relations, activeRelations: activeRelations, onClickRelation: onClickRelation }), reactPopovers?.map((p) => (_jsx(Html, { position: [p.pos.x, p.pos.y, p.pos.z], center: true, pointerEvents: "none", style: { pointerEvents: "none" }, children: p.content }, p.id)))] }));
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=react-scene.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-scene.js","sourceRoot":"","sources":["../../../src/renderers/react/react-scene.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"react-scene.js","sourceRoot":"","sources":["../../../src/renderers/react/react-scene.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { type OrbitControlsProps } from "@react-three/drei";
|
|
2
2
|
import { type CanvasProps, type ThreeEvent } from "@react-three/fiber";
|
|
3
3
|
import React from "react";
|
|
4
|
-
import type { Scene, View, Group } from "../../abstract-3d.js";
|
|
4
|
+
import type { Scene, View, Group, Relation } from "../../abstract-3d.js";
|
|
5
5
|
import type { ControlsHelper, Camera, BufferZones } from "./react-camera.js";
|
|
6
|
-
import type { HotSpotInfo } from "./react-hotspot.js";
|
|
7
6
|
import type { MaterialState } from "./react-material.js";
|
|
8
7
|
import type { ReactPopover } from "./react-types.js";
|
|
9
8
|
type ReactProps = {
|
|
10
9
|
readonly scene: Scene | undefined;
|
|
11
10
|
readonly selectedIds: Record<string, boolean> | undefined;
|
|
12
|
-
|
|
11
|
+
/**
|
|
12
|
+
* The ids of the relations whose shape is drawn to be clicked, e.g. where a component can be inserted. While defined, even when empty, only the
|
|
13
|
+
* groups whose material state is Accept can be clicked
|
|
14
|
+
*/
|
|
15
|
+
readonly activeRelations?: ReadonlyArray<string> | undefined;
|
|
13
16
|
readonly activeComponents?: Record<string, MaterialState> | undefined;
|
|
14
17
|
readonly hoveredIdsExternal?: ReadonlyArray<string> | undefined;
|
|
15
|
-
readonly showHotSpotTexts?: boolean;
|
|
16
18
|
readonly showDimensions?: boolean;
|
|
17
|
-
readonly hotSpotTexts?: Record<string, string>;
|
|
18
19
|
readonly popovers?: ReadonlyArray<ReactPopover>;
|
|
19
20
|
readonly useAnimations?: boolean;
|
|
20
21
|
readonly camera?: Camera;
|
|
@@ -32,10 +33,10 @@ type ReactProps = {
|
|
|
32
33
|
readonly onHoverGroup?: (id: string | undefined, rootData: Record<string, string> | undefined, data: Record<string, string> | undefined, e: ThreeEvent<MouseEvent>) => void;
|
|
33
34
|
readonly onContextMenuGroup?: (id: string, rootData: Record<string, string> | undefined, data: Record<string, string> | undefined, left: number, top: number, e: ThreeEvent<MouseEvent>) => void;
|
|
34
35
|
readonly getTooltips?: (id: string) => ReadonlyArray<ReactPopover>;
|
|
35
|
-
readonly
|
|
36
|
+
readonly onClickRelation?: (relation: Relation, e: ThreeEvent<MouseEvent>) => void;
|
|
36
37
|
readonly createGroupKey?: (g: Group, idx: number, rootData: Record<string, string> | undefined, id: string) => string;
|
|
37
38
|
readonly createGroupId?: (g: Group) => string;
|
|
38
39
|
};
|
|
39
|
-
export declare const render: React.MemoExoticComponent<({ scene, selectedIds, useOldMode,
|
|
40
|
+
export declare const render: React.MemoExoticComponent<({ scene, selectedIds, useOldMode, activeRelations, activeComponents, hoveredIdsExternal, popovers: reactPopovers, showDimensions, useAnimations, camera, view, controlsHelper, canvasProps, orbitContolsProps, materialStateImages, sceneFallback, useAlphaTest, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, bufferZones, fitPadding, }: ReactProps) => React.JSX.Element>;
|
|
40
41
|
export {};
|
|
41
42
|
//# sourceMappingURL=react.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAU,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAU,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE/E,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/E,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,YAAY,CAAC,EAAE,CACtB,EAAE,EAAE,MAAM,GAAG,SAAS,EACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EACxC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KACtB,IAAI,CAAC;IACV,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,aAAa,CAAC,YAAY,CAAC,CAAC;IACnE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IACnF,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACtH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,MAAM,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,MAAM,uaA4Bd,UAAU,KAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAuFlC,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { EffectComposer, N8AO } from "@react-three/postprocessing";
|
|
|
5
5
|
import React, { memo, useMemo } from "react";
|
|
6
6
|
import { ReactCamera } from "./react-camera.js";
|
|
7
7
|
import { ReactScene } from "./react-scene.js";
|
|
8
|
-
export const render = memo(({ scene, selectedIds, useOldMode,
|
|
8
|
+
export const render = memo(({ scene, selectedIds, useOldMode, activeRelations, activeComponents, hoveredIdsExternal, popovers: reactPopovers, showDimensions = true, useAnimations = false, camera = { type: "Perspective" }, view = "front", controlsHelper, canvasProps, orbitContolsProps, materialStateImages, sceneFallback, useAlphaTest = true, onClickGroup, onHoverGroup, onContextMenuGroup, getTooltips, onClickRelation, createGroupKey, createGroupId, bufferZones, fitPadding, }) => {
|
|
9
9
|
const intensity = useOldMode ? 2 : 0.4;
|
|
10
10
|
const suspenseFallback = useMemo(() => _jsx(Html, { center: true, children: sceneFallback ?? _jsx(_Fragment, {}) }), [sceneFallback]);
|
|
11
11
|
return scene ? (_jsx(Canvas, { dpr: [1, window.devicePixelRatio], frameloop: "demand", ...canvasProps, children: _jsxs(React.Suspense, { fallback: suspenseFallback, children: [_jsx(ReactCamera, { bufferZones: bufferZones, fitPadding: fitPadding, scene: scene, useAnimations: useAnimations, camera: camera, view: view, controlsHelper: controlsHelper, orbitContolsProps: orbitContolsProps }), _jsx("ambientLight", { intensity: 3.5 }), _jsx("directionalLight", { position: [
|
|
@@ -28,6 +28,6 @@ export const render = memo(({ scene, selectedIds, useOldMode, activeHotSpots, ac
|
|
|
28
28
|
-(scene.center_deprecated?.x ?? 0) + 1.5 * scene.size_deprecated.x,
|
|
29
29
|
-(scene.center_deprecated?.y ?? 0),
|
|
30
30
|
-(scene.center_deprecated?.z ?? 0),
|
|
31
|
-
], intensity: 0.4 }), _jsx(ReactScene, { scene: scene, selectedIds: selectedIds,
|
|
31
|
+
], intensity: 0.4 }), _jsx(ReactScene, { scene: scene, selectedIds: selectedIds, activeRelations: activeRelations, activeComponents: activeComponents, showDimensions: showDimensions, hoveredIdsExternal: hoveredIdsExternal, reactPopovers: reactPopovers, materialStateImages: materialStateImages, onClickGroup: onClickGroup, onHoverGroup: onHoverGroup, onContextMenuGroup: onContextMenuGroup, getTooltips: getTooltips, onClickRelation: onClickRelation, createGroupKey: createGroupKey, createGroupId: createGroupId, useAlphaTest: useAlphaTest }), !useOldMode && (_jsx(EffectComposer, { multisampling: 8, children: _jsx(N8AO, { aoRadius: 40, denoiseSamples: 4, distanceFalloff: 0.2, intensity: 2, screenSpaceRadius: true, halfRes: true }) }))] }) })) : ((sceneFallback ?? _jsx(_Fragment, {})));
|
|
32
32
|
});
|
|
33
33
|
//# sourceMappingURL=react.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAA2B,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,MAAM,EAAqC,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/renderers/react/react.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "abstract-3d",
|
|
3
|
-
"version": "
|
|
4
|
-
"gitHead": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"gitHead": "8576d3983c981dddddc9ed676441e03fd92b6bd6",
|
|
5
5
|
"description": "Abstract 3D",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"author": "Divid AB <info@divid.se>",
|
package/src/abstract-3d.ts
CHANGED
|
@@ -4,13 +4,13 @@ import type { AbstractImage } from "abstract-image";
|
|
|
4
4
|
export type Scene = {
|
|
5
5
|
readonly size_deprecated: Vec3; //move size calculation to every renderer??
|
|
6
6
|
readonly groups: ReadonlyArray<Group>;
|
|
7
|
+
readonly relations?: ReadonlyArray<Relation>;
|
|
7
8
|
readonly data?: Record<string, string>;
|
|
8
9
|
//should be removed
|
|
9
10
|
readonly center_deprecated?: Vec3;
|
|
10
11
|
readonly rotation_deprecated?: Vec3;
|
|
11
12
|
//might be removed
|
|
12
13
|
readonly dimensions_deprecated?: Dimensions;
|
|
13
|
-
readonly hotSpots_deprecated?: ReadonlyArray<HotSpot>;
|
|
14
14
|
};
|
|
15
15
|
//dummy
|
|
16
16
|
export type Renderer = "react" | "ai_schematic" | "ai_detailed" | "dxf";
|
|
@@ -67,20 +67,47 @@ export type DimensionBounds = {
|
|
|
67
67
|
readonly threeD: Bounds3;
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
export type HotSpot = {
|
|
71
|
-
readonly id: string;
|
|
72
|
-
readonly mesh: Mesh;
|
|
73
|
-
};
|
|
74
|
-
|
|
75
70
|
export type Group = {
|
|
76
71
|
readonly pos: Vec3;
|
|
77
72
|
readonly rot?: Vec3;
|
|
78
73
|
readonly groups?: ReadonlyArray<Group>;
|
|
79
74
|
readonly meshes?: ReadonlyArray<Mesh>;
|
|
75
|
+
/**
|
|
76
|
+
* Identifies what the group is, e.g. for the relations and as the IFC GlobalId. Sibling groups with the same id are parts of the same thing, e.g.
|
|
77
|
+
* something in several places, and one IFC element
|
|
78
|
+
*/
|
|
79
|
+
readonly id?: string;
|
|
80
|
+
readonly name?: string;
|
|
81
|
+
/** What the group is beyond its name, e.g. the IFC element's Description */
|
|
82
|
+
readonly description?: string;
|
|
83
|
+
/** The layer of the group's meshes and of the groups below it that don't have their own */
|
|
84
|
+
readonly layer?: string;
|
|
85
|
+
/** The application's own data, not read by the renderers */
|
|
80
86
|
readonly data?: Record<string, string>;
|
|
81
87
|
readonly animation?: Animation;
|
|
82
88
|
};
|
|
83
89
|
|
|
90
|
+
/**
|
|
91
|
+
* A connection between two groups, e.g. where air flows from one section of a unit to the next, or a connection with one end, where something outside
|
|
92
|
+
* the scene connects to a group. `pos` and `rot` are in the scene's coordinates like the top-level groups, and the relation's local x points along
|
|
93
|
+
* the flow from `from` to `to`
|
|
94
|
+
*/
|
|
95
|
+
export type Relation = {
|
|
96
|
+
readonly id: string;
|
|
97
|
+
/** The `id` of the group the flow comes from, none when it comes from outside the scene */
|
|
98
|
+
readonly from?: string;
|
|
99
|
+
/** The `id` of the group the flow goes to, none when it goes outside the scene */
|
|
100
|
+
readonly to?: string;
|
|
101
|
+
readonly name?: string;
|
|
102
|
+
readonly pos: Vec3;
|
|
103
|
+
readonly rot?: Vec3;
|
|
104
|
+
/**
|
|
105
|
+
* The relation's own shape, in the scene's coordinates like the top-level groups, e.g. merged into its IFC port's shape, or what the react renderer
|
|
106
|
+
* draws to be clicked when the relation is active
|
|
107
|
+
*/
|
|
108
|
+
readonly groups?: ReadonlyArray<Group>;
|
|
109
|
+
};
|
|
110
|
+
|
|
84
111
|
export type Mesh = {
|
|
85
112
|
readonly material: Material;
|
|
86
113
|
readonly geometry: Cylinder | Cone | Box | Line | CulledLine | Text | Polygon | Plane | Tube | Sphere | Shape | ImageMesh;
|
|
@@ -65,13 +65,37 @@ function compressGuid(bytes: ReadonlyArray<number>): string {
|
|
|
65
65
|
return guid;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
/**
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
/**
|
|
69
|
+
* IFC GlobalId derived from `id` so re-exports keep the same ids, from a uuid's own bytes and from a hash of any other id. Random without an id or
|
|
70
|
+
* when the id's GlobalId is already used in the file
|
|
71
|
+
*/
|
|
72
|
+
export function guid(m: MutableIfc, id?: string): string {
|
|
73
|
+
const hex = id !== undefined && UUID_REGEX.test(id) ? id.replaceAll("-", "") : undefined;
|
|
74
|
+
const bytes = hex ? Array.from({ length: 16 }, (_, i) => parseInt(hex.slice(i * 2, i * 2 + 2), 16)) : id === undefined ? undefined : hash128(id);
|
|
75
|
+
const fromId = bytes && compressGuid(bytes);
|
|
76
|
+
const globalId = fromId && !m.usedGuids.has(fromId) ? fromId : compressGuid(Array.from(crypto.getRandomValues(new Uint8Array(16))));
|
|
77
|
+
m.usedGuids.add(globalId);
|
|
78
|
+
return globalId;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** The 16 bytes of cyrb128, a fast non-cryptographic hash */
|
|
82
|
+
function hash128(s: string): ReadonlyArray<number> {
|
|
83
|
+
// oxlint-disable no-bitwise
|
|
84
|
+
let [h1, h2, h3, h4] = [1779033703, 3144134277, 1013904242, 2773480762];
|
|
85
|
+
for (let i = 0; i < s.length; i++) {
|
|
86
|
+
const k = s.charCodeAt(i);
|
|
87
|
+
h1 = h2 ^ Math.imul(h1 ^ k, 597399067);
|
|
88
|
+
h2 = h3 ^ Math.imul(h2 ^ k, 2869860233);
|
|
89
|
+
h3 = h4 ^ Math.imul(h3 ^ k, 951274213);
|
|
90
|
+
h4 = h1 ^ Math.imul(h4 ^ k, 2716044179);
|
|
91
|
+
}
|
|
92
|
+
h1 = Math.imul(h3 ^ (h1 >>> 18), 597399067);
|
|
93
|
+
h2 = Math.imul(h4 ^ (h2 >>> 22), 2869860233);
|
|
94
|
+
h3 = Math.imul(h1 ^ (h3 >>> 17), 951274213);
|
|
95
|
+
h4 = Math.imul(h2 ^ (h4 >>> 19), 2716044179);
|
|
96
|
+
h1 ^= h2 ^ h3 ^ h4;
|
|
97
|
+
return [h1, h2 ^ h1, h3 ^ h1, h4 ^ h1].flatMap((h) => [(h >>> 24) & 255, (h >>> 16) & 255, (h >>> 8) & 255, h & 255]);
|
|
98
|
+
// oxlint-enable no-bitwise
|
|
75
99
|
}
|
|
76
100
|
|
|
77
101
|
/** FILE_NAME header fields, `originatingSystem` is the application that produced the scene */
|
|
@@ -29,9 +29,21 @@ export type Triangulation = {
|
|
|
29
29
|
readonly triangles: ReadonlyArray<readonly [number, number, number]>;
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
/** Encoded IFC coordinates of a line's start and end */
|
|
33
|
+
export type Polyline = readonly [string, string];
|
|
34
|
+
|
|
32
35
|
/** Abstract 3D is Y-up like three.js, IFC is Z-up */
|
|
33
36
|
export const toIfc = (v: Vec3): Vec3 => vec3(v.x, -v.z, v.y);
|
|
34
37
|
|
|
38
|
+
/** The line's start and end in the coordinate system where its parent group is at parentPos/parentRot, undefined for geometries that aren't lines */
|
|
39
|
+
export function polyline(geometry: Mesh["geometry"], parentPos = vec3Zero, parentRot = vec3Zero): Polyline | undefined {
|
|
40
|
+
if (geometry.type !== "Line" && geometry.type !== "CulledLine") {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const ifcPoint = (p: Vec3): string => point(toIfc(vec3TransRot(p, parentPos, parentRot)));
|
|
44
|
+
return [ifcPoint(geometry.start), ifcPoint(geometry.end)];
|
|
45
|
+
}
|
|
46
|
+
|
|
35
47
|
/**
|
|
36
48
|
* Triangulates the mesh in the coordinate system where its parent group is at parentPos/parentRot, undefined for geometries without a solid surface
|
|
37
49
|
* (lines, text, images)
|