@@ -212,26 +212,26 @@ class LidarUI{
212
212
213
213
function changeLidarType ( )
214
214
{
215
- lidar . lidarType = getLidarsTypes ( ) . find ( type => type . name === document . getElementById ( 'lidar-type-' + lidar . id ) . value ) ;
215
+ const newTypeName = document . getElementById ( `lidar-type-${ lidar . id } ` ) . value ;
216
+ const newLidarTypeData = getLidarsTypes ( ) . find ( type => type . name === newTypeName ) ;
216
217
217
- sceneManager . scene . remove ( lidar . rays ) ;
218
- lidar . rays . children . forEach ( r => {
219
- if ( r . isLineSegments )
220
- {
221
- r . geometry . dispose ( ) ;
222
- r . material . dispose ( ) ;
223
- }
224
- } ) ;
225
- lidar . rays . clear ( ) ;
226
- lidar . buildRays ( ) ;
227
- sceneManager . scene . add ( lidar . rays ) ;
218
+ if ( ! newLidarTypeData ) {
219
+ console . error ( "Nouveau type de LiDAR non trouvé:" , newTypeName ) ;
220
+ return ;
221
+ }
222
+
223
+ // STEP 1 : The LiDAR deals with its own type change, recreates the 3D objects, etc
224
+ lidar . setType ( newLidarTypeData , sceneManager ) ;
228
225
226
+ // STEP 2 : Update UI with new camera properties
229
227
document . getElementById ( `lidar-fov${ lidar . id } ` ) . innerHTML = lidar . lidarType . fov + '°' ;
230
228
document . getElementById ( `lidar-res${ lidar . id } ` ) . innerHTML = lidar . lidarType . angularResolution + '°' ;
231
- document . getElementById ( `lidar-near${ lidar . id } ` ) . innerHTML = ( Math . round ( lidar . lidarType . rangeNear * document . getElementById ( ' lidar-near' + lidar . id ) . dataset . unit * 100 ) / 100.0 ) ;
232
- document . getElementById ( `lidar-far${ lidar . id } ` ) . innerHTML = ( Math . round ( lidar . lidarType . rangeFar * document . getElementById ( ' lidar-far' + lidar . id ) . dataset . unit * 100 ) / 100.0 ) ;
229
+ document . getElementById ( `lidar-near${ lidar . id } ` ) . innerHTML = ( Math . round ( lidar . lidarType . rangeNear * document . getElementById ( ` lidar-near${ lidar . id } ` ) . dataset . unit * 100 ) / 100.0 ) ;
230
+ document . getElementById ( `lidar-far${ lidar . id } ` ) . innerHTML = ( Math . round ( lidar . lidarType . rangeFar * document . getElementById ( ` lidar-far${ lidar . id } ` ) . dataset . unit * 100 ) / 100.0 ) ;
233
231
232
+ // STEP 3 : Save changes
234
233
sceneManager . objects . populateStorage ( ) ;
234
+
235
235
}
236
236
237
237
this . changeVisibilityUIOnly = function ( visible )
0 commit comments