import type { RobotState } from "$lib/types/robot"; import type { RobotUrdfConfig } from "$lib/types/urdf"; import { UrdfParser } from "./utils/UrdfParser"; export async function createRobot(urdfConfig: RobotUrdfConfig): Promise { const customParser = new UrdfParser(urdfConfig.urdfUrl, "/robots/so-100/"); const urdfData = await customParser.load(); const robot = customParser.fromString(urdfData); // Make the robot data reactive so mutations to joint.rotation trigger reactivity const reactiveRobot = $state(robot); // Make the selection state reactive as well const reactiveSelection = $state({ isSelected: false, selectedLink: undefined, selectedJoint: undefined }); const robotState: RobotState = { robot: reactiveRobot, urdfConfig: urdfConfig, selection: reactiveSelection }; return robotState; }