onSessionEnd method

void onSessionEnd()

Implementation

void onSessionEnd() {
  session?.removeEventListener( 'select', onSessionEvent.jsify() );
  session?.removeEventListener( 'selectstart', onSessionEvent.jsify() );
  session?.removeEventListener( 'selectend', onSessionEvent.jsify() );
  session?.removeEventListener( 'squeeze', onSessionEvent.jsify() );
  session?.removeEventListener( 'squeezestart', onSessionEvent.jsify() );
  session?.removeEventListener( 'squeezeend', onSessionEvent.jsify() );
  session?.removeEventListener( 'end', onSessionEnd.jsify() );
  session?.removeEventListener( 'inputsourceschange', onInputSourcesChange.jsify() );

  for ( int i = 0; i < controllers.length; i ++ ) {
    final inputSource = controllerInputSources[ i ];
    if ( inputSource == null ) continue;
    controllerInputSources[ i ] = null;
    controllers[ i ]?.disconnect( inputSource );
  }

  _currentDepthNear = null;
  _currentDepthFar = null;

  depthSensing.reset();

  // restore framebuffer/rendering state

  renderer.setRenderTarget( initialRenderTarget );

  glBaseLayer = null;
  glProjLayer = null;
  glBinding = null;
  session = null;
  newRenderTarget = null;

  //

  animation.stop();

  isPresenting = false;

  renderer.setPixelRatio( currentPixelRatio ?? 1.0 );
  renderer.setSize( currentSize.width, currentSize.height, false );
  dispatchEvent(Event(type: 'sessionend'));
}