Added a Display struct and animation frames
This commit is contained in:
@@ -1,16 +1,25 @@
|
||||
import React, { useState, useCallback, useEffect, useRef } from 'react'
|
||||
import { WasmCPU } from '../pkg/vweb.js'
|
||||
import React, { useCallback, useEffect, useRef } from 'react'
|
||||
import { WasmCPU, Display } from '../pkg/vweb.js'
|
||||
|
||||
export default function({}) {
|
||||
const canvas = useRef(null)
|
||||
const [ctx, setCtx] = useState(null)
|
||||
const [cpu, _setCpu] = useState(new WasmCPU())
|
||||
const cpu = useRef(new WasmCPU())
|
||||
const ctx = useRef(null)
|
||||
const display = useRef(null)
|
||||
const request = useRef(null)
|
||||
|
||||
const drawFrame = useCallback(() => {
|
||||
display.current.draw(cpu.current, ctx.current)
|
||||
request.current = requestAnimationFrame(drawFrame)
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
const c = canvas.current.getContext('2d')
|
||||
setCtx(c)
|
||||
cpu.draw_frame(c)
|
||||
ctx.current = canvas.current.getContext('2d')
|
||||
display.current = new Display()
|
||||
request.current = requestAnimationFrame(drawFrame)
|
||||
return () => cancelAnimationFrame(request.current)
|
||||
}, [canvas.current])
|
||||
|
||||
return (
|
||||
<canvas ref={canvas} width={640} height={480}></canvas>
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user