43 lines
1.7 KiB
TypeScript
43 lines
1.7 KiB
TypeScript
import * as THREE from 'three';
|
|
|
|
import * as Types from "../../../../types/world/worldTypes";
|
|
|
|
function updateDistanceText(
|
|
scene: THREE.Scene,
|
|
floorPlanGroupLine: Types.RefGroup,
|
|
affectedLines: Types.NumberArray
|
|
): void {
|
|
|
|
////////// Updating the Distance Texts of the lines that are affected during drag //////////
|
|
|
|
const DistanceGroup = scene.children.find((child) => child.name === "Distance_Text") as THREE.Group;
|
|
|
|
affectedLines.forEach((lineIndex) => {
|
|
const mesh = floorPlanGroupLine.current.children[lineIndex] as THREE.Mesh;
|
|
const linePoints = mesh.userData.linePoints;
|
|
|
|
if (linePoints) {
|
|
const distance = linePoints[0][0].distanceTo(linePoints[1][0]).toFixed(1);
|
|
const position = new THREE.Vector3().addVectors(linePoints[0][0], linePoints[1][0]).divideScalar(2);
|
|
|
|
if (!DistanceGroup || !linePoints) {
|
|
return
|
|
}
|
|
|
|
DistanceGroup.children.forEach((text) => {
|
|
const textMesh = text as THREE.Mesh;
|
|
if (textMesh.userData[0][1] === linePoints[0][1] && textMesh.userData[1][1] === linePoints[1][1]) {
|
|
textMesh.position.set(position.x, 1, position.z);
|
|
const className = `distance line-${textMesh.userData[0][1]}_${textMesh.userData[1][1]}_${linePoints[0][2]}`;
|
|
const element = document.getElementsByClassName(className)[0] as HTMLElement;
|
|
if (element) {
|
|
element.innerHTML = `${distance} m`;
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
export default updateDistanceText;
|