updated comparision
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import * as THREE from 'three';
|
||||
|
||||
import * as Types from "../../../../types/world/worldTypes";
|
||||
|
||||
function hideWalls(
|
||||
@@ -7,21 +6,24 @@ function hideWalls(
|
||||
scene: THREE.Scene,
|
||||
camera: THREE.Camera
|
||||
): void {
|
||||
|
||||
////////// Altering the visibility of the Walls when the world direction of the wall is facing the camera //////////
|
||||
|
||||
const v = new THREE.Vector3();
|
||||
const u = new THREE.Vector3();
|
||||
const wallNormal = new THREE.Vector3();
|
||||
const cameraToWall = new THREE.Vector3();
|
||||
const cameraDirection = new THREE.Vector3();
|
||||
|
||||
if (visibility === true) {
|
||||
for (const children of scene.children) {
|
||||
if (children.name === "Walls" && children.children[0]?.children.length > 0) {
|
||||
children.children[0].children.forEach((child: any) => {
|
||||
if (child.children[0]?.userData.WallType === "RoomWall") {
|
||||
child.children[0].getWorldDirection(v);
|
||||
camera.getWorldDirection(u);
|
||||
if (child.children[0].material) {
|
||||
child.children[0].material.visible = (2 * v.dot(u)) >= -0.5;
|
||||
const wallMesh = child.children[0];
|
||||
wallMesh.getWorldDirection(wallNormal);
|
||||
cameraToWall.copy(wallMesh.position).sub(camera.position).normalize();
|
||||
camera.getWorldDirection(cameraDirection);
|
||||
const isFacingCamera = wallNormal.dot(cameraToWall) > 0;
|
||||
const isInFrontOfCamera = cameraDirection.dot(cameraToWall) > -0.3;
|
||||
|
||||
if (wallMesh.material) {
|
||||
wallMesh.material.visible = isFacingCamera && isInFrontOfCamera;
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -31,10 +33,8 @@ function hideWalls(
|
||||
for (const children of scene.children) {
|
||||
if (children.name === "Walls" && children.children[0]?.children.length > 0) {
|
||||
children.children[0].children.forEach((child: any) => {
|
||||
if (child.children[0]?.userData.WallType === "RoomWall") {
|
||||
if (child.children[0].material) {
|
||||
child.children[0].material.visible = true;
|
||||
}
|
||||
if (child.children[0]?.userData.WallType === "RoomWall" && child.children[0].material) {
|
||||
child.children[0].material.visible = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -42,4 +42,4 @@ function hideWalls(
|
||||
}
|
||||
}
|
||||
|
||||
export default hideWalls;
|
||||
export default hideWalls;
|
||||
Reference in New Issue
Block a user