import { HighlightLayer, StandardMaterial, SceneLoader, Vector3, Color3, Space, GizmoManager, UtilityLayerRenderer, type Scene, MeshBuilder, CreatePlane, RotationGizmo, InstancedMesh, Mesh } from "@babylonjs/core";
import { objectToString } from "@vue/shared";
interface Ile {
id: number | string;
object?: Mesh;
}
const iles: Ile[] = [];
function ileLoad( position: Vector3, rotation: number, scene: Scene){
const highlightLayer = new HighlightLayer("highlight", scene);
const plane: any = MeshBuilder.CreatePlane('select',{size: 1, width: 0.5, height: 2.5, sideOrientation: 2});
highlightLayer.addMesh(plane, Color3.Green());
let mat1 = new StandardMaterial("mat1", scene);
mat1.alpha = 0;
plane.material = mat1;
plane.rotation.x = Math.PI/2;
plane.rotate(new Vector3(1, 1, 1), rotation * Math.PI, Space.WORLD);
plane.translate(position, 1, Space.WORLD);
iles.push(
{ id: 1,
object: plane.createInstance(`plane${1}`),
},
{ id: 2,
object: plane.createInstance(`plane${2}`),
},
{ id: 3,
object: plane.createInstance(`plane${3}`),
},
{ id: 4,
object: plane.createInstance(`plane${4}`),
},
{ id: 5,
object: plane.createInstance(`plane${5}`),
},
)
iles[0].object?.translate(new Vector3(0.64, 0, 0), 1, Space.WORLD);
iles[1].object?.translate(new Vector3(1.28, 0, 0), 1, Space.WORLD);
iles[2].object?.translate(new Vector3(1.88, 0, 0), 1, Space.WORLD);
iles[3].object?.translate(new Vector3(2.5, 0, 0), 1, Space.WORLD);
iles[4].object?.translate(new Vector3(3.15, 0, 0), 1, Space.WORLD);
ileSelect(1, iles, scene);
return iles;
}
function ileSelect( index: number, Selectors: Ile[], scene: Scene){
Selectors.forEach((Selector)=>{
Selector.object?.setEnabled(false);
})
Selectors[index].object?.setEnabled(true);
}
export { ileSelect, ileLoad };