Skip to content

Commit ff35bfc

Browse files
authored
refactor!: removed useTresReady, added isReady to the renderer in the… (#1000)
* refactor!: removed useTresReady, added isReady to the renderer in the context BREAKING CHANGE: - useTresReady is no longer available, it has been replaced by isReady in the renderer in the context - onTresReady is no longer available. renderer.isReady should be leveraged instead * chore: removed playground files concerning useTresReady * chore: removed ready pages from playground routes * feature: made isReady dependency clearer by leveraging triggerRef
1 parent 8b97e85 commit ff35bfc

File tree

11 files changed

+20
-646
lines changed

11 files changed

+20
-646
lines changed

playground/vue/src/pages/basic/ready/LoopCallbackWatcher.vue

Lines changed: 0 additions & 62 deletions
This file was deleted.

playground/vue/src/pages/basic/ready/OnTresReadyWatcher.vue

Lines changed: 0 additions & 69 deletions
This file was deleted.

playground/vue/src/pages/basic/ready/index.vue

Lines changed: 0 additions & 165 deletions
This file was deleted.

playground/vue/src/router/routes/basic.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,6 @@ export const basicRoutes = [
4444
name: 'Pierced Props',
4545
component: () => import('../../pages/basic/PiercedProps.vue'),
4646
},
47-
{
48-
path: '/basic/ready',
49-
name: '@ready',
50-
component: () => import('../../pages/basic/ready/index.vue'),
51-
},
5247
{
5348
path: '/basic/textures',
5449
name: 'Textures',

src/components/TresCanvas.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import { nodeOps } from '../core/nodeOps'
3636
3737
import { disposeObject3D, kebabToCamel } from '../utils/'
3838
import { registerTresDevtools } from '../devtools'
39+
import { whenever } from '@vueuse/core'
3940
4041
export interface TresCanvasProps
4142
extends Omit<WebGLRendererParameters, 'canvas'> {
@@ -244,14 +245,14 @@ onMounted(() => {
244245
)
245246
})
246247
247-
context.value.onReady(() => {
248-
if (context.value) { emit('ready', context.value) }
249-
})
250-
251248
// HMR support
252249
if (import.meta.hot && context.value) { import.meta.hot.on('vite:afterUpdate', () => handleHMR(context.value as TresContext)) }
253250
})
254251
252+
whenever(() => context.value?.renderer.isReady, () => {
253+
if (context.value) { emit('ready', context.value) }
254+
}, { once: true })
255+
255256
onUnmounted(unmountCanvas)
256257
</script>
257258

src/composables/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,4 @@ export * from './useRenderLoop'
1111
export * from './useTexture'
1212
export * from './useTresContextProvider'
1313
export * from './useTresEventManager'
14-
export { onTresReady } from './useTresReady'
1514
export { UseLoader, UseTexture }

src/composables/useRenderer/useRendererManager.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
useDevicePixelRatio,
1212
} from '@vueuse/core'
1313
import { ACESFilmicToneMapping, Color, WebGLRenderer } from 'three'
14-
import { computed, type MaybeRef, onUnmounted, ref, shallowRef, toValue, watch, watchEffect } from 'vue'
14+
import { computed, type MaybeRef, onUnmounted, readonly, ref, shallowRef, toValue, triggerRef, watch, watchEffect } from 'vue'
1515

1616
// Solution taken from Thretle that actually support different versions https://github.com/threlte/threlte/blob/5fa541179460f0dadc7dc17ae5e6854d1689379e/packages/core/src/lib/lib/useRenderer.ts
1717
import { revision } from '../../core/revision'
@@ -196,9 +196,15 @@ export function useRendererManager(
196196
invalidateOnDemand()
197197
})
198198

199+
const isReady = computed(() =>
200+
!!(instance.value.domElement.width && instance.value.domElement.height),
201+
)
202+
199203
watch([sizes.width, sizes.height], () => {
200204
instance.value.setSize(sizes.width.value, sizes.height.value)
201205
invalidateOnDemand()
206+
207+
triggerRef(instance)
202208
}, {
203209
immediate: true,
204210
})
@@ -305,6 +311,7 @@ export function useRendererManager(
305311
return {
306312
instance,
307313

314+
isReady: readonly(isReady),
308315
advance,
309316
onRender,
310317
invalidate,

0 commit comments

Comments
 (0)