@@ -34,9 +34,9 @@ class ViewHelper extends Object3D {
34
34
* Constructs a new view helper.
35
35
*
36
36
* @param {Camera } camera - The camera whose transformation should be visualized.
37
- * @param {HTMLDOMElement } [domElement] - The DOM element that is used to render the view.
37
+ * @param {WebGLRenderer|WebGPURenderer } renderer - The renderer that is used to render the view.
38
38
*/
39
- constructor ( camera , domElement ) {
39
+ constructor ( camera , renderer ) {
40
40
41
41
super ( ) ;
42
42
@@ -144,28 +144,24 @@ class ViewHelper extends Object3D {
144
144
/**
145
145
* Renders the helper in a separate view in the bottom-right corner
146
146
* of the viewport.
147
- *
148
- * @param {WebGLRenderer|WebGPURenderer } renderer - The renderer.
149
147
*/
150
- this . render = function ( renderer ) {
148
+ this . render = function ( ) {
151
149
152
150
this . quaternion . copy ( camera . quaternion ) . invert ( ) ;
153
151
this . updateMatrixWorld ( ) ;
154
152
155
153
point . set ( 0 , 0 , 1 ) ;
156
154
point . applyQuaternion ( camera . quaternion ) ;
157
155
158
- //
159
-
160
- const x = domElement . offsetWidth - dim ;
161
- const y = renderer . isWebGPURenderer ? domElement . offsetHeight - dim : 0 ;
162
-
163
156
renderer . clearDepth ( ) ;
164
157
165
158
renderer . getViewport ( viewport ) ;
166
- renderer . setViewport ( x , y , dim , dim ) ;
159
+ renderer . setViewport ( helperViewport . x , helperViewport . y , helperViewport . z , helperViewport . w ) ;
167
160
161
+ const autoClear = renderer . autoClear ;
162
+ renderer . autoClear = false ;
168
163
renderer . render ( this , orthoCamera ) ;
164
+ renderer . autoClear = autoClear ;
169
165
170
166
renderer . setViewport ( viewport . x , viewport . y , viewport . z , viewport . w ) ;
171
167
@@ -177,8 +173,22 @@ class ViewHelper extends Object3D {
177
173
const q1 = new Quaternion ( ) ;
178
174
const q2 = new Quaternion ( ) ;
179
175
const viewport = new Vector4 ( ) ;
176
+ const helperViewport = new Vector4 ( renderer . domElement . offsetWidth - dim , renderer . isWebGPURenderer ? renderer . domElement . offsetHeight - dim : 0 , dim , dim ) ;
180
177
let radius = 0 ;
181
178
179
+ /**
180
+ * Sets the viewport for the helper.
181
+ * @param {number } x viewport x
182
+ * @param {number } y viewport y
183
+ * @param {number } width viewport width
184
+ * @param {number } height viewport height
185
+ */
186
+ this . setViewport = function ( x , y , width , height ) {
187
+
188
+ helperViewport . set ( x , y , width , height ) ;
189
+
190
+ } ;
191
+
182
192
/**
183
193
* This method should be called when a click or pointer event
184
194
* has happened in the app.
@@ -190,9 +200,9 @@ class ViewHelper extends Object3D {
190
200
191
201
if ( this . animating === true ) return false ;
192
202
193
- const rect = domElement . getBoundingClientRect ( ) ;
194
- const offsetX = rect . left + ( domElement . offsetWidth - dim ) ;
195
- const offsetY = rect . top + ( domElement . offsetHeight - dim ) ;
203
+ const rect = renderer . domElement . getBoundingClientRect ( ) ;
204
+ const offsetX = rect . left + ( renderer . domElement . offsetWidth - dim ) ;
205
+ const offsetY = rect . top + ( renderer . domElement . offsetHeight - dim ) ;
196
206
mouse . x = ( ( event . clientX - offsetX ) / ( rect . right - offsetX ) ) * 2 - 1 ;
197
207
mouse . y = - ( ( event . clientY - offsetY ) / ( rect . bottom - offsetY ) ) * 2 + 1 ;
198
208
0 commit comments