diff --git a/fission/src/Synthesis.tsx b/fission/src/Synthesis.tsx index b406cec7d9..f58359e3b8 100644 --- a/fission/src/Synthesis.tsx +++ b/fission/src/Synthesis.tsx @@ -61,6 +61,7 @@ import SceneOverlay from "./ui/components/SceneOverlay.tsx" import WPILibWSWorker from "@/systems/simulation/wpilib_brain/WPILibWSWorker.ts?worker" import WSViewPanel from "./ui/panels/WSViewPanel.tsx" import Lazy from "./util/Lazy.ts" +import DebugPanel from "./ui/panels/DebugPanel.tsx" import NewInputSchemeModal from "./ui/modals/configuring/theme-editor/NewInputSchemeModal.tsx" import AssignNewSchemeModal from "./ui/modals/configuring/theme-editor/AssignNewSchemeModal.tsx" @@ -223,6 +224,7 @@ const initialPanels: ReactElement[] = [ , , , + , ] export default Synthesis diff --git a/fission/src/ui/components/MainHUD.tsx b/fission/src/ui/components/MainHUD.tsx index fa7016bcc4..af55290eab 100644 --- a/fission/src/ui/components/MainHUD.tsx +++ b/fission/src/ui/components/MainHUD.tsx @@ -1,28 +1,25 @@ import React, { useEffect, useState } from "react" -import { BsCodeSquare } from "react-icons/bs" -import { FaCar, FaGear, FaMagnifyingGlass, FaPlus } from "react-icons/fa6" +import { + FaGear, + FaMagnifyingGlass, + FaPlus, + FaGamepad, + FaBasketball, + FaFileImport, + FaWrench, + FaScrewdriverWrench, +} from "react-icons/fa6" import { BiMenuAltLeft } from "react-icons/bi" -import { GrConnect, GrFormClose } from "react-icons/gr" -import { GiSteeringWheel } from "react-icons/gi" -import { HiDownload } from "react-icons/hi" -import { IoBasketball, IoBug, IoGameControllerOutline, IoPeople, IoRefresh, IoTimer } from "react-icons/io5" +import { FaXmark } from "react-icons/fa6" +import { IoPeople } from "react-icons/io5" import { useModalControlContext } from "@/ui/ModalContext" import { usePanelControlContext } from "@/ui/PanelContext" import { motion } from "framer-motion" import logo from "@/assets/autodesk_logo.png" import { ToastType, useToastContext } from "@/ui/ToastContext" -import { Random } from "@/util/Random" -import WPILibBrain from "@/systems/simulation/wpilib_brain/WPILibBrain" import APS, { APS_USER_INFO_UPDATE_EVENT } from "@/aps/APS" import { UserIcon } from "./UserIcon" -import World from "@/systems/World" -import JOLT from "@/util/loading/JoltSyncLoader" -import MirabufSceneObject from "@/mirabuf/MirabufSceneObject" import { Button } from "@mui/base/Button" -import MirabufCachingService, { MiraType } from "@/mirabuf/MirabufLoader" -import Jolt from "@barclah/jolt-physics" -import { AiOutlineDoubleRight } from "react-icons/ai" -import PreferencesSystem from "@/systems/preferences/PreferencesSystem" type ButtonProps = { value: string @@ -90,7 +87,7 @@ const MainHUD: React.FC = () => { onClick={() => setIsOpen(false)} className={`bg-none border-none focus-visible:outline-0 focus:outline-0 select-none`} > - + {
} + icon={} onClick={() => openModal("manage-assemblies")} /> } onClick={() => openModal("settings")} /> } onClick={() => openModal("view")} /> - } - onClick={() => openModal("change-inputs")} - /> - } onClick={() => openPanel("multibot")} /> + } onClick={() => openModal("change-inputs")} /> } + icon={} onClick={() => openModal("import-local-mirabuf")} /> - } - onClick={() => openPanel("poker")} - /> - } onClick={TestGodMode} /> - } - onClick={() => PreferencesSystem.clearPreferences()} - /> - } - onClick={async () => - APS.isSignedIn() && APS.refreshAuthToken((await APS.getAuth())!.refresh_token, true) - } - /> - } - onClick={() => { - if (APS.isSignedIn()) { - APS.setExpiresAt(Date.now()) - APS.getAuthOrLogin() - } - }} - /> - } onClick={() => openPanel("ws-view")} />
- } - onClick={() => openModal("download-assets")} - /> - } onClick={() => openModal("roborio")} /> - } - onClick={() => openPanel("driver-station")} - /> - {/* MiraMap and OPFS Temp Buttons */} - } - onClick={() => { - console.log(MirabufCachingService.GetCacheMap(MiraType.ROBOT)) - console.log(MirabufCachingService.GetCacheMap(MiraType.FIELD)) - }} - /> - } - onClick={() => MirabufCachingService.RemoveAll()} - /> } + icon={} onClick={() => { openPanel("scoring-zones") }} /> - {/* } onClick={() => openModal("drivetrain")} /> */} - } - onClick={() => { - // worker?.postMessage({ command: 'connect' }); - const miraObjs = [...World.SceneRenderer.sceneObjects.entries()].filter( - x => x[1] instanceof MirabufSceneObject - ) - console.log(`Number of mirabuf scene objects: ${miraObjs.length}`) - if (miraObjs.length > 0) { - const mechanism = (miraObjs[0][1] as MirabufSceneObject).mechanism - const simLayer = World.SimulationSystem.GetSimulationLayer(mechanism) - simLayer?.SetBrain(new WPILibBrain(mechanism)) - } - }} - /> + } onClick={() => openModal("config-robot")} /> } + value={"Debug Tools"} + icon={} onClick={() => { - const type: ToastType = ["info", "warning", "error"][Math.floor(Random() * 3)] as ToastType - addToast(type, type, "This is a test toast to test the toast system") + openPanel("debug") }} /> - } onClick={() => openModal("config-robot")} />
{userInfo ? ( { ) } -async function TestGodMode() { - const robot: MirabufSceneObject = [...World.SceneRenderer.sceneObjects.entries()] - .filter(x => { - const y = x[1] instanceof MirabufSceneObject - return y - }) - .map(x => x[1])[0] as MirabufSceneObject - const rootNodeId = robot.GetRootNodeId() - if (rootNodeId == undefined) { - console.error("Robot root node not found for god mode") - return - } - const robotPosition = World.PhysicsSystem.GetBody(rootNodeId).GetPosition() - const [ghostBody, _ghostConstraint] = World.PhysicsSystem.CreateGodModeBody(rootNodeId, robotPosition as Jolt.Vec3) - - // Move ghostBody to demonstrate godMode movement - await new Promise(f => setTimeout(f, 1000)) - World.PhysicsSystem.SetBodyPosition( - ghostBody.GetID(), - new JOLT.Vec3(robotPosition.GetX(), robotPosition.GetY() + 2, robotPosition.GetZ()) - ) - await new Promise(f => setTimeout(f, 1000)) - World.PhysicsSystem.SetBodyPosition(ghostBody.GetID(), new JOLT.Vec3(2, 2, 2)) -} - export default MainHUD diff --git a/fission/src/ui/components/Toast.tsx b/fission/src/ui/components/Toast.tsx index 3918463197..04d81dda0b 100644 --- a/fission/src/ui/components/Toast.tsx +++ b/fission/src/ui/components/Toast.tsx @@ -1,6 +1,6 @@ import React, { ReactElement, useEffect } from "react" import { ToastData, useToastContext } from "@/ui/ToastContext" -import { GrFormClose } from "react-icons/gr" +import { FaXmark } from "react-icons/fa6" import { BsFillWrenchAdjustableCircleFill } from "react-icons/bs" import { AiFillWarning } from "react-icons/ai" import { BiSolidErrorCircle } from "react-icons/bi" @@ -51,7 +51,7 @@ const Toast: React.FC = ({ id, type, title, description }) => { onClick={handleClose} className="toast-close bg-[rgba(0,0,0,0)] h-min aspect-square p-0" > - +

{title}

diff --git a/fission/src/ui/components/Tooltip.tsx b/fission/src/ui/components/Tooltip.tsx index 4c8ecdbeb3..deec78f58f 100644 --- a/fission/src/ui/components/Tooltip.tsx +++ b/fission/src/ui/components/Tooltip.tsx @@ -1,5 +1,5 @@ import { TooltipControl, TooltipType } from "@/ui/TooltipContext" -import { FaInfoCircle } from "react-icons/fa" +import { FaCircleInfo } from "react-icons/fa6" import Label, { LabelSize } from "./Label" import Stack, { StackDirection } from "./Stack" @@ -12,7 +12,7 @@ const Tooltip: React.FC = ({ type, controls }) => { if (type === "controls") { return (
- + {controls?.map(c => ( = ({ modalId }) => { const isOnMainMenu = false return ( - } modalId={modalId} acceptName="Exit"> + } modalId={modalId} acceptName="Exit"> diff --git a/fission/src/ui/modals/MatchResultsModal.tsx b/fission/src/ui/modals/MatchResultsModal.tsx index 3fc1c9cf1b..cf24625bac 100644 --- a/fission/src/ui/modals/MatchResultsModal.tsx +++ b/fission/src/ui/modals/MatchResultsModal.tsx @@ -1,6 +1,6 @@ import React from "react" import Modal, { ModalPropsImpl } from "@/components/Modal" -import { GrFormClose } from "react-icons/gr" +import { FaXmark } from "react-icons/fa6" import Stack, { StackDirection } from "@/components/Stack" import Label from "@/components/Label" @@ -18,7 +18,7 @@ const MatchResultsModal: React.FC = ({ modalId }) => { return ( } + icon={} modalId={modalId} cancelName="Exit" middleName="Configure" diff --git a/fission/src/ui/modals/UpdateAvailableModal.tsx b/fission/src/ui/modals/UpdateAvailableModal.tsx index 6cbeb3cd27..2c567308c5 100644 --- a/fission/src/ui/modals/UpdateAvailableModal.tsx +++ b/fission/src/ui/modals/UpdateAvailableModal.tsx @@ -1,11 +1,11 @@ import React from "react" import Modal, { ModalPropsImpl } from "@/components/Modal" -import { GrFormClose } from "react-icons/gr" +import { FaXmark } from "react-icons/fa6" import Label from "@/components/Label" const UpdateAvailableModal: React.FC = ({ modalId }) => { return ( - } modalId={modalId} acceptName="Update"> + } modalId={modalId} acceptName="Update">