123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- 'use strict';
- window.addEventListener('load', function() {
-
- (function() {
-
- var params = v3d.AppUtils.getPageParams();
-
- var PUZZLES_DIR = '../../puzzles/';
- var logicURL = params.logic ? params.logic : '__LOGIC__visual_logic.js'.replace('__LOGIC__', '');
- var sceneURL = params.load ? params.load : '__URL__iris_puzzles.gltf'.replace('__URL__', '');
- if (!sceneURL) {
- console.log('No scene URL specified');
- return;
- }
-
- // some puzzles can benefit from cache
- v3d.Cache.enabled = true;
-
- if (v3d.AppUtils.isXML(logicURL)) {
- var logicURLJS = logicURL.match(/(.*)\.xml$/)[1] + '.js';
- new v3d.PuzzlesLoader().loadEditorWithLogic(PUZZLES_DIR, logicURLJS,
- function() {
- var initOptions = v3d.PL ? v3d.PL.execInitPuzzles().initOptions
- : { useFullscreen: true };
- loadScene(sceneURL, initOptions);
- }
- );
- } else if (v3d.AppUtils.isJS(logicURL)) {
- new v3d.PuzzlesLoader().loadLogic(logicURL, function() {
- var initOptions = v3d.PL ? v3d.PL.execInitPuzzles().initOptions
- : { useFullscreen: true };
- loadScene(sceneURL, initOptions);
- });
- } else {
- loadScene(sceneURL, { useFullscreen: true });
- }
- })();
-
- function loadScene(sceneURL, initOptions) {
-
- initOptions = initOptions || {};
-
- var ctxSettings = {};
- if (initOptions.useBkgTransp) ctxSettings.alpha = true;
- if (initOptions.preserveDrawBuf) ctxSettings.preserveDrawingBuffer = true;
- <<<<<<< HEAD
- /*
- =======
-
- >>>>>>> 83c2b9870597ee999f38d78b893a91a035ffe4af
- var preloader = initOptions.useCustomPreloader
- ? createCustomPreloader(initOptions.preloaderProgressCb,
- initOptions.preloaderEndCb)
- : new v3d.SimplePreloader({ container: 'container' });
- <<<<<<< HEAD
- */
- var preloader = new v3d.SimplePreloader({ container: 'container' });
- //preloader.background.style.opacity = 0;
- preloader.background.style.backgroundColor = 'black';
- preloader.background.style.textColor = 'white';
-
- =======
- >>>>>>> 83c2b9870597ee999f38d78b893a91a035ffe4af
-
- var app = new v3d.App('container', ctxSettings, preloader);
- if (initOptions.useBkgTransp) {
- app.clearBkgOnLoad = true;
- app.renderer.setClearColor(0x000000, 0);
- }
-
- // namespace for communicating with code generated by Puzzles
- app.ExternalInterface = {};
- prepareExternalInterface(app);
-
- if (initOptions.preloaderStartCb) initOptions.preloaderStartCb();
- if (initOptions.useFullscreen) {
- initFullScreen();
- } else {
- var fsButton = document.getElementById('fullscreen_button');
- if (fsButton) fsButton.style.display = 'none';
- }
-
- sceneURL = initOptions.useCompAssets ? sceneURL + '.xz' : sceneURL;
- app.loadScene(sceneURL, function() {
- app.enableControls();
- app.run();
-
- if (v3d.PE) v3d.PE.updateAppInstance(app);
- if (v3d.PL) v3d.PL.init(app, initOptions);
-
- runCode(app);
- }, null, function() {
- console.log('Can\'t load the scene ' + sceneURL);
- });
-
- return app;
- }
-
- function createCustomPreloader(updateCb, finishCb) {
- function CustomPreloader() {
- v3d.Preloader.call(this);
- }
-
- CustomPreloader.prototype = Object.assign(Object.create(v3d.Preloader.prototype), {
- onUpdate: function(percentage) {
- v3d.Preloader.prototype.onUpdate.call(this, percentage);
- if (updateCb) updateCb(percentage);
- },
- onFinish: function() {
- v3d.Preloader.prototype.onFinish.call(this);
- if (finishCb) finishCb();
- }
- });
-
- return new CustomPreloader();
- }
-
- function initFullScreen() {
-
- var fsButton = document.getElementById('fullscreen_button');
- if (!fsButton) return;
-
- if (document.fullscreenEnabled ||
- document.webkitFullscreenEnabled ||
- document.mozFullScreenEnabled ||
- document.msFullscreenEnabled)
- fullscreen_button.style.display = 'inline';
-
- fullscreen_button.addEventListener('click', function(event) {
- event.stopPropagation();
- if (document.fullscreenElement ||
- document.webkitFullscreenElement ||
- document.mozFullScreenElement ||
- document.msFullscreenElement) {
- exitFullscreen();
- } else
- requestFullscreen(document.body);
- });
-
- function changeFullscreen() {
- if (document.fullscreenElement ||
- document.webkitFullscreenElement ||
- document.mozFullScreenElement ||
- document.msFullscreenElement)
- fullscreen_button.className = 'fullscreen-close';
- else
- fullscreen_button.className = 'fullscreen-open';
- }
-
- document.addEventListener('webkitfullscreenchange', changeFullscreen);
- document.addEventListener('mozfullscreenchange', changeFullscreen);
- document.addEventListener('msfullscreenchange', changeFullscreen);
- document.addEventListener('fullscreenchange', changeFullscreen);
-
- function requestFullscreen(elem) {
- if (elem.requestFullscreen)
- elem.requestFullscreen();
- else if (elem.mozRequestFullScreen)
- elem.mozRequestFullScreen();
- else if (elem.webkitRequestFullscreen)
- elem.webkitRequestFullscreen();
- else if (elem.msRequestFullscreen)
- elem.msRequestFullscreen();
- }
-
- function exitFullscreen() {
- if (document.exitFullscreen)
- document.exitFullscreen();
- else if (document.mozCancelFullScreen)
- document.mozCancelFullScreen();
- else if (document.webkitExitFullscreen)
- document.webkitExitFullscreen();
- else if (document.msExitFullscreen)
- document.msExitFullscreen();
- }
- }
-
- function prepareExternalInterface(app) {
- // register functions in the app.ExternalInterface to call them from Puzzles, e.g:
- // app.ExternalInterface.myJSFunction = function() {
- // console.log('Hello, World!');
- // }
- app.ExternalInterface.startVideo = function(){
- console.log("Yo");
- //$( "#background" ).append('<iframe id="youtubeframe" width="100%" height="100%" src="https://www.youtube.com/embed/31EP42tR1ao?autoplay=1&mute=1&controls=0&showinfo=0&autohide=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>');
- }
-
- }
-
- function runCode(app) {
- // add your code here, e.g. console.log('Hello, World!');
-
- }
-
- });
|