function loadScene(sceneId, targetPitch, targetYaw, targetHfov, fadeDone) {
    loaded = false;
    animatedMove = {};
    
    // Set up fade if specified
    var fadeImg, workingPitch, workingYaw, workingHfov;
    if (config.sceneFadeDuration && !fadeDone) {
        var data = renderer.render(config.pitch * Math.PI / 180, config.yaw * Math.PI / 180, config.hfov * Math.PI / 180, {returnImage: true});
        if (data !== undefined) {
            fadeImg = new Image();
            fadeImg.className = 'pnlm-fade-img';
            fadeImg.style.transition = 'opacity ' + (config.sceneFadeDuration / 1000) + 's';
            fadeImg.style.width = '100%';
            fadeImg.style.height = '100%';
            fadeImg.onload = function() {
                loadScene(sceneId, targetPitch, targetYaw, targetHfov, true);
            };
            fadeImg.src = data;
            renderContainer.appendChild(fadeImg);
            renderer.fadeImg = fadeImg;
            return;
        }
    }
    
    // Set new pointing
    if (targetPitch === 'same') {
        workingPitch = config.pitch;
    } else {
        workingPitch = targetPitch;
    }
    if (targetYaw === 'same') {
        workingYaw = config.yaw;
    } else if (targetYaw === 'sameAzimuth') {
        workingYaw = config.yaw + (config.northOffset || 0) - (initialConfig.scenes[sceneId].northOffset || 0);
    } else {
        workingYaw = targetYaw;
    }
    if (targetHfov === 'same') {
        workingHfov = config.hfov;
    } else {
        workingHfov = targetHfov;
    }
    
    // Destroy hot spots from previous scene
    destroyHotSpots();
    
    // Create the new config for the scene
    mergeConfig(sceneId);

    // Stop motion
    speed.yaw = speed.pitch = speed.hfov = 0;

    // Reload scene
    processOptions();
    if (workingPitch !== undefined) {
        config.pitch = workingPitch;
    }
    if (workingYaw !== undefined) {
        config.yaw = workingYaw;
    }
    if (workingHfov !== undefined) {
        config.hfov = workingHfov;
    }
    fireEvent('scenechange', sceneId);
    load();

    // Properly handle switching to dynamic scenes
    update = config.dynamicUpdate === true;
    if (config.dynamic) {
        panoImage = config.panorama;
        onImageLoad();
    }
}
function loadScene(sceneId, targetPitch, targetYaw, targetHfov, fadeDone) {
    loaded = false;
    animatedMove = {};
    
    // Set up fade if specified
    var fadeImg, workingPitch, workingYaw, workingHfov;
    if (config.sceneFadeDuration && !fadeDone) {
        var data = renderer.render(config.pitch * Math.PI / 180, config.yaw * Math.PI / 180, config.hfov * Math.PI / 180, {returnImage: true});
        if (data !== undefined) {
            fadeImg = new Image();
            fadeImg.className = 'pnlm-fade-img';
            fadeImg.style.transition = 'opacity ' + (config.sceneFadeDuration / 1000) + 's';
            fadeImg.style.width = '100%';
            fadeImg.style.height = '100%';
            fadeImg.onload = function() {
                loadScene(sceneId, targetPitch, targetYaw, targetHfov, true);
            };
            fadeImg.src = data;
            renderContainer.appendChild(fadeImg);
            renderer.fadeImg = fadeImg;
            return;
        }
    }
    
    // Set new pointing
    if (targetPitch === 'same') {
        workingPitch = config.pitch;
    } else {
        workingPitch = targetPitch;
    }
    if (targetYaw === 'same') {
        workingYaw = config.yaw;
    } else if (targetYaw === 'sameAzimuth') {
        workingYaw = config.yaw + (config.northOffset || 0) - (initialConfig.scenes[sceneId].northOffset || 0);
    } else {
        workingYaw = targetYaw;
    }
    if (targetHfov === 'same') {
        workingHfov = config.hfov;
    } else {
        workingHfov = targetHfov;
    }
    
    // Destroy hot spots from previous scene
    destroyHotSpots();
    
    // Create the new config for the scene
    mergeConfig(sceneId);

    // Stop motion
    speed.yaw = speed.pitch = speed.hfov = 0;

    // Reload scene
    processOptions();
    if (workingPitch !== undefined) {
        config.pitch = workingPitch;
    }
    if (workingYaw !== undefined) {
        config.yaw = workingYaw;
    }
    if (workingHfov !== undefined) {
        config.hfov = workingHfov;
    }
    fireEvent('scenechange', sceneId);
    load();

    // Properly handle switching to dynamic scenes
    update = config.dynamicUpdate === true;
    if (config.dynamic) {
        panoImage = config.panorama;
        onImageLoad();
    }
}
function loadScene ( sceneId , targetPitch , targetYaw , targetHfov , fadeDone ) { loaded = false ; animatedMove = { } ; // Set up fade if specified var fadeImg , workingPitch , workingYaw , workingHfov ; if ( config . sceneFadeDuration && ! fadeDone ) { var data = renderer . render ( config . pitch * Math . PI / 180 , config . yaw * Math . PI / 180 , config . hfov * Math . PI / 180 , { returnImage : true } ) ; if ( data !== undefined ) { fadeImg = new Image ( ) ; fadeImg . className = 'pnlm-fade-img' ; fadeImg . style . transition = 'opacity ' + ( config . sceneFadeDuration / 1000 ) + 's' ; fadeImg . style . width = '100%' ; fadeImg . style . height = '100%' ; fadeImg . onload = function ( ) { loadScene ( sceneId , targetPitch , targetYaw , targetHfov , true ) ; } ; fadeImg . src = data ; renderContainer . appendChild ( fadeImg ) ; renderer . fadeImg = fadeImg ; return ; } } // Set new pointing if ( targetPitch === 'same' ) { workingPitch = config . pitch ; } else { workingPitch = targetPitch ; } if ( targetYaw === 'same' ) { workingYaw = config . yaw ; } else if ( targetYaw === 'sameAzimuth' ) { workingYaw = config . yaw + ( config . northOffset || 0 ) - ( initialConfig . scenes [ sceneId ] . northOffset || 0 ) ; } else { workingYaw = targetYaw ; } if ( targetHfov === 'same' ) { workingHfov = config . hfov ; } else { workingHfov = targetHfov ; } // Destroy hot spots from previous scene destroyHotSpots ( ) ; // Create the new config for the scene mergeConfig ( sceneId ) ; // Stop motion speed . yaw = speed . pitch = speed . hfov = 0 ; // Reload scene processOptions ( ) ; if ( workingPitch !== undefined ) { config . pitch = workingPitch ; } if ( workingYaw !== undefined ) { config . yaw = workingYaw ; } if ( workingHfov !== undefined ) { config . hfov = workingHfov ; } fireEvent ( 'scenechange' , sceneId ) ; load ( ) ; // Properly handle switching to dynamic scenes update = config . dynamicUpdate === true ; if ( config . dynamic ) { panoImage = config . panorama ; onImageLoad ( ) ; } }
Loads scene.
@private
@param {string} sceneId - Identifier of scene configuration to merge in.
@param {number} targetPitch - Pitch viewer should be centered on once scene loads.
@param {number} targetYaw - Yaw viewer should be centered on once scene loads.
@param {number} targetHfov - HFOV viewer should use once scene loads.
@param {boolean} [fadeDone] - If `true`, fade setup is skipped.
Loads scene .