mul(stagescale,get(vrtourdevicescale)); setControlMode(drag); setControlMode(moveto); if (device.desktop, set(control.mouse, %1); set(tour_controlmodemousetype, %1); , set(control.touch, %1); set(tour_controlmodetouchtype, %1); ); events.dispatch(oncontrolmodechanged); txtadd(real_message_id, get(tour_language), "_", %2); set(%1, get(data[get(real_message_id)].content)); set(tour_displayspots, false); set(nb_spots, get(hotspot.count)); if (nb_spots != 0, hidepanospotsaction(); ); events.dispatch(hotspots_visibility_changed); set(tour_displayspots, true); set(nb_spots, get(hotspot.count)); if (nb_spots != 0, showpanospotsaction(); ); events.dispatch(hotspots_visibility_changed); set(nb_spots, get(hotspot.count)); if (nb_spots != 0, if (tour_displayspots, showpanospotsaction(); , hidepanospotsaction(); ); ); if (skipintro !== null, set(tour_firstlittleplanet, false); events.dispatch(onPanoStart); , ifnot (tour_firststartactiondone, set(sceneisfull360, false); if (scene[get(xml.scene)].full360, sub(viewhfov, panoview.hmax, panoview.hmin); if (viewhfov == 360, sub(viewvfov, panoview.vmax, panoview.vmin); if (viewvfov == 180, set(sceneisfull360, true); ); ); ); stoptween(view.fov); stoptween(view.fovmax); stoptween(view.hlookat); stoptween(view.vlookat); stoptween(view.fisheye); if (sceneisfull360 AND (device.webgl OR device.flash), setlittleplanet(); ); , events.dispatch(onPanoStart, true); ); ); if(tour_firstlittleplanet, set(sceneisfull360, false); if (scene[get(xml.scene)].full360, sub(viewhfov, panoview.hmax, panoview.hmin); if (viewhfov == 360, sub(viewvfov, panoview.vmax, panoview.vmin); if (viewvfov == 180, set(sceneisfull360, true); ); ); ); if (sceneisfull360, fromlittleplanetintrotonormalview(); ); ); set(view.architectural, 0.0); set(view.hlookat, get(panoview.h)); set(view.vlookat, 90); set(view.pannini, 0.0); if(panoview.fovmax LE 150, set(view.fovmax, 150); , set(view.fovmax, get(panoview.fovmax)); ); set(view.stereographic, true); set(view.fisheyefovlink, 1.5); set(view.fisheye, 1.0); set(view.fov, 150); events.dispatch(onStartLittlePlanetIntroduction); tweennormalview(); hideTooltip(); tween(view.fovmax, get(panoview.fovmax), 2, easeoutquad); tween(view.hlookat, get(panoview.h), 2, easeoutquad); tween(view.vlookat, get(panoview.v), 2, easeoutquad); if(panoview.fov LE view.fov, tween(view.fov, get(panoview.fov), 2, easeoutquad); ); tween(view.pannini, 0.0, 2, easeoutquad); tween(view.fisheye, 0.0, 2, easeoutquad, set(view.architectural, 0.0); set(view.stereographic, false); set(view.fisheyefovlink, 0.5); events.dispatch(onEndLittlePlanetIntroduction, true); if (tour_firstlittleplanet, events.dispatch(onTourStart, true); set(tour_firstlittleplanet, false); ); events.dispatch(onPanoStart, true); ); addlayer(splashscreenlayer); set(layer[splashscreenlayer].visible, true); set(layer[splashscreenlayer].align, center); set(layer[splashscreenlayer].zorder, 99); set(layer[splashscreenlayer].keep, true); set(layer[splashscreenlayer].onclick, hideintroimage(true)); set(layer[splashscreenlayer].alpha, 1.0); set(layer[splashscreenlayer].onloaded, autohideintroimage();); set(layer[splashscreenlayer].url, '%FIRSTXML%/graphics/img0202.gif'); stopdelayedcall(hideintroimagecall); tween(layer[splashscreenlayer].alpha, 0.0, 0.5, default, tween(layer[splashscreenlayerbg].alpha , 0.0, 0.5, default, hideintroimagetreatment(); ); ); removelayer(splashscreenlayer); set(sceneisfull360, false); if (scene[get(xml.scene)].full360, sub(viewhfov, panoview.hmax, panoview.hmin); if (viewhfov == 360, sub(viewvfov, panoview.vmax, panoview.vmin); if (viewvfov == 180, set(sceneisfull360, true); ); ); ); if (sceneisfull360, startLittlePlanetIntroEffect(); , events.dispatch(onTourStart, true); events.dispatch(onPanoStart, true); ); removelayer(splashscreenlayerbg); hideTooltip(); delayedcall(hideintroimagecall, 3, hideintroimage() ); stopdelayedcall(hideintroimagecall); removelayer(splashscreenlayerbg); removelayer(splashscreenlayer); js(eventTourStarted()); loadscene(%1, get(projection_current_params), NOPREVIEW|MERGE); if (xml.scene != %1, events.dispatch(onleavingscene, true); interruptAnimation(); for(set(scenei,0), scenei LT scene.count, inc(scenei),if(scene[get(scenei)].name == %1, loadscene(%1, get(projection_current_params), NOPREVIEW|MERGE|KEEPVIEW|KEEPMOVING, get(ptblendmode)); );); ); copy(sceneprevnexti, scene[get(xml.scene)].index); dec(sceneprevnexti); if (sceneprevnexti LT 0, sub(sceneprevnexti, scene.count, 1);); mainloadscene(get(scene[get(sceneprevnexti)].name)); copy(sceneprevnexti, scene[get(xml.scene)].index); inc(sceneprevnexti); if (sceneprevnexti GE scene.count, set(sceneprevnexti, 0);); mainloadscene(get(scene[get(sceneprevnexti)].name)); if(tour_autorotation_pausecounter LE 0, set(tour_autorotateenabled, true ); invalidatescreen(); set(autorotate.enabled, true); set(tour_autorotation_pausecounter, 0); events.dispatch(onstartautorotation); if(tour_autotourenabled, resetautotourvariables(); ); ); set(tour_autorotateenabled, false); set(autorotate.enabled, false); events.dispatch(onstopautorotation); if(tour_autotourenabled, stopautotourtimer(); ); if(%1 == forceplugin, inc(tour_autorotation_pauseplugin); ); inc(tour_autorotation_pausecounter); if(tour_autorotateenabled, set(autorotate.enabled, false); events.dispatch(onpauseautorotation); if(tour_autotourenabled AND useautotourdelay == false, stopautotourtimer(); ); ); if(%1 == forceplugin, if (tour_autorotation_pauseplugin GT 0, dec(tour_autorotation_pauseplugin); ); ); if (tour_autorotation_pausecounter GE 0, if(%1 != forceresume, if ((tour_autorotation_pausecounter GT 0) AND (tour_autorotation_pausecounter GT tour_autorotation_pauseplugin), dec(tour_autorotation_pausecounter); ); ); ); if(tour_autorotateenabled, if(tour_autorotation_pausecounter == 0, if(%1 != forceresume, set(autorotate.enabled, true); events.dispatch(onresumeautorotation); if(tour_autotourenabled, resetautotourvariables(); ); ); ); , if(%1 != forceresume, if(%1 != forceplugin, if(%1 != forcehotspot, startautorotation(); ); , set(forceAutorotationFromPluginUnload, false); if(action['autorotationatstart'], set(forceAutorotationFromPluginUnload, true); ); if(action['autotouratstart'], set(forceAutorotationFromPluginUnload, true); ); if(forceAutorotationFromPluginUnload, if(tour_autorotation_openatstartplugin == 1, if((tour_autorotation_pauseplugin LE 0) AND (tour_autorotation_pausecounter LE 0), startautorotation(); ); ); ); ); ); ); set(tour_autotourenabled, true); startautorotation(); events.dispatch(onstartautotour); stopautotourtimer(); if (scene[get(xml.scene)].planar, set(autotourdelay, 10); delayedcall(autotour_call_id, get(autotourdelay), autotourtimer); , set(autotourHorizontalStartValue, get(view.hlookat)); if ((panoview.hmin == -180) AND (panoview.hmax == 180), delayedcallAutotourFull360(); , set(previousStep, 0); set(panoramaHorizontalSize, 0); set(totalPartialSize, 0); set(firstBorderSize, 0); set(secondBorderSize, 0); set(firstStep, 0); set(firstStepTest, 0); set(firstStepKeep, 0); set(borderCounter, 0); sub(panoramaHorizontalSize, get(panoview.hmax), get(panoview.hmin)); Math.abs(panoramaHorizontalSize); delayedcallAutotourPartial(); ); ); sub(tempPosition, get(view.hlookat), get(autotourHorizontalStartValue)); Math.ceil(tempPosition); Math.abs(tempPosition); if(borderCounter == 0 AND tempPosition LT previousStep, inc(borderCounter); Math.abs(firstStep, get(previousStep)); sub(firstStepTest, get(previousStep), get(firstStep)); set(firstStepKeep, get(firstStepTest)); Math.abs(firstBorderSize, get(previousStep)); add(totalPartialSize, get(firstBorderSize)); ); if(borderCounter GE 1, if(firstBorderSize != 0, sub(firstStepTest, get(previousStep), get(firstStep)); Math.abs(firstStepTest, get(firstStepTest)); if(firstStepTest LT firstStepKeep, add(totalPartialSize, get(firstBorderSize)); set(firstBorderSize, 0); ); set(firstStepKeep, get(firstStepTest)); , if(tempPosition LT previousStep, inc(borderCounter); Math.abs(secondBorderSize, get(previousStep)); add(totalPartialSize, get(secondBorderSize)); ); ); ); set(previousStep, get(tempPosition)); if(borderCounter GE 2 AND totalPartialSize GT panoramaHorizontalSize, delete(previousStep, panoramaHorizontalSize, totalPartialSize, firstBorderSize, secondBorderSize, firstStep, firstStepTest, firstStepKeep, borderCounter); autotourtimer(); , delayedcall(autotour_call_id, 0.5, delayedcallAutotourPartial); ); sub(tempPosition, get(view.hlookat), get(autotourHorizontalStartValue)); mod(tempPositionMod, get(tempPosition), 360); Math.ceil(tempPosition); Math.ceil(tempPositionMod); if(tempPositionMod == tempPosition, delayedcall(autotour_call_id, 0.5, delayedcallAutotourFull360); , autotourtimer(); ); set(tour_autotourenabled, false); stopautotourtimer(); stopautorotation(); events.dispatch(onstopautotour); if(tour_autotourenabled, if(tour_autorotateenabled, if(autorotate.enabled, stopautotour();loadNextScene(); startautotour(); ); ); ); stopdelayedcall(autotour_call_id); if(tour_autotourenabled, resetautotourvariables();); if(tour_autotourenabled, if(%1, resetautotourvariables();, stopautotourtimer(););); if(norotation === null, if(noautotour === null, startautotour(););); set(events[autotourstartevents].keep, false); txtadd(tour_deeplinkingvars, "s=", get(xml.scene)); set(viewhlookat, get(view.hlookat));roundval(viewhlookat, 4); mod(viewhlookat, 360); if (viewhlookat GT 180, sub(viewhlookat, 360); , if (viewhlookat LT -180, add(viewhlookat, 360)); ); set(viewvlookat, get(view.vlookat));roundval(viewvlookat, 4); set(viewfov, get(view.fov));roundval(viewfov, 4); txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&h=", get(viewhlookat)); txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&v=", get(viewvlookat)); txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&f=", get(viewfov)); if (%1 !== null,if (%1, txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&skipintro"););); if (%2 !== null,if (%2, txtadd(tour_deeplinkingvars, get(tour_deeplinkingvars), "&norotation"););); if (tour_stopsequence == false, if (stopspotsequence == false, txtadd(delayedname, %1, 'delay'); if(hotspot[%1].loaded, inc(hotspot[%1].frame,1,get(hotspot[%1].lastframe),0); mul(hotspot[%1].ypos,get(hotspot[%1].frame),get(hotspot[%1].frameheight)); txtadd(hotspot[%1].crop,'0|',get(hotspot[%1].ypos),'|',get(hotspot[%1].framewidth),'|',get(hotspot[%1].frameheight)); ); delayedcall(get(delayedname),%2,animate(%1,%2)); ); ); set(tour_stopsequence, false); set(stopspotsequence , false); animate(get(name), %1); set(hotspot[%1].stopspotsequence, true); txtadd(delayedname, %1, 'delay'); stopdelayedcall(get(delayedname)); if(tour_stopsequence == false, set(tour_stopsequence, true); ); if (tooltip !== null, getmessage(currentTooltipText, get(tooltip)); ifnot (currentTooltipText == "", txtadd(permanentTooltipForSpot, get(tooltip), '_permanent'); set(activateUsePermanentTooltip, false); if(%1 == "std", if(device.desktop, set(activateUsePermanentTooltip, true); ); , if(%1 == "touch", if(device.tablet OR device.mobile, set(activateUsePermanentTooltip, true); ); , set(activateUsePermanentTooltip, true); ); ); if(activateUsePermanentTooltip, addhotspot(get(permanentTooltipForSpot)); set(hotspot[get(permanentTooltipForSpot)].ath, get(hotspot[get(name)].ath)); set(hotspot[get(permanentTooltipForSpot)].atv, get(hotspot[get(name)].atv)); set(hotspot[get(permanentTooltipForSpot)].oy, calc(hotspot[get(name)].height / 2)); set(hotspot[get(permanentTooltipForSpot)].edge,top); set(hotspot[get(permanentTooltipForSpot)].type,text); set(hotspot[get(permanentTooltipForSpot)].bg,false); set(hotspot[get(permanentTooltipForSpot)].bgborder,0); set(hotspot[get(permanentTooltipForSpot)].css,'color:#ffffff;font-family:조선일보명조;font-weight:bold;font-size:14px;text-align:center;'); set(hotspot[get(permanentTooltipForSpot)].interactivecontent, false); set(hotspot[get(permanentTooltipForSpot)].zorder,3); set(hotspot[get(permanentTooltipForSpot)].padding,2); set(hotspot[get(permanentTooltipForSpot)].distorted,true); set(hotspot[get(permanentTooltipForSpot)].depth,1000); set(hotspot[get(permanentTooltipForSpot)].tag,"tooltip"); set(hotspot[get(permanentTooltipForSpot)].enabled,false); set(hotspot[get(permanentTooltipForSpot)].capture,false); set(hotspot[get(permanentTooltipForSpot)].visible, true); set(tooltipHtmlText, get(currentTooltipText)); escape(tooltipHtmlText); set(hotspot[get(permanentTooltipForSpot)].html, get(tooltipHtmlText)); ); ); ); for(set(hsi, 0), hsi LT hotspot.count, inc(hsi), if(hotspot[get(hsi)].tooltip !== NULL AND hotspot[get(hsi)].tooltip != "", txtadd(permTooltipName, get(hotspot[get(hsi)].tooltip), '_permanent'); if(permTooltipName, getmessage(changeTooltipTxt, get(hotspot[get(hsi)].tooltip)); escape(changeTooltipTxt); set(hotspot[get(permTooltipName)].html, get(changeTooltipTxt)); ); ); ); ifnot (tour_firststartactiondone, events.dispatch(onTourStart); set(tour_firststartactiondone, true); ); if(webvr.isenabled, if(%1 != null, set(vr_aclk_timeout, %1), set(vr_aclk_timeout, 2000)); copy(vr_aclk_t1, timertick); set(vr_aclk_waiting, true); copy(webvr.vr_aclk_hotspot, name); set(hotspot[vr_cursor].crop,'0|0|80|80'); asyncloop(vr_aclk_waiting AND webvr.vr_aclk_hotspot == name, sub(dt, timertick,vr_aclk_t1); if(!hovering, set(vr_aclk_waiting, false); set(hotspot[vr_cursor].crop,'0|0|80|80'); , div(f, dt, vr_aclk_timeout); mul(f, 16); roundval(f); Math.min(f, 16); mul(f, 80); txtadd(hotspot[vr_cursor].crop,get(f),'|0|80|80'); sub(dt, 100); if(dt GT vr_aclk_timeout, set(vr_aclk_waiting,false); set(hotspot[vr_cursor].crop,'0|0|80|80'); onclick(); hotspot[vr_cursor].onout(); ); ); ); ); if(nofullspherepanoavailable, webvr_onunavailable(); , set(webvr.worldscale,1.0); webvr.loadsettings(); set(layer[webvr_enterbutton].onclick, webvr.enterVR();set(visible, false); ); ); if(webvr.isfake AND device.desktop AND webvr.havesettings == false, set(webvr.mobilevr_lens_overlap, 1.0); set(webvr.mobilevr_lens_fov, 96.0); set(webvr.mobilevr_lens_dist, 0.0); set(webvr.mobilevr_lens_dist2, '1|0|0|0'); set(webvr.mobilevr_lens_ca, 0.0); set(webvr.mobilevr_lens_vign, 100); , set(webvr.ask_user_for_screensize,true); ); delayedcall(5.0, js(accessStdVr(get(xml.scene),get(videoscenestarttime)));); set(events[webvr_events].name, null); removelayer(webvr_button_text); removelayer(webvr_button_enter); removelayer(webvr_button_image); removelayer(webvr_enterbutton); removelayer(webvr_exitbutton); removelayer(webvr_setupbutton); removehotspot(vr_cursor); removeplugin(WebVR); delete(webvr); set(display.hotspotrenderer,''); addlayer(webvr_button_unavailable); set(layer[webvr_button_unavailable].type, 'text'); getmessage(vr_setup_ct_message, "vr_setup_unavailable"); set(layer[webvr_button_unavailable].html, get(vr_setup_ct_message)); set(layer[webvr_button_unavailable].bg, false); set(layer[webvr_button_unavailable].align, "center"); set(layer[webvr_button_unavailable].edge, "center"); set(layer[webvr_button_unavailable].txtshadow, '1.0 1.0 4.0 0xd5d5d5 1.0'); set(layer[webvr_button_unavailable].onclick, js(accessStdVr(get(xml.scene),get(videoscenestarttime)));); set(layer[webvr_button_unavailable].onloaded, if(device.mobile,set(css, 'color:#ffffff;font-size:24px;font-family:Arial,Helvetica,sans-serif;font-weight:bold;text-align:center;');,set(css, 'color:#ffffff;font-size:32px;font-family:Arial,Helvetica,sans-serif;font-weight:bold;text-align:center;')));" vr_tour_start(); set(layer[webvr_enterbutton].visible, false); if(webvr.ismobilevr == true AND !webvr.isfake AND webvr.ask_user_for_screensize == true AND webvr.mobilevr_screensize == 'auto', set(webvr.ask_user_for_screensize, false); vr_setup_advanced(); ); stopdelayedcall(vr_button_fadeout); set(layer[webvr_enterbutton].visible,true); set(layer[webvr_exitbutton].alpha,0); set(layer[webvr_setupbutton].alpha,0); set(layer[vr_rotate_device_required].alpha,0); js(accessStdVr(get(xml.scene),get(videoscenestarttime))); if(device.mobile AND webvr.isenabled, div(aspect, stagewidth, stageheight); if(aspect != lastaspect OR '%1' == 'true', copy(lastaspect, aspect); if(stagewidth GT stageheight, set(display.stereo, true); set(webvr.mobilevr_sensor_mode, 3); webvr.update(); tween(layer[vr_rotate_device_required].alpha, 0.0, 0.0); , set(display.stereo, false); set(webvr.mobilevr_sensor_mode, 1); webvr.update(); tween(layer[vr_rotate_device_required].alpha, 1.0); delayedcall(3.0, tween(layer[vr_rotate_device_required].alpha, 0.0, 1.0);); ); ); , set(lastaspect, 0); ); stopdelayedcall(vr_button_fadeout); if(webvr.ismobilevr, tween(layer[webvr_exitbutton].alpha|layer[webvr_setupbutton].alpha, 1.0|1.0, 0.25); , tween(layer[webvr_exitbutton].alpha, 1.0, 0.25); ); delayedcall(vr_button_fadeout,3, tween(layer[webvr_exitbutton].alpha|layer[webvr_setupbutton].alpha, 0.0|0.0, 1.0); ); vr_setup_close(false); if(webvr.vrsetup === null, def(webvr.vrsetup, object); ); copy(vrs, webvr.vrsetup); set(webvr.vr_cursor_enabled, false); tween(layer[webvr_exitbutton].alpha,0); tween(layer[webvr_setupbutton].alpha,0); addlayer(vr_setup_bg); set(layer[vr_setup_bg].type, container); set(layer[vr_setup_bg].bgcolor, 0x000000); set(layer[vr_setup_bg].bgalpha, 0.5); set(layer[vr_setup_bg].bgcapture, true); set(layer[vr_setup_bg].handcursor, false); set(layer[vr_setup_bg].align, lefttop); set(layer[vr_setup_bg].width, 100%); set(layer[vr_setup_bg].height, 100%); set(layer[vr_setup_bg].zorder, 99999); copy(i_screensize, webvr.mobilevr_screensize); if(i_screensize == 'auto', copy(i_screensize, webvr.devicesize)); if(i_screensize LE 0, set(i_screensize, 5.0)); roundval(i_screensize, 1); txtadd(i_screensize, ' inch'); copy(i_ipd, webvr.mobilevr_ipd); roundval(i_ipd, 1); txtadd(i_ipd, ' mm'); copy(i_fov, webvr.mobilevr_lens_fov); roundval(i_fov, 1); copy(i_dist, webvr.mobilevr_lens_dist); roundval(i_dist, 2); copy(i_dist2, webvr.mobilevr_lens_dist2); txtsplit(i_dist2, '|', vrs.i_dist2_k1, vrs.i_dist2_k2, vrs.i_dist2_k3, vrs.i_dist2_k4); mul(vrs.i_dist2_k1,1); mul(vrs.i_dist2_k2,10); mul(vrs.i_dist2_k3,10); mul(vrs.i_dist2_k4,10); roundval(vrs.i_dist2_k1,3); roundval(vrs.i_dist2_k2,3); roundval(vrs.i_dist2_k3,3); roundval(vrs.i_dist2_k4,3); copy(i_vig, webvr.mobilevr_lens_vign); roundval(i_vig, 0); copy(i_overlap, webvr.mobilevr_lens_overlap); roundval(i_overlap, 2); copy(i_ca, webvr.mobilevr_lens_ca); roundval(i_ca, 3); set(i_headset, 'Custom'); for(set(vrheadi,0), vrheadi LT vrheadsets.headset.count, inc(vrheadi), copy(hs, vrheadsets.headset[get(vrheadi)]); if(i_fov == hs.fov AND i_dist == hs.dist AND i_vig == hs.vig AND i_overlap == hs.overlap AND i_dist2 == hs.dist2 AND i_ca == hs.ca, copy(i_headset, hs.caption); ); ); set(known_size, true); set(sizcol, #FFFFFF); copy(i_devicename, webvr.devicename); if(i_devicename == 'Unknown', if(webvr.mobilevr_screensize == 'auto', set(sizcol, #AA0000); set(known_size, false); , set(i_devicename, 'Custom'); ); ); vr_setup(); copy(vrs, webvr.vrsetup); set(layer[vr_setup_m1].visible, false); set(layer[vr_setup_m2].visible, false); set(layer[vr_setup_m3].visible, false); addlayer(vr_setup_m4); set(layer[vr_setup_m4].type, container); set(layer[vr_setup_m4].parent, vr_setup_bg); set(layer[vr_setup_m4].align, lefttop); set(layer[vr_setup_m4].width, 100%); set(layer[vr_setup_m4].height, 100%); set(layer[vr_setup_m4].visible, true); set(vrs.vr_setup_text_parent, 'vr_setup_m4'); vr_setup_createtext(vr_setup_hmd0, '', center, center, 0, -140, #FFFFFF, false); vr_setup_createimage(vr_setup_hmd4, get(i_headset), center, center, 0, -20, #FFFFFF, true, vr_setup_select('headset_simple'), , vr_setup_save()); vr_setup_createtext(vr_setup_hmd2, get(i_headset), center, center, 0, 100, #FFFFFF, false); vr_setup_createtext(vr_setup_advanced, '', center, center, 0, 140, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_advanced()); vr_setup_createbutton(vr_setup_btn1, '<', left, left, 5%, 0, #FFFFFF, true, null); vr_setup_createbutton(vr_setup_btn2, '>', right, right, 5%, 0, #FFFFFF, true, null); vr_setup_select('headset_simple', true); vr_setup(); copy(vrs, webvr.vrsetup); set(layer[vr_setup_m4].visible, false); addlayer(vr_setup_m1); set(layer[vr_setup_m1].type, container); set(layer[vr_setup_m1].parent, vr_setup_bg); set(layer[vr_setup_m1].align, lefttop); set(layer[vr_setup_m1].width, 100%); set(layer[vr_setup_m1].height, 100%); set(layer[vr_setup_m1].visible, true); addlayer(vr_setup_m3); set(layer[vr_setup_m3].type, container); set(layer[vr_setup_m3].parent, vr_setup_bg); set(layer[vr_setup_m3].align, lefttop); set(layer[vr_setup_m3].width, 100%); set(layer[vr_setup_m3].height, 100%); set(layer[vr_setup_m3].visible, false); addlayer(vr_setup_m2); set(layer[vr_setup_m2].type, container); set(layer[vr_setup_m2].parent, vr_setup_bg); set(layer[vr_setup_m2].align, lefttop); set(layer[vr_setup_m2].width, 100%); set(layer[vr_setup_m2].height, 100%); set(layer[vr_setup_m2].visible, false); set(vrs.vr_setup_text_parent, 'vr_setup_m1'); vr_setup_createtext(vr_setup_title, '', center, center, 0, -160, #FFFFFF, false); vr_setup_createtext(vr_setup_dvn1, '', center, right, 0, -115, #FFFFFF, true, vr_setup_select('screen')); vr_setup_createtext(vr_setup_dvn2, get(i_devicename), center, left, 0, -115, get(sizcol), true, vr_setup_select('screen')); vr_setup_createtext(vr_setup_siz1, '', center, right, 0, -85, #FFFFFF, true, vr_setup_select('screen')); vr_setup_createtext(vr_setup_siz2, get(i_screensize), center, left, 0, -85, get(sizcol), true, vr_setup_select('screen')); vr_setup_createtext(vr_setup_ipd1, '', center, right, 0, -40, #FFFFFF, true, vr_setup_select('ipd')); vr_setup_createtext(vr_setup_ipd2, get(i_ipd), center, left, 0, -40, #FFFFFF, true, vr_setup_select('ipd')); vr_setup_createtext(vr_setup_hmd1, '', center, right, 0, +5, #FFFFFF, true, vr_setup_select('headset')); vr_setup_createtext(vr_setup_hmd2, get(i_headset), center, left, 0, +5, #FFFFFF, true, vr_setup_select('headset')); vr_setup_createtext(vr_setup_hmd3, '', center, center, 0, +35, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_customize_headset()); if(webvr.iswebvr == false, vr_setup_createtext(vr_setup_cal, '', center, center, 0, +80, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_calibration()); ); vr_setup_createtext(vr_setup_sav , '', center, right, -20, +125, #00AA00, true, set(bg,true), set(bg,false), vr_setup_save()); vr_setup_createtext(vr_setup_rst , '', center, left , +20, +125, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_reset()); vr_setup_createtext(vr_setup_simple, '', center, right, -20, +155, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_simple()); vr_setup_createtext(vr_setup_cls , '', center, left , +20, +155, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_close(true)); vr_setup_createbutton(vr_setup_btn1, '<', left, left, 5%, 0, #FFFFFF, true, null); vr_setup_createbutton(vr_setup_btn2, '>', right, right, 5%, 0, #FFFFFF, true, null); set(vrs.vr_setup_text_parent, 'vr_setup_m3'); vr_setup_createtext(vr_setup_m31, '', center, center, 0, -160, #FFFFFF, false); vr_setup_createtext(vr_setup_fov1, '', center, right, 0, -75, #FFFFFF, true, vr_setup_select('fov')); vr_setup_createtext(vr_setup_fov2, get(i_fov), center, left, 0, -75, #FFFFFF, true, vr_setup_select('fov')); vr_setup_createtext(vr_setup_dst1, '', center, right, 0, -40, #FFFFFF, true, vr_setup_select('dist')); vr_setup_createtext(vr_setup_dst2, get(i_dist), center, left, 0, -40, #FFFFFF, true, vr_setup_select('dist')); vr_setup_createtext(vr_setup_d2tx, '', center, right, 0, -5, #FFFFFF, true, vr_setup_select('dist2k1')); vr_setup_createtext(vr_setup_d2k1, get(vrs.i_dist2_k1), center, left, 0, -5, #FFFFFF, true, vr_setup_select('dist2k1')); vr_setup_createtext(vr_setup_d2k2, get(vrs.i_dist2_k2), center, left, +100, -5, #FFFFFF, true, vr_setup_select('dist2k2')); vr_setup_createtext(vr_setup_d2k3, get(vrs.i_dist2_k3), center, left, +200, -5, #FFFFFF, true, vr_setup_select('dist2k3')); vr_setup_createtext(vr_setup_d2k4, get(vrs.i_dist2_k4), center, left, +300, -5, #FFFFFF, true, vr_setup_select('dist2k4')); vr_setup_createtext(vr_setup_cac1, '', center, right, 0, +30, #FFFFFF, true, vr_setup_select('ca')); vr_setup_createtext(vr_setup_cac2, get(i_ca), center, left, 0, +30, #FFFFFF, true, vr_setup_select('ca')); vr_setup_createtext(vr_setup_vig1, '', center, right, 0, +65, #FFFFFF, true, vr_setup_select('vignette')); vr_setup_createtext(vr_setup_vig2, get(i_vig), center, left, 0, +65, #FFFFFF, true, vr_setup_select('vignette')); vr_setup_createtext(vr_setup_olp1, '', center, right, 0, +100, #FFFFFF, true, vr_setup_select('overlap')); vr_setup_createtext(vr_setup_olp2, get(i_overlap), center, left, 0, +100, #FFFFFF, true, vr_setup_select('overlap')); vr_setup_createtext(vr_setup_m35, '', center, center, 0, +160, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_close_sub_menus() ); set(vrs.vr_setup_text_parent, 'vr_setup_m2'); vr_setup_createtext(vr_setup_cb1, '', center, center, 0, -160, #FFFFFF, false); vr_setup_createtext(vr_setup_cb2, '', center, center, 0, -80, #FFFFFF, false, vr_setup_select('screen')); vr_setup_createtext(vr_setup_cb3, '', center, center, 0, +40, #00AA00, true, set(bg,true), set(bg,false), vr_setup_do_calibration()); vr_setup_createtext(vr_setup_cb4, '', center, center, 0, +80, #FFFFFF, true, set(bg,true), set(bg,false), webvr.resetcalibration()); vr_setup_createtext(vr_setup_cb5, '', center, center, 0, +160, #FFFFFF, true, set(bg,true), set(bg,false), vr_setup_close_sub_menus()); vr_setup_createtext(vr_setup_cb6, '', center, center, 0, +120, #FFFFFF, false, null); vr_setup_createtext(vr_setup_cb7, '', center, center, 0, +120, #00AA00, false, null); vr_setup_createtext(vr_setup_cb8, '', center, center, 0, +120, #AA0000, false, null); set(layer[vr_setup_cb6].autoalpha, true); set(layer[vr_setup_cb7].autoalpha, true); set(layer[vr_setup_cb8].autoalpha, true); set(layer[vr_setup_cb6].alpha, 0.0); set(layer[vr_setup_cb7].alpha, 0.0); set(layer[vr_setup_cb8].alpha, 0.0); if(known_size == false, vr_setup_select('screen', true); , vr_setup_select('ipd', true); ); addlayer(%1); set(layer[%1].parent, get(webvr.vrsetup.vr_setup_text_parent)); set(layer[%1].type, 'text'); if(device.mobile, set(layer[%1].css, 'color:%7;font-size:24px;font-weight:bold;font-family:Arial,Helvetica,sans-serif;'); , set(layer[%1].css, 'color:%7;font-size:32px;font-weight:bold;font-family:Arial,Helvetica,sans-serif;'); ); set(layer[%1].padding, 0 8); set(layer[%1].bgroundedge, 8); set(layer[%1].bg, false); set(layer[%1].bgcolor, 0xFFFFFF); set(layer[%1].bgalpha, 0.25); set(layer[%1].align, %3); set(layer[%1].edge, %4); set(layer[%1].x, %5); set(layer[%1].y, %6); if ('%2' == '', getmessage(vr_setup_ct_message, %1); set(layer[%1].html, get(vr_setup_ct_message)); , set(layer[%1].html, %2); ); set(layer[%1].enabled, %8); set(layer[%1].ondown, %9); set(layer[%1].onup, %10); set(layer[%1].onclick, %11); vr_setup_createtext(%1,%2,%3,%4,%5,%6,%7,%8,%9); if(device.mobile, set(layer[%1].css, 'vertical-align:middle;text-align:center;color:%7;font-size:42px;font-weight:bold;font-family:Arial,Helvetica,sans-serif;'); set(layer[%1].width, 54); set(layer[%1].height, 54); , set(layer[%1].css, 'vertical-align:middle;text-align:center;color:%7;font-size:48px;font-weight:bold;font-family:Arial,Helvetica,sans-serif;'); set(layer[%1].width, 60); set(layer[%1].height, 60); ); set(layer[%1].bg, true); set(layer[%1].padding, 0); set(layer[%1].bgroundedge, 8); set(layer[%1].vcenter, true); addlayer(%1); set(layer[%1].parent, get(webvr.vrsetup.vr_setup_text_parent)); set(hmd_headset, %2); txtreplace(hmd_headset, ' ', ''); txtadd(imgurl, '%FIRSTXML%/graphics/', get(hmd_headset), '.png'); set(layer[%1].url, get(imgurl)); set(layer[%1].align, %3); set(layer[%1].edge, %4); set(layer[%1].x, %5); set(layer[%1].y, %6); set(layer[%1].width, 266); set(layer[%1].height, 174); set(layer[%1].vcenter, true); set(layer[%1].enabled, %8); set(layer[%1].ondown, %9); set(layer[%1].onup, %10); set(layer[%1].onclick, %11); set(webvr.mobilevr_screensize, 'auto'); copy(i_screensize, webvr.devicesize); if(i_screensize LE 0, set(i_screensize, 5.0)); roundval(i_screensize, 1); set(layer[vr_setup_dvn2].html, get(webvr.devicename)); txtadd(layer[vr_setup_siz2].html, get(i_screensize), ' inch'); set(webvr.mobilevr_ipd, 63.5); copy(i_ipd, webvr.mobilevr_ipd); roundval(i_ipd, 1); txtadd(layer[vr_setup_ipd2].html, get(i_ipd), ' mm'); set(webvr.mobilevr_lens_fov, 100.0); set(webvr.mobilevr_lens_dist, 0.50); set(webvr.mobilevr_lens_dist2, 1.000|0.000|0.000|0.000); set(webvr.mobilevr_lens_vign, 100); set(webvr.mobilevr_lens_overlap, 1.00); set(webvr.mobilevr_lens_ca, 0.000); if(webvr.isfake AND device.desktop, vr_setup_change_headset(-1); , vr_setup_change_headset(1); ); copy(vrs, webvr.vrsetup); vr_setup_select(get(vrs.var)); removelayer(vr_setup_bg, true); if(%1 == true, set(webvr.vr_cursor_enabled, true); ); webvr.saveSettings(); vr_setup_close(true); set(layer[vr_setup_m1].visible,false); set(layer[vr_setup_m2].visible,false); set(layer[vr_setup_m3].visible,true); set(layer[vr_setup_hmd1].parent, vr_setup_m3); set(layer[vr_setup_hmd2].parent, vr_setup_m3); set(layer[vr_setup_btn1].parent, vr_setup_m3); set(layer[vr_setup_btn2].parent, vr_setup_m3); set(layer[vr_setup_hmd1].y, -110); set(layer[vr_setup_hmd2].y, -110); copy(vrs, webvr.vrsetup); copy(vrs.old_selection, vrs.var); vr_setup_select('headset'); set(layer[vr_setup_m1].visible,false); set(layer[vr_setup_m2].visible,true); set(layer[vr_setup_m1].visible,true); set(layer[vr_setup_m2].visible,false); set(layer[vr_setup_m3].visible,false); set(layer[vr_setup_hmd1].parent, vr_setup_m1); set(layer[vr_setup_hmd2].parent, vr_setup_m1); set(layer[vr_setup_btn1].parent, vr_setup_m1); set(layer[vr_setup_btn2].parent, vr_setup_m1); set(layer[vr_setup_hmd1].y, +5); set(layer[vr_setup_hmd2].y, +5); copy(vrs, webvr.vrsetup); if(vrs.old_selection, vr_setup_select(get(vrs.old_selection)); delete(vrs.old_selection); ); copy(vrs, webvr.vrsetup); txtadd(webvr.mobilevr_lens_dist2, get(vrs.i_dist2_k1), '|', calc(vrs.i_dist2_k2/10.0), '|', calc(vrs.i_dist2_k3/10.0), '|', calc(vrs.i_dist2_k4/10.0)); vr_setup_change_headset(0); if(!webvr.isfake, tween(layer[vr_setup_cb6].alpha, 1.0, 0.1); tween(layer[vr_setup_cb7].alpha, 0.0, 0.1); tween(layer[vr_setup_cb8].alpha, 0.0, 0.1); webvr.calibrate( tween(layer[vr_setup_cb6].alpha, 0.0, 0.1); tween(layer[vr_setup_cb7].alpha, 1.0, 0.1); delayedcall(2.0, tween(layer[vr_setup_cb7].alpha, 0.0, 0.25)); , tween(layer[vr_setup_cb6].alpha, 0.0, 0.1); tween(layer[vr_setup_cb8].alpha, 1.0, 0.1); delayedcall(2.0, tween(layer[vr_setup_cb8].alpha, 0.0, 0.25)); ); ); copy(vrs, webvr.vrsetup); set(layer[vr_setup_siz2].bg, false); set(layer[vr_setup_ipd2].bg, false); set(layer[vr_setup_hmd2].bg, false); set(layer[vr_setup_fov2].bg, false); set(layer[vr_setup_dst2].bg, false); set(layer[vr_setup_d2k1].bg, false); set(layer[vr_setup_d2k2].bg, false); set(layer[vr_setup_d2k3].bg, false); set(layer[vr_setup_d2k4].bg, false); set(layer[vr_setup_vig2].bg, false); set(layer[vr_setup_cac2].bg, false); set(layer[vr_setup_olp2].bg, false); set(layer[vr_setup_btn1].ondown, vr_setup_change_ondown(-1)); set(layer[vr_setup_btn2].ondown, vr_setup_change_ondown(+1)); set(vrs.setting, null); set(vrs.var, %1); set(vrs.var_value, null); set(vrs.var_callback, null); if(%1 == 'screen', set(vrs.setting, vr_setup_siz2); set(vrs.var_name, 'webvr.mobilevr_screensize'); set(vrs.var_postfix, ' inch'); copy(vrs.var_value, get(vrs.var_name)); if(vrs.var_value == 'auto', set(vrs.var_value, 5.0)); set(vrs.var_step, 0.1); set(vrs.var_min, 4); set(vrs.var_max, 10); set(vrs.var_round, 1); set(vrs.var_callback, vr_setup_change_screen()); ); if(%1 == 'ipd', set(vrs.setting, vr_setup_ipd2); set(vrs.var_name, 'webvr.mobilevr_ipd'); set(vrs.var_postfix, ' mm'); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.1); set(vrs.var_min, 40); set(vrs.var_max, 80); set(vrs.var_round, 1); ); if(%1 == 'headset_simple', set(vrs.setting, vr_setup_hmd4); set(layer[vr_setup_btn1].ondown, vr_setup_change_headset(-1)); set(layer[vr_setup_btn2].ondown, vr_setup_change_headset(+1)); ); if(%1 == 'headset', set(vrs.setting, vr_setup_hmd2); set(layer[vr_setup_btn1].ondown, vr_setup_change_headset(-1)); set(layer[vr_setup_btn2].ondown, vr_setup_change_headset(+1)); ); if(%1 == 'fov', set(vrs.setting, vr_setup_fov2); set(vrs.var_name, 'webvr.mobilevr_lens_fov'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.1); set(vrs.var_min, 40); set(vrs.var_max, 179); set(vrs.var_round, 1); set(vrs.var_callback, vr_setup_change_headset(0)); ); if(%1 == 'dist', set(vrs.setting, vr_setup_dst2); set(vrs.var_name, 'webvr.mobilevr_lens_dist'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.01); set(vrs.var_min, 0); set(vrs.var_max, 5); set(vrs.var_round, 2); set(vrs.var_callback, vr_setup_change_headset(0)); ); if(%1 == 'dist2k1', set(vrs.setting, vr_setup_d2k1); set(vrs.var_name, 'webvr.vrsetup.i_dist2_k1'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.001); set(vrs.var_min, -9); set(vrs.var_max, +9); set(vrs.var_round, 3); set(vrs.var_callback, vr_setup_update_dist2()); ); if(%1 == 'dist2k2', set(vrs.setting, vr_setup_d2k2); set(vrs.var_name, 'webvr.vrsetup.i_dist2_k2'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.001); set(vrs.var_min, -9); set(vrs.var_max, +9); set(vrs.var_round, 3); set(vrs.var_callback, vr_setup_update_dist2()); ); if(%1 == 'dist2k3', set(vrs.setting, vr_setup_d2k3); set(vrs.var_name, 'webvr.vrsetup.i_dist2_k3'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.001); set(vrs.var_min, -9); set(vrs.var_max, +9); set(vrs.var_round, 3); set(vrs.var_callback, vr_setup_update_dist2()); ); if(%1 == 'dist2k4', set(vrs.setting, vr_setup_d2k4); set(vrs.var_name, 'webvr.vrsetup.i_dist2_k4'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.001); set(vrs.var_min, -9); set(vrs.var_max, +9); set(vrs.var_round, 3); set(vrs.var_callback, vr_setup_update_dist2()); ); if(%1 == 'vignette', set(vrs.setting, vr_setup_vig2); set(vrs.var_name, 'webvr.mobilevr_lens_vign'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 1); set(vrs.var_min, 0); set(vrs.var_max, 100); set(vrs.var_round, 0); set(vrs.var_callback, vr_setup_change_headset(0)); ); if(%1 == 'ca', set(vrs.setting, vr_setup_cac2); set(vrs.var_name, 'webvr.mobilevr_lens_ca'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.001); set(vrs.var_min, -1.0); set(vrs.var_max, +1.0); set(vrs.var_round, 3); set(vrs.var_callback, vr_setup_change_headset(0)); ); if(%1 == 'overlap', set(vrs.setting, vr_setup_olp2); set(vrs.var_name, 'webvr.mobilevr_lens_overlap'); set(vrs.var_postfix, ''); copy(vrs.var_value, get(vrs.var_name)); set(vrs.var_step, 0.01); set(vrs.var_min, 0.5); set(vrs.var_max, 2.0); set(vrs.var_round, 2); set(vrs.var_callback, vr_setup_change_headset(0) ); ); if(vrs.setting != null, set(layer[get(vrs.setting)].bg, true); if(%2 == true, set(layer[vr_setup_btn1].y, get(layer[get(vrs.setting)].y)); set(layer[vr_setup_btn2].y, get(layer[get(vrs.setting)].y)); , tween(layer[vr_setup_btn1].y, get(layer[get(vrs.setting)].y)); tween(layer[vr_setup_btn2].y, get(layer[get(vrs.setting)].y)); ); ); set(layer[vr_setup_dvn2].html, 'Custom'); if(device.mobile, set(layer[vr_setup_dvn2].css, 'color:#FFFFFF;font-size:24px;font-weight:bold;'); set(layer[vr_setup_siz2].css, 'color:#FFFFFF;font-size:24px;font-weight:bold;'); , set(layer[vr_setup_dvn2].css, 'color:#FFFFFF;font-size:32px;font-weight:bold;'); set(layer[vr_setup_siz2].css, 'color:#FFFFFF;font-size:32px;font-weight:bold;'); ); copy(t0,timertick); set(t1,0); asyncloop(pressed, copy(t2,timertick); sub(dt,t2,t1); if(dt GT 100, copy(t1,t2); sub(dt,t1,t0); div(dt,1000); Math.max(dt,1); mul(dt,%1); vr_setup_adjust(get(dt)); ); ); copy(vrs, webvr.vrsetup); if(vrs.setting != null, mul(change, vrs.var_step, %1); add(vrs.var_value, change); Math.max(vrs.var_value, vrs.var_min); Math.min(vrs.var_value, vrs.var_max); roundval(vrs.var_value, get(vrs.var_round)); tween(get(vrs.var_name), get(vrs.var_value), 0.1); txtadd(layer[get(vrs.setting)].html, get(vrs.var_value), get(vrs.var_postfix)); if(vrs.var_callback != null, vrs.var_callback()); ); set(i_headset, 'Custom'); if(%1 != 0, copy(i_fov, webvr.mobilevr_lens_fov); roundval(i_fov, 1); copy(i_dist, webvr.mobilevr_lens_dist); roundval(i_dist, 2); copy(i_dist2, webvr.mobilevr_lens_dist2); copy(i_vig, webvr.mobilevr_lens_vign); roundval(i_vig, 0); copy(i_ca, webvr.mobilevr_lens_ca); roundval(i_ca, 3); copy(i_overlap, webvr.mobilevr_lens_overlap); roundval(i_overlap, 2); set(i_hsindex, -1); copy(i_hscount, vrheadsets.headset.count); for(set(vrheadj,0), vrheadj LT i_hscount, inc(vrheadj), copy(hs, vrheadsets.headset[get(vrheadj)]); if(i_fov == hs.fov AND i_dist == hs.dist AND i_vig == hs.vig AND i_overlap == hs.overlap AND i_dist2 == hs.dist2 AND i_ca == hs.ca, copy(i_hsindex, vrheadj); copy(i_headset, hs.caption); ); ); if(%1 GT 0, add(i_hsindex, 1); if(i_hsindex GE i_hscount, set(i_hsindex,0)); , sub(i_hsindex, 1); if(i_hsindex LT 0, sub(i_hsindex,i_hscount,1)); ); copy(hs, vrheadsets.headset[get(i_hsindex)]); copy(i_headset, hs.caption); copy(i_fov, hs.fov); copy(i_dist, hs.dist); copy(i_dist2, hs.dist2); copy(i_vig, hs.vig); copy(i_ca, hs.ca); copy(i_overlap, hs.overlap); ); copy(layer[vr_setup_hmd2].html, i_headset); txtreplace(hmd_headset, i_headset, ' ', ''); txtadd(imgurl, '%FIRSTXML%/graphics/', get(hmd_headset), '.png'); set(layer[vr_setup_hmd4].url, get(imgurl)); if(%1 != 0, copy(webvr.mobilevr_lens_fov, i_fov); copy(webvr.mobilevr_lens_dist, i_dist); copy(webvr.mobilevr_lens_dist2, i_dist2); copy(webvr.mobilevr_lens_vign, i_vig); copy(webvr.mobilevr_lens_ca, i_ca); copy(webvr.mobilevr_lens_overlap, i_overlap); copy(layer[vr_setup_fov2].html, i_fov); copy(layer[vr_setup_dst2].html, i_dist); copy(layer[vr_setup_vig2].html, i_vig); copy(layer[vr_setup_olp2].html, i_overlap); copy(layer[vr_setup_cac2].html, i_ca); txtsplit(i_dist2, '|', i_dist2_k1, i_dist2_k2, i_dist2_k3, i_dist2_k4); mul(i_dist2_k1,1); mul(i_dist2_k2,10); mul(i_dist2_k3,10); mul(i_dist2_k4,10); roundval(i_dist2_k1,3); roundval(i_dist2_k2,3); roundval(i_dist2_k3,3); roundval(i_dist2_k4,3); copy(layer[vr_setup_d2k1].html, i_dist2_k1); copy(layer[vr_setup_d2k2].html, i_dist2_k2); copy(layer[vr_setup_d2k3].html, i_dist2_k3); copy(layer[vr_setup_d2k4].html, i_dist2_k4); ); if(keycode==17,set(tour_ctrlPressed,true);,if(tour_ctrlPressed==true,if(keycode==96,hideTooltip();lookto(get(panoview.h),get(panoview.v),get(panoview.fov));););); if(keycode==17,set(tour_ctrlPressed,false);); ifnot (scene[get(xml.scene)].seen, set(scene[get(xml.scene)].seen, true); events.dispatch(onSeenStateChanged); if (scene[get(xml.scene)].group, copy(currentgroup, scene[get(xml.scene)].group); ifnot (panoramagroup[get(currentgroup)].seen, set(groupseen, true); for( copy(sceneindex, scene[get(panoramagroup[get(currentgroup)].mainscene)].index), (scene[get(sceneindex)].group == currentgroup) AND groupseen, inc(sceneindex), ifnot (scene[get(sceneindex)].seen, set(groupseen, false); ); ); if (groupseen, set(panoramagroup[get(currentgroup)].seen, true); events.dispatch(ongroupseenstatechanged); ); ); ); inc(tour_nbseenscenes); if (tour_nbseenscenes == scene.count, events.dispatch(onallsceneseen); ); );