\r\n ```\r\n4. The camera should zoom on drag when left mouse button is pressed, but instead the camera rotates (default behavior)\r\n\r\n_Note:_ The same applies to `touches` as both of the props are discarded when turning props into refs, and aren't passed down to the extended component: https://github.com/Tresjs/cientos/blob/main/src/core/controls/CameraControls.vue#L331C1-L357C18\r\n\r\nI prepared a fix for that, will submit a PR shortly 😉 \r\n\n\n### System Info\n\n```shell\nSystem:\r\n OS: macOS 14.4.1\r\n CPU: (8) arm64 Apple M1 Pro\r\n Memory: 4.18 GB / 32.00 GB\r\n Shell: 5.9 - /bin/zsh\r\n Binaries:\r\n Node: 20.11.1 - ~/.nvm/versions/node/v20.11.1/bin/node\r\n npm: 10.2.4 - ~/.nvm/versions/node/v20.11.1/bin/npm\r\n pnpm: 8.15.4 - ~/Library/pnpm/pnpm\r\n bun: 1.0.27 - ~/.bun/bin/bun\r\n Browsers:\r\n Chrome: 124.0.6367.61\r\n Safari: 17.4.1\r\n npmPackages:\r\n @tresjs/cientos: ^3.8.0 => 3.8.0 \r\n @tresjs/core: ^3.8.1 => 3.8.1 \r\n @tresjs/leches: ^0.14.0 => 0.14.0 \r\n @tresjs/post-processing: ^0.7.1 => 0.7.1 \r\n vite: ^5.1.5 => 5.1.6\n```\n\n\n### Used Package Manager\n\nnpm\n\n### Code of Conduct\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/cientos/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/cientos/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://cientos.tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/Tresjs/cientos/issues) that reports the same bug to avoid creating a duplicate.\n- [X] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.",[],384,"cientos","CameraControls component doesn't support mouseButtons and touches props","2024-04-22T19:21:04Z","https://github.com/Tresjs/cientos/issues/384",0.77418953,{"description":2934,"labels":2935,"number":2946,"owner":2863,"repository":2864,"state":2889,"title":2947,"updated_at":2948,"url":2949,"score":2950},"### Description\n\nAs a developer using TresJS, I would like to have an Event Management solution with the following features:\r\n\r\n- Support for:\r\n - onClick\r\n - onContextMenu (rightClick)\r\n - onDoubleClick\r\n - onWheel\r\n - onPointerDown\r\n - onPointerUp\r\n - onPointerLeave\r\n - onPointerMove\r\n - onPointerCancel\r\n - onLostPointerCapture\r\n- Event prioritization \r\n- primitive pointer events\r\n- Event bubbling and propagation #501 #426 \r\n\r\n# Propagation through intersected objects\r\n\r\nRaycasting-Based Interaction: Tres should use Three.js's raycasting to determine which objects are interacted with. A ray is cast from the camera through the mouse position into the 3D space, and intersections with objects are calculated.\r\n\r\nSimulated Bubbling: When an event occurs, Tres might propagate it through objects based on their spatial arrangement (like from child to parent), but this is based on the raycast hits and not a strict parent-child hierarchy as in the DOM.\r\n\r\nMeaning that stop propagation is based on occlusion\r\n\r\n\r\n\r\nIf the object is a Group or a model consistent with several meshes, the same concept applies, the closest mesh to the camera stops the propagation\r\n\r\n\r\n\n\n### Suggested solution\n\n# Current solution uses:\r\n\r\n- `useRaycaster` https://github.com/Tresjs/tres/blob/main/src/composables/useRaycaster/index.ts\r\n- `usePointerEventHandler` https://github.com/Tresjs/tres/tree/main/src/composables/usePointerEventHandler\r\n\r\nRegister of events is being done here \r\nhttps://github.com/Tresjs/tres/blob/main/src/composables/usePointerEventHandler/index.ts#L57-L62\r\n\r\n```ts\r\nconst registerObject = (object: Object3D & EventProps) => {\r\n const { onClick, onPointerMove, onPointerEnter, onPointerLeave } = object\r\n\r\n if (onClick) objectsWithEventListeners.click.set(object, onClick)\r\n if (onPointerMove) objectsWithEventListeners.pointerMove.set(object, onPointerMove)\r\n if (onPointerEnter) objectsWithEventListeners.pointerEnter.set(object, onPointerEnter)\r\n if (onPointerLeave) objectsWithEventListeners.pointerLeave.set(object, onPointerLeave)\r\n}\r\n\r\n // to make the registerObject available in the custom renderer (nodeOps), it is attached to the scene\r\n scene.userData.tres__registerAtPointerEventHandler = registerObject\r\n scene.userData.tres__deregisterAtPointerEventHandler = deregisterObject\r\n\r\n scene.userData.tres__registerBlockingObjectAtPointerEventHandler = registerBlockingObject\r\n scene.userData.tres__deregisterBlockingObjectAtPointerEventHandler = deregisterBlockingObject\r\n```\r\n\r\nThese are then used on the renderer by saving them on the `userData` of the scene object\r\n\r\n```ts\r\ninsert(child, parent) {\r\n if (parent && parent.isScene) scene = parent as unknown as TresScene\r\n\r\n const parentObject = parent || scene\r\n\r\n if (child?.isObject3D) {\r\n if (\r\n child && supportedPointerEvents.some(eventName => child[eventName])\r\n ) {\r\n if (!scene?.userData.tres__registerAtPointerEventHandler)\r\n throw 'could not find tres__registerAtPointerEventHandler on scene\\'s userData'\r\n\r\n scene?.userData.tres__registerAtPointerEventHandler?.(child as Object3D)\r\n }\r\n }\r\n```\r\n\r\nhttps://github.com/Tresjs/tres/blob/main/src/core/nodeOps.ts#L102\r\n\r\n# Desired solution\r\n\r\nA state/store to manage the events\r\n\n\n### Alternative\n\n_No response_\n\n### Additional context\n\n_No response_\n\n### Validations\n\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\n- [X] Read the [docs](https://tresjs.org/guide).\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[2936,2937,2940,2943],{"name":2857,"color":2858},{"name":2938,"color":2939},"v4","7980EA",{"name":2941,"color":2942},"p3-significant","2C78E3",{"name":2944,"color":2945},"breaking-change","5612D2",515,"Pointer EventManager state","2024-05-30T06:32:45Z","https://github.com/Tresjs/tres/issues/515",0.77515197,{"description":2952,"labels":2953,"number":1229,"owner":2863,"repository":2864,"state":2889,"title":2955,"updated_at":2956,"url":2957,"score":2958},"Similar of [R3F Events](https://docs.pmnd.rs/react-three-fiber/api/events) would be nice to add Raytracing support",[2954],{"name":2857,"color":2858},"Events","2023-01-20T11:31:08Z","https://github.com/Tresjs/tres/issues/6",0.7781335,{"description":2960,"labels":2961,"number":2966,"owner":2863,"repository":2864,"state":2889,"title":2967,"updated_at":2968,"url":2969,"score":2970},"### Description\r\n\r\n`useRenderLoop` is used to provide the end user a callback method `onLoop` every frame per second to align with the one that the core uses for rendering.\r\n\r\nIt's based on `useRafn` composable from `@vueuse/core` https://vueuse.org/core/useRafFn/ but due to the feedback of the community, there are few issues related to its current behavior:\r\n\r\n- #607 \r\n- #252 \r\n- tresjs/nuxt#97\r\n\r\n### Suggested solution\r\n\r\nRefactor `useRenderLoop` to move away from `useRafn`\r\n\r\n### Alternative\r\n\r\n_No response_\r\n\r\n### Additional context\r\n\r\n_No response_\r\n\r\n### Validations\r\n\r\n- [X] I agree to follow this project's [Code of Conduct](https://github.com/Tresjs/tres/blob/main/CODE_OF_CONDUCT.md)\r\n- [X] Read the [Contributing Guidelines](https://github.com/Tresjs/tres/blob/main/CONTRIBUTING.md).\r\n- [X] Read the [docs](https://tresjs.org/guide).\r\n- [X] Check that there isn't [already an issue](https://github.com/tresjs/tres/issues) that reports the same bug to avoid creating a duplicate.",[2962,2965],{"name":2963,"color":2964},"experimental","01D7E6",{"name":2944,"color":2945},633,"Reconsider how useRenderLoop works.","2024-05-30T06:43:03Z","https://github.com/Tresjs/tres/issues/633",0.78072345,["Reactive",2972],{},["Set"],["ShallowReactive",2975],{"$fTRc1wZytZ_XrK4EfJfei_Sz-An4H4Yy6syhVxH_PVJc":-1,"$fMMissOz6dRdiBnur4hOj9mjt65W02bpTnwr71dBfPY0":-1},"/Tresjs/tres/982"]