35 lines
1.4 KiB
TypeScript
35 lines
1.4 KiB
TypeScript
import * as THREE from 'three';
|
|
import * as Types from "../../../types/world/worldTypes";
|
|
|
|
function handleMeshMissed(
|
|
currentWallItem: Types.RefMesh,
|
|
setSelectedWallItem: Types.setSelectedWallItemSetState,
|
|
setSelectedItemsIndex: Types.setSelectedItemsIndexSetState
|
|
): void {
|
|
|
|
////////// If an item is selected and then clicked outside other than the selected object, this runs and removes the color of the selected object and sets setSelectedWallItem and setSelectedItemsIndex as null //////////
|
|
|
|
if (currentWallItem.current) {
|
|
currentWallItem.current.children.forEach((child) => {
|
|
if ((child as THREE.Mesh).isMesh && child.name !== "CSG_REF") {
|
|
const material = (child as THREE.Mesh).material;
|
|
|
|
if (Array.isArray(material)) {
|
|
material.forEach(mat => {
|
|
if (mat instanceof THREE.MeshStandardMaterial) {
|
|
mat.emissive = new THREE.Color("black");
|
|
}
|
|
});
|
|
} else if (material instanceof THREE.MeshStandardMaterial) {
|
|
material.emissive = new THREE.Color("black");
|
|
}
|
|
}
|
|
});
|
|
currentWallItem.current = null;
|
|
setSelectedWallItem(null);
|
|
setSelectedItemsIndex(null);
|
|
}
|
|
}
|
|
|
|
export default handleMeshMissed;
|