import * as THREE from 'three';
import * as CONSTANTS from '../../../../types/world/worldConstants';
import * as Types from "../../../../types/world/worldTypes";

function addRoofToScene(
    shape: Types.Shape,
    floor: Types.Number,
    userData: Types.UserData,
    floorGroup: Types.RefGroup
): void {

    ////////// Creating a Polygon roof from the shape of the Polygon floor  //////////

    const extrudeSettings: THREE.ExtrudeGeometryOptions = {
        depth: CONSTANTS.roofConfig.height,
        bevelEnabled: false
    };

    const geometry = new THREE.ExtrudeGeometry(shape, extrudeSettings);
    const material = new THREE.MeshStandardMaterial({ color: CONSTANTS.roofConfig.defaultColor, side: THREE.DoubleSide });
    const mesh = new THREE.Mesh(geometry, material);
    mesh.position.y = CONSTANTS.wallConfig.height + floor;
    mesh.castShadow = true;
    mesh.receiveShadow = true;
    mesh.rotateX(Math.PI / 2);
    mesh.userData.uuids = userData;
    mesh.name = `Roof_Layer_${(floor / CONSTANTS.wallConfig.height) + 1}`;

    floorGroup.current.add(mesh);
}

export default addRoofToScene;
