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

function addLineToScene(
    start: Types.Vector3,
    end: Types.Vector3,
    colour: Types.Color,
    userData: Types.UserData,
    floorPlanGroupLine: Types.RefGroup
): void {

    //////////  A function that creates and adds lines based on the start, end, and colour from the params, Also adds the userData in the mesh userData  //////////

    const path = new THREE.CatmullRomCurve3([start, end]);
    const geometry = new THREE.TubeGeometry(path, CONSTANTS.lineConfig.tubularSegments, CONSTANTS.lineConfig.radius, CONSTANTS.lineConfig.radialSegments, false);
    const material = new THREE.MeshBasicMaterial({ color: colour });
    const mesh = new THREE.Mesh(geometry, material);
    floorPlanGroupLine.current.add(mesh);

    mesh.userData.linePoints = userData;
}

export default addLineToScene;
