import { useState, useRef } from "react";
import * as THREE from "three";
import PathCreation from "./path/pathCreation";
import PathConnector from "./path/pathConnector";
import useModuleStore from "../../store/useModuleStore";
import ProcessContainer from "./process/processContainer";
import Agv from "../builder/agv/agv";
import ArmBot from "./armbot/ArmBot";

function Simulation() {
  const { activeModule } = useModuleStore();
  const pathsGroupRef = useRef() as React.MutableRefObject<THREE.Group>;
  const [processes, setProcesses] = useState<any[]>([]);
  const agvRef = useRef([]);
  const MaterialRef = useRef([]);

  return (
    <>
      {activeModule === "simulation" && (
        <>
          <PathCreation pathsGroupRef={pathsGroupRef} />

          <PathConnector pathsGroupRef={pathsGroupRef} />

          <ProcessContainer
            processes={processes}
            setProcesses={setProcesses}
            agvRef={agvRef}
            MaterialRef={MaterialRef}
          />

          <Agv
            processes={processes}
            agvRef={agvRef}
            MaterialRef={MaterialRef}
          />

        </>
      )}
      <ArmBot />
    </>
  );
}

export default Simulation;
