* inital rework Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> * update the program memory as well Signed-off-by: Jess Frazelle <github@jessfraz.com> * cleanups Signed-off-by: Jess Frazelle <github@jessfraz.com> * code Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates for typing code Signed-off-by: Jess Frazelle <github@jessfraz.com> * fixing Signed-off-by: Jess Frazelle <github@jessfraz.com> * some fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> * more fixes Signed-off-by: Jess Frazelle <github@jessfraz.com> * Only unselect line or move tool on escape, don't exit sketch * Make scrollbar on toolbar smaller * Add escape to exit sketch mode * tidy up usestore * clear scene on empty file * disable sketch mode and re-execute on sketch loop close * disable all but xy plane * fix entering back into edit mode --------- Signed-off-by: Jess Frazelle <github@jessfraz.com> Co-authored-by: Frank Noirot <frank@kittycad.io> Co-authored-by: Kurt Hutten Irev-Dev <k.hutten@protonmail.ch>
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { useEffect } from 'react'
|
|
import { useStore } from 'useStore'
|
|
|
|
export function useEngineConnectionSubscriptions() {
|
|
const {
|
|
engineCommandManager,
|
|
setCursor2,
|
|
setHighlightRange,
|
|
highlightRange,
|
|
} = useStore((s) => ({
|
|
engineCommandManager: s.engineCommandManager,
|
|
setCursor2: s.setCursor2,
|
|
setHighlightRange: s.setHighlightRange,
|
|
highlightRange: s.highlightRange,
|
|
}))
|
|
useEffect(() => {
|
|
if (!engineCommandManager) return
|
|
|
|
const unSubHover = engineCommandManager.subscribeToUnreliable({
|
|
event: 'highlight_set_entity',
|
|
callback: ({ data }) => {
|
|
if (data?.entity_id) {
|
|
const sourceRange =
|
|
engineCommandManager.sourceRangeMap[data.entity_id]
|
|
setHighlightRange(sourceRange)
|
|
} else if (
|
|
!highlightRange ||
|
|
(highlightRange[0] !== 0 && highlightRange[1] !== 0)
|
|
) {
|
|
setHighlightRange([0, 0])
|
|
}
|
|
},
|
|
})
|
|
const unSubClick = engineCommandManager.subscribeTo({
|
|
event: 'select_with_point',
|
|
callback: ({ data }) => {
|
|
if (!data?.entity_id) {
|
|
setCursor2()
|
|
return
|
|
}
|
|
const sourceRange = engineCommandManager.sourceRangeMap[data.entity_id]
|
|
setCursor2({ range: sourceRange, type: 'default' })
|
|
},
|
|
})
|
|
return () => {
|
|
unSubHover()
|
|
unSubClick()
|
|
}
|
|
}, [engineCommandManager, setCursor2, setHighlightRange, highlightRange])
|
|
}
|