@@ -34,6 +34,27 @@ import { hasSimBrain } from "@/systems/simulation/wpilib_brain/WPILibState"
3434
3535const TUTORIALS_URL = "https://synthesis.autodesk.com/tutorials"
3636
37+ export const DragModeButton : React . FC = ( ) => {
38+ const [ enabled , setEnabled ] = useState ( World . isAlive && World . dragModeSystem . enabled )
39+
40+ useEffect ( ( ) => EventSystem . listen ( "SetDragModeEvent" , e => setEnabled ( e . enabled ) ) , [ ] )
41+
42+ const toggleDragMode = ( ) => EventSystem . dispatch ( "SetDragModeEvent" , { enabled : ! enabled } )
43+
44+ return (
45+ < TopBarButton
46+ label = { enabled ? "Disable Drag Mode" : "Drag Mode" }
47+ active = { enabled }
48+ icon = {
49+ < Box sx = { TOP_BAR_GLYPH_SX } >
50+ < SynthesisIcons . HAND />
51+ </ Box >
52+ }
53+ onClick = { toggleDragMode }
54+ />
55+ )
56+ }
57+
3758const TopBar : React . FC = ( ) => {
3859 const { openModal, openPanel, togglePanel, addToast } = useUIContext ( )
3960 const { appMode } = useStateContext ( )
@@ -47,16 +68,13 @@ const TopBar: React.FC = () => {
4768 const [ userInfo , setUserInfo ] = useState ( APS . userInfo )
4869 const [ modeHovered , setModeHovered ] = useState ( false )
4970 const [ modeMenuOpen , setModeMenuOpen ] = useState ( false )
50- const [ dragModeEnabled , setDragModeEnabled ] = useState ( World . isAlive && World . dragModeSystem . enabled )
5171 const [ touchControlsVisible , setTouchControlsVisible ] = useState ( ( ) =>
5272 PreferencesSystem . getUserPreference ( "TouchControls" )
5373 )
5474
5575 const rowRef = useRef < HTMLDivElement > ( null )
5676 const spacerRef = useRef < HTMLDivElement > ( null )
5777
58- useEffect ( ( ) => EventSystem . listen ( "SetDragModeEvent" , ( { enabled } ) => setDragModeEnabled ( enabled ) ) , [ ] )
59-
6078 useEffect (
6179 ( ) =>
6280 EventSystem . listen ( "TouchControlsVisibilityChangedEvent" , ( { visible } ) =>
@@ -196,16 +214,7 @@ const TopBar: React.FC = () => {
196214 onClick = { ( ) => EventSystem . dispatch ( "ToggleTouchControlsVisibilityEvent" ) }
197215 />
198216 ) }
199- < TopBarButton
200- label = { dragModeEnabled ? "Disable Drag Mode" : "Drag Mode" }
201- active = { dragModeEnabled }
202- icon = {
203- < Box sx = { TOP_BAR_GLYPH_SX } >
204- < SynthesisIcons . HAND />
205- </ Box >
206- }
207- onClick = { ( ) => EventSystem . dispatch ( "SetDragModeEvent" , { enabled : ! dragModeEnabled } ) }
208- />
217+ < DragModeButton />
209218 < TopBarButton
210219 label = "Configure Camera"
211220 icon = {
0 commit comments