From 790bbe8b68b4e37e35de7527863c9b5657b1144e Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Thu, 6 Feb 2025 14:59:29 +0100 Subject: [PATCH 1/3] fix: improve typing pixel ratio handling in setPixelRatio utility - Add type safety for user-defined DPR array - Enhance DPR calculation logic with explicit type checking - Maintain existing behavior while improving code readability --- src/utils/index.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 09df9fa30..3f0b54672 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -459,9 +459,12 @@ export function setPixelRatio(renderer: { setPixelRatio?: (dpr: number) => void, let newDpr = 0 - if (userDpr && is.arr(userDpr) && userDpr.length >= 2) { - const [min, max] = userDpr - newDpr = MathUtils.clamp(systemDpr, min, max) + if (userDpr && is.arr(userDpr)) { + const dprArray = userDpr as [number, number] + if (dprArray.length >= 2) { + const [min, max] = dprArray + newDpr = MathUtils.clamp(systemDpr, min, max) + } } else if (is.num(userDpr)) { newDpr = userDpr } else { newDpr = systemDpr } From 9d5f43c679e7cf5eb8efd8d0894fc43b870e11ae Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Thu, 6 Feb 2025 15:05:57 +0100 Subject: [PATCH 2/3] fix(devtools): enhance scene information payload structure - Solved type issues - Restructure scene info payload to use key-value array format - Add support for rendering program details - Improve type and readability of devtools scene information --- src/devtools/plugin.ts | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/devtools/plugin.ts b/src/devtools/plugin.ts index 8b4ab89cb..01eb3a408 100644 --- a/src/devtools/plugin.ts +++ b/src/devtools/plugin.ts @@ -187,23 +187,29 @@ export function registerTresDevtools(app: DevtoolsApp, tres: TresContext) { } if (instance.isScene) { - payload.state.info = { - objects: instance.children.length, - memory: calculateMemoryUsage(instance), - calls: tres.renderer.value.info.render.calls, - triangles: tres.renderer.value.info.render.triangles, - points: tres.renderer.value.info.render.points, - lines: tres.renderer.value.info.render.lines, + payload.state = { + ...payload.state, + state: [ + { + key: 'Scene Info', + value: { + objects: instance.children.length, + memory: calculateMemoryUsage(instance), + calls: tres.renderer.value.info.render.calls, + triangles: tres.renderer.value.info.render.triangles, + points: tres.renderer.value.info.render.points, + lines: tres.renderer.value.info.render.lines, + }, + }, + { + key: 'Programs', + value: tres.renderer.value.info.programs?.map(program => ({ + ...program, + programName: program.name, + })) || [], + }, + ], } - payload.state.programs = tres.renderer.value.info.programs?.map(program => ({ - key: program.name, - value: { - ...program, - vertexShader: program.vertexShader, - attributes: program.getAttributes(), - uniforms: program.getUniforms(), - }, - })) || [] } } }) From 6d8e742646618bbf40b192bfe5dafa376f8780fe Mon Sep 17 00:00:00 2001 From: alvarosabu Date: Thu, 6 Feb 2025 15:08:51 +0100 Subject: [PATCH 3/3] fix: improve type safety in retargeting proxy setter - Add type checking for setter functions - Ensure only valid function setters are called - Prevent potential runtime errors with explicit type validation --- src/utils/primitive/createRetargetingProxy.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/utils/primitive/createRetargetingProxy.ts b/src/utils/primitive/createRetargetingProxy.ts index e8a1ff770..ae91fdbaf 100644 --- a/src/utils/primitive/createRetargetingProxy.ts +++ b/src/utils/primitive/createRetargetingProxy.ts @@ -22,8 +22,9 @@ export function createRetargetingProxy