* 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>
54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { useLayoutEffect } from 'react'
|
|
import { _executor } from '../lang/executor'
|
|
import { useStore } from '../useStore'
|
|
import { EngineCommandManager } from '../lang/std/engineConnection'
|
|
|
|
export function useSetupEngineManager(
|
|
streamRef: React.RefObject<HTMLDivElement>,
|
|
token?: string
|
|
) {
|
|
const {
|
|
setEngineCommandManager,
|
|
setMediaStream,
|
|
setIsStreamReady,
|
|
setStreamDimensions,
|
|
executeCode,
|
|
} = useStore((s) => ({
|
|
setEngineCommandManager: s.setEngineCommandManager,
|
|
setMediaStream: s.setMediaStream,
|
|
setIsStreamReady: s.setIsStreamReady,
|
|
setStreamDimensions: s.setStreamDimensions,
|
|
executeCode: s.executeCode,
|
|
}))
|
|
|
|
const streamWidth = streamRef?.current?.offsetWidth
|
|
const streamHeight = streamRef?.current?.offsetHeight
|
|
|
|
const width = streamWidth ? streamWidth : 0
|
|
const quadWidth = Math.round(width / 4) * 4
|
|
const height = streamHeight ? streamHeight : 0
|
|
const quadHeight = Math.round(height / 4) * 4
|
|
|
|
useLayoutEffect(() => {
|
|
setStreamDimensions({
|
|
streamWidth: quadWidth,
|
|
streamHeight: quadHeight,
|
|
})
|
|
if (!width || !height) return
|
|
const eng = new EngineCommandManager({
|
|
setMediaStream,
|
|
setIsStreamReady,
|
|
width: quadWidth,
|
|
height: quadHeight,
|
|
token,
|
|
})
|
|
setEngineCommandManager(eng)
|
|
eng.waitForReady.then(() => {
|
|
executeCode()
|
|
})
|
|
return () => {
|
|
eng?.tearDown()
|
|
}
|
|
}, [quadWidth, quadHeight])
|
|
}
|