@threlte/core
Advanced tools
Comparing version 8.0.0-next.2 to 8.0.0-next.3
@@ -1,4 +0,4 @@ | ||
import { writable } from 'svelte/store'; | ||
import { ColorManagement, PCFSoftShadowMap, WebGLRenderer } from 'three'; | ||
import { watch } from './storeUtils'; | ||
import { useTask } from '../hooks/useTask'; | ||
import { currentWritable, memoize, watch } from './storeUtils'; | ||
/** | ||
@@ -20,3 +20,3 @@ * ### `useRenderer` | ||
export const useRenderer = (ctx) => { | ||
const renderer = writable(undefined); | ||
const renderer = currentWritable(undefined); | ||
const createRenderer = (canvas, rendererParameters) => { | ||
@@ -43,7 +43,19 @@ ctx.renderer = new WebGLRenderer({ | ||
}); | ||
watch([renderer, ctx.size], ([renderer, size]) => { | ||
if (renderer?.xr?.isPresenting) | ||
const memoized = memoize(ctx.size); | ||
const { start, stop } = useTask(() => { | ||
if (renderer.current?.xr?.isPresenting) | ||
return; | ||
renderer?.setSize(size.width, size.height); | ||
if (!renderer.current) | ||
return; | ||
renderer.current.setSize(memoized.current.width, memoized.current.height); | ||
ctx.invalidate(); | ||
stop(); | ||
}, { | ||
before: ctx.autoRenderTask, | ||
autoStart: false, | ||
autoInvalidate: false | ||
}); | ||
watch([renderer, ctx.size], () => { | ||
start(); | ||
}); | ||
watch([renderer, ctx.shadows], ([renderer, shadows]) => { | ||
@@ -50,0 +62,0 @@ if (!renderer) |
{ | ||
"name": "@threlte/core", | ||
"version": "8.0.0-next.2", | ||
"version": "8.0.0-next.3", | ||
"author": "Grischa Erbe <hello@legrisch.com> (https://legrisch.com)", | ||
@@ -23,3 +23,3 @@ "license": "MIT", | ||
"rimraf": "^5.0.5", | ||
"svelte": "5.0.0-next.97", | ||
"svelte": "5.0.0-next.107", | ||
"svelte-check": "^3.6.9", | ||
@@ -26,0 +26,0 @@ "svelte-preprocess": "^5.1.3", |
394346
8748