window.addEventListener("beforeunload", function(event) { submitAnalyticData("page", "pagetime", window.pageseconds); clearInterval(window.pagecounter); window.pagecounter = null; }); console.log("loaded") var baseUrl = "https://" + window.location.hostname; var userLang = navigator.language || navigator.userLanguage; if (os != "Mac OS" && os != "iOS") { //userLang = userLang.substring(0,2); } /* //For debug puposes var old = alert; alert = function() { console.log(new Error().stack); old.apply(window, arguments); }; */ var sPath = document.getElementById('postname').value; var model = ""; let mpSdk; var tourtype = "matterport"; var ppInMpControls = "1"; var clickedObjPos = ""; var clickedObjRot = ""; var clickedObjSca = ""; var initialLoad = 0; var gsPlayed = []; var dockRemove = 1; var rendererPixelIncrease = 0; if (typeof addedtagsdisable == "undefined") { addedtagsdisable = "0"; } if (typeof tagsversion == "undefined") { tagsversion = "1"; } var sweepDivExists = 0; var gsPlaying = ""; var clickedObjParentName = ""; var srcImageData = ""; var movingVid = false; var mainScene; var vidInterval; var poseCache; var intersectionCache; var hastags = 0; var isPaused = false; var endticker = false; var currentSweepArray = []; var sweepLookupArray = []; var defdesc = "Click tag to learn more"; var deftitle = ""; var sweepCollection = []; var tagOrDest = ""; var mobile = false; var hasMouse = false; var hasTouch = false; var firstcurvedposition; var sweepstarted = false; var playstarted = false; var toggletranscripts = 1; var thisVideo; var posevar = null; var newsrc = "" var tickertime = 0; var hlsObj = {}; var tagcollection = []; if (/Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { mobile = true; } if (window.matchMedia("(any-pointer: coarse)").matches) { hasTouch = true; } if (window.matchMedia('(pointer:fine)').matches) { hasMouse = true; } var iPad = false; if (navigator.userAgent.match(/Mac/) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2) { iPad = true; } var iframe = document.getElementById("showcase_iframe"); var iframeWin = iframe.contentWindow; let root = document.documentElement; var intersectionCache; var initialVar = 0; var moveTo; var startButton; var hrExists; var tId = null; var xcoord = null; var ycoord = null; var zcoord = null; var stem_coord = null; var lookup = []; var tag; const dummyfunction = function () { } var addTagBtn; var addFixedTagBtn; var addingTag = false; var movingTag = false; var newTag; var divcameraPose; var addFixedTag; var mediatype = ""; var mediacss = ""; var naturalHeight = 0; var naturalWidth = 0; var sinaturalHeight = 0; var sinaturalWidth = 0; var vidRecordButton = ""; var showcase; var imghover = true; var vidhover = true; var img2hover = true; var newVideo = { "version": "1.0", "payload": { "objects": [{ "name": "newvideo", "position": { "x": -46.73015522489656, "y": 4.136230325017732, "z": -20.15128976879792 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 1, "y": 1, "z": 0.01 }, "components": [{ "type": "mp.videoRenderer", "name": "flatvideorenderer", "inputs": { "src": baseUrl + "/media/3jsvidholder.mp4", "transcript": "", }, }, { "type": "mp.planeRenderer", "name": "fvmainplane", "inputs": { "transparent": false, "localScale": { "x": 0.8, "y": 0.8, "z": 0.8 }, "localPosition": { "x": 0, "y": 0, "z": 0 }, "localRotation": { "x": 0, "y": 0, "z": 0 } }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }, { "type": "mp.toggleState", "inputs": { "initialState": false } }, { "type": "mp.planeRenderer", "inputs": { "transparent": true, "opacity": 0.8, "localScale": { "x": 0.8, "y": 1.5, "z": 0.8 }, }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }, { "type": "mp.canvasRenderer", "inputs": { "textureRes": { "w": 1024, "h": 1024 } } }, { "type": "mp.canvasBorder", "inputs": { "position": { "x": 0, "y": 0 }, "size": { "h": 1024, "w": 1024 }, "radius": 50 } }, { "type": "mp.planeRenderer", "inputs": { "localScale": { "x": 0.1, "y": 0.1, "z": 1 }, "localPosition": { "x": 0.32, "y": -0.32, "z": 0.01 }, "transparent": true }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }, { "type": "mp.canvasRenderer", "inputs": { "textureRes": { "w": 128, "h": 128 } } }, { "type": "mp.canvasImage", "inputs": { "src": baseUrl + "/media/volume_on.png", "srcPosition": { "x": 0, "y": 0, "z": 0 }, "srcSize": { "w": 128, "h": 128 }, "destPosition": { "x": 0, "y": 0, "z": 0 }, "destSize": { "w": 128, "h": 128 } } }, { "type": "mp.planeRenderer", "inputs": { "localScale": { "x": 0.1, "y": 0.1, "z": 1.0 }, "localPosition": { "x": 0.32, "y": -0.32, "z": 0.01 }, "transparent": true }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }, { "type": "mp.canvasRenderer", "inputs": { "textureRes": { "w": 128, "h": 128 } } }, { "type": "mp.canvasImage", "inputs": { "src": baseUrl + "/media/volume_off.png", "srcPosition": { "x": 0, "y": 0, "z": 0 }, "srcSize": { "w": 128, "h": 128 }, "destPosition": { "x": 0, "y": 0, "z": 0 }, "destSize": { "w": 128, "h": 128 } } }], "bindings": [ [0, "play", 2, "state"], [1, "texture", 0, "texture"], [4, "painter", 5, "painter"], [3, "texture", 4, "texture"], [3, "aspect", 0, "aspect"], [7, "painter", 8, "painter"], [6, "texture", 7, "texture"], [6, "visible", 2, "negated"], [10, "painter", 11, "painter"], [9, "texture", 10, "texture"], [9, "visible", 2, "state"] ], "events": [ [2, "toggle", 1, "INTERACTION.CLICK"], [2, "toggle", 9, "INTERACTION.CLICK"], [2, "toggle", 6, "INTERACTION.CLICK"], [10, "repaint", 11, "paint.ready"], [7, "repaint", 8, "paint.ready"] ] }, ] } }; var newcurvedVideo = { "version": "1.0", "payload": { "objects": [{ "name": "newvideo", "position": { "x": -0.443, "y": 5.78, "z": 6.612 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "components": [{ "type": "mp.curvedVideoRenderer", "inputs": { "src": baseUrl + "/media/olympiawelcome.mp4", "transcript": "", "sweepEnable": null, "startSweep": null, "endSweep": null } }, { "type": "mp.planeRenderer", "inputs": { "transparent": false, "localScale": { "x": 0.8, "y": 0.8, "z": 0.8 }, "localPosition": { "x": 0, "y": 0, "z": 0 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, "curveDepth": 1 }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }, { "type": "mp.toggleState", "inputs": { "initialState": false } }], "bindings": [ [0, "play", 2, "state"], [1, "texture", 0, "texture"], ], "events": [ [2, "toggle", 1, "INTERACTION.CLICK"] ] }, ] } }; var newImage = { "version": "1.0", "payload": { "objects": [{ "name": "newimage", "position": { "x": 3.966, "y": 0.5, "z": -2.221 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 1, "y": 1, "z": 0.01 }, "components": [{ "type": "mp.planeRenderer", "inputs": { "transparent": false, "localScale": { "x": 1, "y": 1, "z": 1 }, "localPosition": { "x": 0, "y": 0, "z": 0 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, "transparent": true }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }, { "type": "mp.canvasRenderer", "inputs": { "textureRes": { "w": 1024, "h": 1024 } } }, { "type": "mp.canvasImage", "inputs": { "src": baseUrl + "/media/c3daddimage.png", "dest": "", "tagdetails": { "tagTitle": "", "tagDesc": "", "tagmedia": "", }, "srcPosition": { "x": 0, "y": 0, "z": 0 }, "srcSize": { "w": 128, "h": 128 }, "destPosition": { "x": 0, "y": 0, "z": 0 }, "destSize": { "w": 1024, "h": 1024 } } }, ], "bindings": [ [0, "texture", 1, "texture"], [1, "painter", 2, "painter"] ], "events": [ [1, "repaint", 2, "paint.ready"] ] }, ] } }; var newGreenscreen = { "version": "1.0", "payload": { "objects": [{ "name": "newgreenscreen", "position": { "x": 10.966, "y": 0.7, "z": -1.221 }, "rotation": { "x": 0, "y": -60, "z": 0 }, "scale": { "x": 3.5, "y": 2, "z": 0.01 }, "components": [{ "type": "mp.greenscreen", "inputs": { "src": baseUrl + "/media/gstest2.mp4", "muted": true, "transcript": "", "chromakey": "lime", "radius": 3, }, "events": { "INTERACTION.CLICK": true }, }, ], }, ] } }; var newBox = { "version": "1.0", "payload": { "objects": [{ "name": "newbox", "position": { "x": 0, "y": 0, "z": 0 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 0.5, "y": 0.5, "z": 0.5 }, "components": [{ "type": "mp.box", "inputs": { "localScale": { "x": 1, "y": 1, "z": 1 }, "localPosition": { "x": 0, "y": 0, "z": 0 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, "tagdetails": { "tagTitle": "", "tagDesc": "", "tagmedia": "", }, "dest": "", }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true }, }, ], }, ] } }; var newNadirPatch = { "version": "1.0", "payload": { "objects": [{ "name": "nadirpatch", "position": { "x": 0, "y": 0, "z": 0 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 1, "y": 1, "z": 1 }, "components": [{ "type": "mp.nadirpatch", "inputs": { "src": "", "opacity": 1, "radius": 0.75 }, "events": { "INTERACTION.CLICK": false, "INTERACTION.HOVER": false }, }, ], }, ] } }; var newSvg = { "version": "1.0", "payload": { "objects": [{ "name": "newButton", "position": { "x": 3.966, "y": 0.5, "z": -2.221 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 1, "y": 1, "z": 0.01 }, "components": [{ "type": "mp.buttonRenderer", "inputs": { "transparent": false, "localScale": { "x": 1, "y": 1, "z": 1 }, "localPosition": { "x": 0, "y": 0, "z": 0 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, "tagdetails": { "tagcolor": "FF00FF", "tagbg": "00FFFF", "tagIcon": "bitcoin", "tagTitle": "", "tagDesc": "", "tagmedia": "", }, "animation": "Pulse", "dest": "", }, "events": { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true } }], }, ] } }; var newGltf = { "version": "1.0", "payload": { "objects": [{ "name": "newgltf", "position": { "x": 3.966, "y": 0, "z": -2.221 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 1, "y": 1, "z": 1 }, "components": [{ "type": "mp.gltfLoader", "inputs": { "url": baseUrl + "/assets/3d_models/RSG_Leather_Chair.glb", "localScale": { "x": 1, "y": 1, "z": 1 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, "castShadow": true, }, "events": { "INTERACTION.CLICK": true, } }, { "type": "mp.directionalLight", "inputs": { "enabled": true, "name": "objectDirectional", "localPosition": { "x": 0, "y": 0, "z": 0 }, "color": { r: 1, g: 1, b: 1 }, "intensity": 2, "sensor": false, "debug": false, "castShadow": false, }, }, { "type": "mp.spotLight1", "inputs": { "enabled": true, "color": { r: 1, g: 1, b: 1 }, "intensity": 0, "decay": 2, "angle": 0.3, "localPosition": { x: -1, y: 3, z: -1 }, "castShadow": false, }, }, { "type": "mp.spotLight2", "inputs": { "enabled": true, "color": { r: 1, g: 1, b: 1 }, "intensity": 0, "decay": 2, "angle": 0.3, "localPosition": { x: -1, y: 0.1, z: -1 }, "castShadow": false, }, }, { "type": "mp.shadowGeometry", "inputs": { "angleValue": 0, "radiusValue": 0, "sensor": false, "top": 2, "bottom": -2, "left": -2, "right": 2, "near": 2, "far": 2, "localScale": { "x": 1, "y": 1, "z": 1 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, }, }, ], }, ] } }; var newFbx = { "version": "1.0", "payload": { "objects": [{ "name": "newfbx", "position": { "x": 3.966, "y": 0, "z": -2.221 }, "rotation": { "x": 0, "y": 0, "z": 0 }, "scale": { "x": 1, "y": 1, "z": 1 }, "components": [{ "type": "mp.fbxLoader", "inputs": { "url": baseUrl + "/assets/3d_models/ArmChair3.fbx", "localScale": { "x": 1, "y": 1, "z": 1 }, "localRotation": { "x": 0, "y": 90, "z": 0 }, "castShadow": true, }, "events": { "INTERACTION.CLICK": true } }, { "type": "mp.ambientLight", "inputs": { "enabled": true, "color": { r: 1, g: 1, b: 1 }, "intensity": 0.5, "position": { x: 0, y: 1, z: 0 }, "castShadow": false, }, }, { "type": "mp.pointLight", "inputs": { "enabled": true, "color": { r: 1, g: 1, b: 1 }, "intensity": 0.5, "position": { x: 0, y: 1.5, z: 0 }, "castShadow": false, }, }, { "type": "mp.directionalLight", "inputs": { "enabled": true, "color": { r: 1, g: 1, b: 1 }, "intensity": 0, "position": { x: 1, y: 5, z: -1 }, "target": { x: -1, y: 0, z: 1 }, "debug": true, "castShadow": true, }, }, { "type": "mp.shadowGeometry", }, ], }, ] } }; function openMediaLibrary(source, type) { if (!document.getElementById("libDiv")) { $("#tourlogoimage").fadeOut(1000); var goBack = document.createElement("div"); goBack.id = "goBack"; goBack.style.position = "absolute"; goBack.style.top = "20px"; goBack.style.right = "40px"; goBack.style.width = "35px"; goBack.style.height = "35px"; goBack.style.fontSize = "25px"; goBack.style.fontWeight = "700"; goBack.style.textAlign = "center"; goBack.style.lineHeight = "33px"; goBack.style.border = "3px solid #" + cssFg; goBack.style.borderRadius = "5px"; goBack.style.zIndex = 200; goBack.style.color = "#" + cssFg; goBack.style.background = "#" + cssBg; goBack.style.cursor = "pointer"; goBack.innerHTML = "
X
"; document.getElementById("iframecontainer").prepend(goBack); goBack.addEventListener("click", closeMediaDiv); var newframe = document.createElement("div"); newframe.id = "libDiv"; document.getElementById("iframecontainer").appendChild(newframe); newframe.style.width = "100%"; newframe.style.height = "100vh"; newframe.style.overflowY = "auto"; newframe.style.position = "absolute"; newframe.style.zIndex = "110"; newframe.style.backgroundColor = "hsl(0,0%,28%)"; newframe.style.top = "0px"; $("#libDiv").fadeIn(1000); $("#libDiv").load(baseLoc + "/indexnewmymedia.php?model=" + editmodel + "&version=" + version + "&pagesrc=" + source + "&mediatype=" + type); } }; if (tourtype == "matterport") { var iframeWidth = iframe.clientWidth; // Token and Owner will be defined in PHP. var token = "TO BE ADDED"; var owner = 0; const config = { attributes: true, childList: true, subtree: true }; if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { const iframechange = async function(mutationsList, observer) { for (const mutation of mutationsList) { if (mutation.attributeName == "src") { if (typeof iframe.src != "undefined" && iframe.src != "") { iframe.addEventListener("load", async function() { var hasPwBox = iframe.contentWindow.document.getElementsByClassName("sc-password-form"); if (hasPwBox) { $("#loading-gui").fadeOut(1000); } if (owner == 1 && token != null) { try { console.log("LOGGING IN WITH OAUTH"); mpSdk = await iframe.contentWindow.MP_SDK.connect(iframe, { auth: token }); loadedShowcaseHandler(mpSdk); console.log("SDK LOADED"); mpSdk.Camera.pose.subscribe(function(pose) { posevar = pose; }); } catch (e) { console.error(e); return; } } else { try { //Key needs removing on oAuth Implementation mpSdk = await iframe.contentWindow.MP_SDK.connect(iframe, 'bc2c9f62713a42acba1d0a00d5b8c81c'); loadedShowcaseHandler(mpSdk); console.log("SDK LOADED"); mpSdk.Camera.pose.subscribe(function(pose) { posevar = pose; }); } catch (e) { console.error(e); return; } } }); } } } } const observer = new MutationObserver(iframechange); observer.observe(iframe, config); } else { if (typeof iframe.src != "undefined" && iframe.src != "") { iframe.addEventListener("load", async function() { setTimeout(async function() { var hasPwBox = $("#showcase_iframe").contents().find(".sc-password-form"); if (hasPwBox.length > 0) { $("#loading-gui").fadeOut(1000); var submitButton = iframe.contentWindow.document.getElementsByClassName("sc-password-submit"); submitButton[0].addEventListener("click", async function() { try { //Key needs removing on oAuth Implementation mpSdk = await iframe.contentWindow.MP_SDK.connect(iframe, 'bc2c9f62713a42acba1d0a00d5b8c81c'); loadedShowcaseHandler(mpSdk); console.log("SDK LOADED"); mpSdk.Camera.pose.subscribe(function(pose) { posevar = pose; }); } catch (e) { console.error(e); return; } }); } else { if (owner == 1 && token != null) { try { mpSdk = await iframe.contentWindow.MP_SDK.connect(iframe, { auth: token }); loadedShowcaseHandler(mpSdk); console.log("SDK LOADED"); mpSdk.Camera.pose.subscribe(function(pose) { posevar = pose; }); } catch (e) { console.error(e); return; } } else { try { //Key needs removing on oAuth Implementation mpSdk = await iframe.contentWindow.MP_SDK.connect(iframe, 'bc2c9f62713a42acba1d0a00d5b8c81c'); loadedShowcaseHandler(mpSdk); console.log("SDK LOADED"); mpSdk.Camera.pose.subscribe(function(pose) { posevar = pose; }); } catch (e) { console.error(e); return; } } } }, 400) }) } } }; function uuidv4() { return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } var isMac = navigator.platform.toUpperCase().indexOf('MAC') var userAgent = window.navigator.userAgent, platform = window.navigator.platform, macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K', ], windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'], iosPlatforms = ['iPhone', 'iPad', 'iPod'], os = null; var isMacLike = /(Mac)/i.test(window.navigator.platform); if (isMacLike) { os = 'Mac OS'; } if (iosPlatforms.indexOf(platform) !== -1) { os = 'iOS'; } else if (windowsPlatforms.indexOf(platform) !== -1) { os = 'Windows'; } else if (/Android/.test(userAgent)) { os = 'Android'; } else if (!os && /Linux/.test(platform)) { os = 'Linux'; } if (document.getElementById('editmodel')) { var editmodel = document.getElementById('editmodel').value; } if (document.getElementById('version')) { var version = document.getElementById('version').value; } var noSign = false; var listened = []; var initialPose = 0; window.addEventListener('message', event => { //IMPORTANT: check the origin of the data! if (event.origin.startsWith(baseUrl)) { // The data was sent from your site. // Data sent with postMessage is stored in event.data: if (event.data == "close") { $("#monitor").attr("hidden", true); } } }); window.addEventListener('DOMContentLoaded', (event) => { if (document.getElementById('loading-header') == null && document.getElementById('loading-subheader') == null) { $('head').append(''); } $("#enableTs").on('change', function() { if (enableTs.checked) { hearingimpaired = 1; } else { hearingimpaired = 0; } }); $('.burgerholder').on('click', function() { if ($(".navsubmenu").hasClass("showing")) {} var thisSubMenu = $(this).closest(".burgerMenuItem").children(".navsubmenu"); if (thisSubMenu.hasClass('showing')) { thisSubMenu.addClass('collapsed').removeClass('showing'); } else { thisSubMenu.addClass('showing').removeClass('collapsed'); } }); $('#audiotoggle').on('click', function() { if ($('#navHeader').hasClass('showing')) { $('#navHeader').addClass('collapsed').removeClass('showing'); $('#navdivider').addClass('collapsed').removeClass('showing'); $('#icon-left').removeAttr('hidden', true); $('#icon-right').attr('hidden', true); $('#navDiv').addClass('collapsed').removeClass('showing'); } else { $('#navHeader').addClass('showing').removeClass('collapsed'); $('#navdivider').addClass('showing').removeClass('collapsed'); $('#navDiv').addClass('showing').removeClass('collapsed'); $('#icon-right').removeAttr('hidden'); $('#icon-left').attr('hidden', true); } }); if (document.getElementById("myStartButton") == null) { startButton = document.getElementById('loader-cont'); } else { startButton = document.getElementById("myStartButton") } if (typeof cssFg !== 'undefined') { root.style.setProperty('--cssForeground', "#" + cssFg); root.style.setProperty('--cssBackground', "#" + cssBg); root.style.setProperty('--cssTextColor', "#" + cssTxt); root.style.setProperty('--cssFontFamily', "#" + cssFontFamily); } else { root.style.setProperty('--cssForeground', "#38b6ff"); root.style.setProperty('--cssBackground', "#000000"); root.style.setProperty('--cssTextColor', "#ffffff"); root.style.setProperty('--cssFontFamily', "#" + "Roboto"); } if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew"){ $("body").css("font-family", cssFontFamily); } else { $("body").css("font-family", "Roboto"); } modelExists = document.getElementById("model"); if (modelExists) { model = document.getElementById('model').value; } if (startButton) { function buttonxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { var buttontitle = $("#myStartButton").html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) buttontitle = response.title; $('#myStartButton').css("width", "auto"); $('#myStartButton').html(buttontitle); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + buttontitle + "&description=&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); } } } buttonxmlHReq(); function bespokexmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { var bespoketitle = $("#loading-header").html(); var bespokedesc = $("#subheaderspan").html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) bespoketitle = response.title; bespokedesc = response.description; $('#loading-header').html(bespoketitle); $('#subheaderspan').html(bespokedesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + bespoketitle + "&description=" + bespokedesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); } } } bespokexmlHReq(); function fpxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { var fptitle = "EXPLORE 3D SPACE"; var fpdesc = "POWERED BY"; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) fptitle = response.title; fpdesc = response.description; $('#loading-subheader').html(fptitle); $('.loading-label').html(fpdesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + fptitle + "&description=" + fpdesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); } } } if (customintro != "1") { fpxmlHReq(); } translatestatics(); function translatestatics() { function defxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) deftitle = response.title; defdesc = response.description; } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + deftitle + "&description=" + defdesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); } } } defxmlHReq(); function navxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { var navtitle = ""; var navdesc = $("#navHeader").html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) navtitle = response.title; navdesc = response.description; $('#navHeader').html(navdesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + navtitle + "&description=" + navdesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); } } } navxmlHReq(); function menuheadxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { $('.burgerdesc').each(function() { var currentElement = $(this); menutitle = ""; menudesc = currentElement.html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) title = response.title; menudesc = response.description; currentElement.html(menudesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + menutitle + "&description=" + menudesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); }) } } } menuheadxmlHReq(); function menuxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { $('.movetoSweep').each(function() { var currentElement = $(this); menutitle = ""; menudesc = currentElement.html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) title = response.title; menudesc = response.description; currentElement.html(menudesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + menutitle + "&description=" + menudesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); }) } } } menuxmlHReq(); function navmenuxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { $('.movetoNavSweep').each(function() { var currentElement = $(this); menutitle = ""; menudesc = currentElement.html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) title = response.title; menudesc = response.description; currentElement.html(menudesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + menutitle + "&description=" + menudesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); }) } } } navmenuxmlHReq(); function vidmenuxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { $('.movetoVideoSweep').each(function() { var currentElement = $(this); menutitle = ""; menudesc = currentElement.html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) title = response.title; menudesc = response.description; currentElement.html(menudesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + menutitle + "&description=" + menudesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); }) } } } vidmenuxmlHReq(); function codemenuxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { $('.movetoCodeSweep').each(function() { var currentElement = $(this); menutitle = ""; menudesc = currentElement.html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) title = response.title; menudesc = response.description; currentElement.html(menudesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + menutitle + "&description=" + menudesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); }) } } } codemenuxmlHReq(); function extmenuxmlHReq() { if (baselanguage != userLang) { if (dotranslation == "1") { $('.movetoMediaSweep').each(function() { var currentElement = $(this); menutitle = ""; menudesc = currentElement.html(); var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText) title = response.title; menudesc = response.description; currentElement.html(menudesc); } } } xmlhttp.open("GET", baseLoc + "/translate.php?model=" + model + "&version=" + version + "&title=" + menutitle + "&description=" + menudesc + "&lang=" + userLang + "&baselanguage=" + baselanguage, true); xmlhttp.send(); }) } } } extmenuxmlHReq(); } if (mobile) { if (mobile && !iPad) { if (document.body.clientWidth > document.body.clientHeight) { $("#loading-subheader").html("PLEASE SWITCH TO PORTRAIT MODE TO START YOUR EXPERIENCE"); } else { $("#loading-subheader").html(subheader); } } $(".loading-label").css("display", "none"); $("#loading-mp-logo").css("display", "none"); $(".sharereplace").css("display", "none"); } if (fs == 1 || mobile) { try { if (document.body.requestFullscreen) { document.body.requestFullscreen(); } else if (document.mozRequestFullScreen) { /* Firefox */ iframe.mozRequestFullScreen(); } else if (document.webkitRequestFullScreen) { /* Chrome, Safari and Opera */ document.body.webkitRequestFullScreen(); } else if (document.msRequestFullscreen) { /* IE/Edge */ document.msRequestFullscreen(); } } catch (error) { console.error(error); } } if (newQuery.includes("play=1") && !mobile) { $('#loading-gui').addClass('collapsed'); $('#loading-background').addClass('collapsed'); $('#framecontainer').addClass('showing'); if ($(document).height() <= 700 && !mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&' + newQuery + '&showtitle=1&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&' + newQuery + '&showtitle=1&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } document.body.addEventListener('click', event => { audio = new Audio(); audio.id = "audio"; audio.controls = true; audio.src = baseUrl + "/media/1sec.mp3"; audio.volume = 1; audio.load(); audio.play(); if (os != "iOS" && os != "Mac OS") { if ('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); if (typeof bgAudio !== 'undefined') { if (!bgAudio == "") { if (bgAudio.includes(window.location.hostname)) { audioBG = new Audio(bgAudio); } else { audioBG = new Audio("https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + bgAudio); } audioBG.crossOrigin = "anonymous"; audioBG.play(); source = bgcontext.createMediaElementSource(audioBG); gainNode = bgcontext.createGain(); gainNode.gain.setValueAtTime(0.3, bgcontext.currentTime); source.connect(gainNode); gainNode.connect(bgcontext.destination); audioBG.addEventListener('ended', function() { this.currentTime = 0; this.play(); }, false); } } } else { $("#bgButtonHolder").css("display", "none"); } }); } else { startButton.addEventListener('click', event => { ; if (newQuery != "") { newQuery = '&' + newQuery; } if (fs == 1 || mobile) { if (document.body.requestFullscreen) { document.body.requestFullscreen(); } else if (document.mozRequestFullScreen) { /* Firefox */ iframe.mozRequestFullScreen(); } else if (document.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ document.webkitRequestFullscreen(); } else if (document.msRequestFullscreen) { /* IE/Edge */ document.msRequestFullscreen(); } } if (bg_delay == 1) { if ($(".introVideo").is("img")) { console.log("IMAGE BG DELAY"); var header = document.getElementById("loading-header"); var subtitle = document.getElementById("loading-subheader"); var background = document.getElementById("loading-gui"); $(".lds-ring").fadeIn(1000); $("#loading-header").fadeOut(1000); $("#loading-subheader").fadeOut(1000); $("#loader-cont").fadeOut(1000); $("#myStartButton").fadeOut(1000); $("#enableTranscripts").css("opacity", 0); $('#tint').animate({ backgroundColor: 'rgba(0,0,0,0)' }, 'slow'); var thisI = 0; setTimeout(function() { if ($(document).height() <= 700 && !mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { if (mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } } var sdkInterval = setInterval(function() { if (mpSdk != null) { mpSdk.App.state.subscribe(function(appState) { if (appState.phase == "appphase.starting" || appState.phase == "appphase.playing") { clearInterval(sdkInterval); sdkInterval = null; if (thisI == 0) { if (os != "iOS" && os != "Mac OS") { if ('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); if (typeof bgAudio !== 'undefined') { if (!bgAudio == "") { if (bgAudio.includes(window.location.hostname)) { audioBG = new Audio(bgAudio); } else { audioBG = new Audio("https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + bgAudio); } audioBG.crossOrigin = "anonymous"; audioBG.play(); source = bgcontext.createMediaElementSource(audioBG); gainNode = bgcontext.createGain(); gainNode.gain.setValueAtTime(0.3, bgcontext.currentTime); source.connect(gainNode); gainNode.connect(bgcontext.destination); audioBG.addEventListener('ended', function() { this.currentTime = 0; this.play(); }, false); } } } else { $("#bgButtonHolder").css("display", "none"); } thisI = thisI + 1; } $(".lds-ring").fadeOut(1000); $('#framecontainer').fadeIn(1000); $('#loading-gui').fadeOut(1000); } }); } }, 50); }, 2000); } else { console.log("BG DELAY VIDEO"); var subtitle = document.getElementById("loading-subheader"); var background = document.getElementById("loading-gui"); $("#loading-header").fadeOut(1000); $("#loading-subheader").fadeOut(1000); $("#myStartButton").fadeOut(1000); $("#enableTranscripts").css("opacity", 0); $('#tint').animate({ backgroundColor: 'rgba(0,0,0,0)' }, 'slow'); var introvideo = document.getElementsByClassName('introVideo')[0]; var skipbutton = document.createElement("button"); skipbutton.id = "skipbutton"; skipbutton.innerHTML = "SKIP VIDEO"; skipbutton.addEventListener("click", function() { $("#skipbutton").fadeOut(1000); var ended = introvideo.duration; introvideo.currentTime = ended; }) skipbutton.style = style = "left: calc(40vw - 100px);background-color:#" + cssBg + "; border:2px solid #" + cssFg + "; border-radius:80px; line-height:2.6em; height:3em; width:200px; color: #" + cssTxt + "; font-weight: 400; font-size: 16px;"; if (document.getElementById("myStartButton") != null) { document.getElementById("loader-cont").removeChild(document.getElementById("myStartButton")); document.getElementById("loader-cont").appendChild(skipbutton); } introvideo.currentTime = 0; introvideo.muted = false; introvideo.removeAttribute("loop"); introvideo.onended = function() { $(".lds-ring").fadeIn(1000); if ($(document).height() <= 700 && !mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { if (mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } } var thisI = 0; var sdkInterval = setInterval(function() { if (mpSdk != null) { mpSdk.App.state.subscribe(function(appState) { if (appState.phase == "appphase.starting" || appState.phase == "appphase.playing") { clearInterval(sdkInterval); sdkInterval = null; if (thisI == 0) { if (os != "iOS" && os != "Mac OS") { if ('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); if (typeof bgAudio !== 'undefined') { if (!bgAudio == "") { if (bgAudio.includes(window.location.hostname)) { audioBG = new Audio(bgAudio); } else { audioBG = new Audio("https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + bgAudio); } audioBG.crossOrigin = "anonymous"; audioBG.play(); source = bgcontext.createMediaElementSource(audioBG); gainNode = bgcontext.createGain(); gainNode.gain.setValueAtTime(0.3, bgcontext.currentTime); source.connect(gainNode); gainNode.connect(bgcontext.destination); audioBG.addEventListener('ended', function() { this.currentTime = 0; this.play(); }, false); } } } else { $("#bgButtonHolder").css("display", "none"); } thisI = thisI + 1; } $(".lds-ring").fadeOut(2000); $('#framecontainer').fadeIn(3000); $('#loading-gui').fadeOut(2000); } }); } }, 50); } } } else { console.log("NO BG DELAY "); $(".lds-ring").fadeIn(1000); $("#loading-header").fadeOut(1000); $("#loading-subheader").fadeOut(1000); $("#myStartButton").fadeOut(1000); $('#loading-powered-by').fadeOut(1000); $("#circleLoader").fadeOut(1000); $("#enableTranscripts").fadeOut(1000); if ($(document).height() <= 700 && !mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { if (mobile) { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } else { iframe.src = baseUrl + '/newbundle/showcase.php?m=' + model + '&play=1' + newQuery + '&applicationKey=bc2c9f62713a42acba1d0a00d5b8c81c&newtags=' + tagsversion + '&useLegacyIds=0&aa=1'; } } var thisI = 0; var sdkInterval = setInterval(function() { if (mpSdk != null) { if (posevar != null && posevar.mode == "mode.dollhouse") { clearInterval(sdkInterval); if (thisI == 0) { if (os != "iOS" && os != "Mac OS") { if ('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); if (typeof bgAudio !== 'undefined') { if (!bgAudio == "") { if (bgAudio.includes(window.location.hostname)) { audioBG = new Audio(bgAudio); } else { audioBG = new Audio("https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + bgAudio); } audioBG.crossOrigin = "anonymous"; audioBG.play(); source = bgcontext.createMediaElementSource(audioBG); gainNode = bgcontext.createGain(); gainNode.gain.setValueAtTime(0.3, bgcontext.currentTime); source.connect(gainNode); gainNode.connect(bgcontext.destination); audioBG.addEventListener('ended', function() { this.currentTime = 0; this.play(); }, false); } } } else { $("#bgButtonHolder").css("display", "none"); } thisI = thisI + 1; } $(".lds-ring").fadeOut(1000); $('#framecontainer').fadeIn(1000); $('#loading-gui').fadeOut(1000); } } }, 50); } audio = new Audio(); audio.id = "audio"; audio.controls = true; audio.src = baseUrl + "/media/1sec.mp3"; audio.volume = 1; audio.load(); audio.play(); /* for (i = 0; i < scenecomponents.payload.objects.length; i++) { var objName = scenecomponents.payload.objects[i].name; if (objName.substring(0, 5) == "video" || objName.substring(0, 5) == "gsvid") { newsrc = scenecomponents.payload.objects[i].components[0].inputs.src; var video = document.createElement("video"); video.id = objName; video.style.display = "none"; document.body.append(video); video.setAttribute("playsinline", true); video.controls = true; video.crossOrigin = 'anonymous'; video.autoplay = true; video.muted = true; video.loop = false; video.src = baseUrl + "/media/1_sec.mp4" video.load(); video.play(); } } */ for (i = 0; i < scenecomponents.payload.objects.length; i++) { var objName = scenecomponents.payload.objects[i].name; if (objName.substring(0, 5) == "video" || objName.substring(0, 5) == "gsvid") { newsrc = scenecomponents.payload.objects[i].components[0].inputs.src; var video = document.createElement("video"); video.id = objName; video.style.display = "none"; document.body.append(video); video.setAttribute("playsinline", true); video.controls = true; video.crossOrigin = 'anonymous'; video.autoplay = true; video.muted = true; if (objName.substring(0, 5) == "gsvid") { video.loop = false; } else { video.loop = true; } if (newsrc.includes(window.location.hostname)) { video.src = newsrc; video.load(); } else { if (newsrc.substring(newsrc.length - 4, newsrc.length) == "m3u8") { if (Hls.isSupported()) { hls = new Hls({ debug: false, }); hls.loadSource(newsrc); hls.attachMedia(video); video.load(); } else if (video.canPlayType('application/vnd.apple.mpegurl')) { video.src = newsrc; } } else { video.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + newsrc; video.load(); } } } } }); } } else { for (i = 0; i < scenecomponents.payload.objects.length; i++) { var objName = scenecomponents.payload.objects[i].name; if (objName.substring(0, 5) == "video" || objName.substring(0, 5) == "gsvid") { var video = document.createElement("video"); video.style.display = "none"; document.body.append(video); video.id = objName; video.setAttribute("hlsname", objName); video.setAttribute("playsinline", true); video.controls = true; video.crossOrigin = 'anonymous'; video.autoplay = true; video.muted = true; if (objName.substring(0, 5) == "gsvid") { video.loop = false; } else { video.loop = true; } video.src = baseUrl + "/media/1_sec.mp4" video.load(); video.play(); } } setTimeout(function() { for (i = 0; i < scenecomponents.payload.objects.length; i++) { var objName = scenecomponents.payload.objects[i].name; if (objName.substring(0, 5) == "video" || objName.substring(0, 5) == "gsvid") { newsrc = scenecomponents.payload.objects[i].components[0].inputs.src; var video = document.getElementById(objName); if (newsrc.includes(window.location.hostname)) { video.src = newsrc; video.load(); } else { if (newsrc.substring(newsrc.length - 4, newsrc.length) == "m3u8") { if (Hls.isSupported()) { var hls = new Hls({ debug: false, }); hls.loadSource(newsrc); hls.attachMedia(video); hlsObj[objName] = hls; video.setAttribute("hlssrc", newsrc); video.load(); } else if (video.canPlayType('application/vnd.apple.mpegurl')) { video.src = newsrc; } } else { video.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + newsrc; video.load(); } } } } }, 1100); //if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { // audioenable.addEventListener('click', event => { audio = new Audio(); audio.id = "audio"; audio.controls = false; audio.src = baseUrl + "/media/1sec.mp3"; audio.load(); audio.play(); //audioenable.setAttribute("hidden", true); if (os != "iOS" && os != "Mac OS") { if ('webkitAudioContext' in window) { bgcontext = new webkitAudioContext(); } else { bgcontext = new AudioContext(); } source2 = bgcontext.createMediaElementSource(audio); gainNode2 = bgcontext.createGain(); gainNode2.gain.setValueAtTime(0.001, bgcontext.currentTime); source2.connect(gainNode2); gainNode2.connect(bgcontext.destination); } // }); //} } }); var oldPose; async function loadedShowcaseHandler(mpSdk) { /*var params = new Array(); params.push("m") params.push("experience"); console.log(typeof params); console.log(JSON.stringify(mpSdk.Link.CreationPolicy.WINDOW)); await mpSdk.Link.setShareLinkPolicy(mpSdk.Link.CreationPolicy.MATTERPORT); const link = await mpSdk.Link.createLink(); console.log(link); */ function submitPageView() { window.pageseconds = 0; function incrementSeconds() { window.pageseconds += 0.5; } window.pagecounter = setInterval(incrementSeconds, 500); var asset = "page" var type = "pageview" var value = 1; submitAnalyticData(asset, type, value) } submitPageView(); function validateEmail(email) { var re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; return re.test(email); } if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { if (collectdata == "1" && collecttimer != "") { setTimeout(function() { var blockingdiv = document.createElement("div"); blockingdiv.id = "blockingdiv"; blockingdiv.setAttribute("style", "width:100%; height:100%; pointerEvents:none; position:absolute; top:0px; left:0px; z-index:10000; background-color:rgba(255, 255, 255,0.5)"); document.body.appendChild(blockingdiv); var blurrydiv = document.createElement("div"); blurrydiv.id = "modal-background"; blurrydiv.style = "position:absolute; top:0px; left:0px; width:100%; height:100%; margin:0px; z-index:10001;"; blurrydiv.classList.add("blurry"); blockingdiv.appendChild(blurrydiv); var contactformmodal = document.createElement("div"); contactformmodal.id = "contactformmodal"; if (!mobile) { if (iframe.clientHeight > 600) { contactformmodal.setAttribute("style", "pointer-events:all; position:relative; width:400px; height:600px; margin-left:calc(50% - 200px); margin-top:calc(50vh - 300px); background-color:rgba(0,0,0,0.75);border:5px solid black; border-radius:10px;"); } else { contactformmodal.setAttribute("style", "pointer-events:all; position:relative; width:400px; height:90vh; overflow:auto; margin-left:calc(50% - 200px); margin-top:5vh; background-color:rgba(0,0,0,0.75);border:5px solid black; border-radius:10px;"); } } else { contactformmodal.setAttribute("style", "pointer-events:all; position:relative; width:90%; height:90%; margin-left:5%; margin-top:5%; background-color:rgba(0,0,0,0.75);border:5px solid black; border-radius:10px;"); } blockingdiv.appendChild(contactformmodal); var formcenter = document.createElement("center"); var formheader = document.createElement("h3"); formheader.style.color = "white"; formheader.innerHTML = "WANT MORE INFO?"; formcenter.append(formheader); contactformmodal.append(formcenter); var divider = document.createElement("div"); divider.style = "width:80%; height:2px; background-color:white;"; formcenter.append(divider); var formdiv = document.createElement("table"); formdiv.style = "width:90%; margin-top:10px; color:white; margin-left:auto; margin-right:auto"; var namediv = document.createElement("tr"); namediv.style.height = "60px"; var namelabel = document.createElement("td"); namelabel.innerHTML = "* NAME: "; namediv.append(namelabel); namelabel.style = "width:25%"; var nameinputdiv = document.createElement("td"); var nameinput = document.createElement("input"); nameinput.id = "nameinput"; nameinput.setAttribute("type", "text"); nameinput.style = " width:100%; color:black; height:40px;"; nameinputdiv.append(nameinput); namediv.append(nameinputdiv); formdiv.append(namediv); var maildiv = document.createElement("tr"); maildiv.style.height = "60px"; var maillabel = document.createElement("td"); maillabel.innerHTML = "* EMAIL: "; maildiv.append(maillabel); maillabel.style = "width:25%"; var mailinputdiv = document.createElement("td"); var mailinput = document.createElement("input"); mailinput.id = "mailinput"; mailinput.setAttribute("pattern", ".+@+."); mailinput.setAttribute("type", "email"); mailinput.style = " width:100%; color:black; height:40px;"; mailinputdiv.append(mailinput); maildiv.append(mailinputdiv); formdiv.append(maildiv); var teldiv = document.createElement("tr"); teldiv.style.height = "60px"; var tellabel = document.createElement("td"); tellabel.innerHTML = " TEL: "; teldiv.append(tellabel); tellabel.style = "width:25%"; var telinputdiv = document.createElement("td"); var telinput = document.createElement("input"); telinput.id = "telinput"; telinput.setAttribute("type", "etel"); telinput.style = " width:100%; color:black; height:40px;"; telinputdiv.append(telinput); teldiv.append(telinputdiv); formdiv.append(teldiv); var formdiv2 = document.createElement("table"); formdiv2.style = "width:90%; margin-top:10px; color:white; margin-left:auto; margin-right:auto"; var msgdiv1 = document.createElement("tr"); msgdiv1.style.height = "60px"; var msglabel = document.createElement("td"); msglabel.innerHTML = "* MESSAGE "; msgdiv1.append(msglabel); msglabel.style = "width:100%; text-align:center;"; var msgdiv2 = document.createElement("tr"); msgdiv2.style.height = "60px"; var msginputdiv = document.createElement("td"); var msginput = document.createElement("textarea"); msginput.id = "msginput"; msginput.style = " width:100%; color:black; height:150px;"; msginputdiv.append(msginput); msgdiv2.append(msginputdiv); formdiv2.append(msgdiv1); formdiv2.append(msgdiv2); contactformmodal.append(formdiv); contactformmodal.append(formdiv2); var submitdiv = document.createElement("tr"); var submitbuttondiv = document.createElement("td"); submitbuttondiv.style = "text-align:center;"; var submitbutton = document.createElement("button"); submitbutton.innerHTML = "SUBMIT"; submitbutton.classList.add("inputListButton"); submitbutton.style.height = "30px"; submitbuttondiv.append(submitbutton); submitdiv.append(submitbuttondiv); formdiv2.append(submitdiv); var continuediv = document.createElement("tr"); continuediv.style.height = "60px"; var continueholder = document.createElement("td"); continueholder.style = "text-align:center"; continueholder.innerHTML = "OR CLICK HERE TO CONTINUE"; continuediv.append(continueholder); formdiv2.append(continuediv); returnbutton.addEventListener("click", function() { blockingdiv.parentElement.removeChild(blockingdiv); }); submitbutton.addEventListener("click", function() { if (!validateEmail(document.getElementById('mailinput').value)) { alert("YOU MUST ENTER A VALID EMAIL ADDRESS"); return false; } if (document.getElementById('nameinput').value == "") { alert("YOU MUST ENTER A NAME"); return false; } if (document.getElementById('msginput').value == "") { alert("YOU MUST ENTER A MESSAGE"); return false; } var formData = new FormData(); formData.append('tourtitle', document.getElementById('loading-header').innerHTML); formData.append('name', document.getElementById('nameinput').value); formData.append('email', document.getElementById('mailinput').value); formData.append('tel', document.getElementById('telinput').value); formData.append('msg', document.getElementById('msginput').value); formData.append('ownermail', ownermail); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/sendenquiry.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { setTimeout(function() { blockingdiv.parentElement.removeChild(blockingdiv); }, 500); } } } }); // whatsappchat = document.createElement("div"); // whatsappchat.innerHTML = "Send Message"; // contactformmodal.append(whatsappchat); }, Number(collecttimer) * 1000); } } mpSdk.Sweep.data.subscribe({ onAdded: function(index, item, collection) { sweepCollection.push(item); sweepLookupArray.push(item.uuid); sweepLookupArray.push(item.sid); } }); if (tagsdisable == "1") { await mpSdk.Mattertag.getData().then(tags => { return tags.map(tag => tag.sid); }).then(tagSids => { return mpSdk.Mattertag.remove(tagSids) }).catch(console.error); mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { tagcollection = collection; }, onRemoved: function(index, item, collection) { tagcollection = collection; } }); } else { mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { if (tagstems == 1) { var showstems = true; } else { var showstems = false; } tagcollection = collection; try { if (qs != 1) {} lookup.push(item.sid); lookup.push(item.sid); } catch (error) { console.error(error); } mpSdk.Mattertag.editStem(index, {stemVisible: showstems}); updateTags(index, item); } }) } if (typeof nArray != 'undefined' && addedtagsdisable == 0) { for (i = 0; i < nArray.length; i++) { tId = nArray[i].sid; if (tId.length < 20) { hastags = 1; } xcoord = nArray[i].xaxis; ycoord = nArray[i].yaxis; zcoord = nArray[i].zaxis; stem_xcoord = Number(nArray[i].stem_xaxis); stem_ycoord = Number(nArray[i].stem_yaxis); stem_zcoord = Number(nArray[i].stem_zaxis); if (stem_xcoord == "" || isNaN(stem_xcoord)) { stem_xcoord = 0; } if (stem_ycoord == "" || isNaN(stem_ycoord)) { stem_ycoord = 0; } if (stem_zcoord == "" || isNaN(stem_zcoord)) { stem_zcoord = 0; } importTags(i, tId, xcoord, ycoord, zcoord, stem_xcoord, stem_ycoord, stem_zcoord) } } else {} function importTags(i, tId, xcoord, ycoord, zcoord, stem_xcoord, stem_ycoord, stem_zcoord) { try { if (tagstems == 1) { var showstems = true; } else { var showstems = false; } if (!zcoord || zcoord == null || zcoord == "" || zcoord == "unused_sweep") {} else { if (mArray.indexOf(tId) != -1) { sweepPos = mArray.indexOf(tId); var title = mArray[sweepPos + 4].replace(new RegExp("\\\\", "g"), ""); var description = mArray[sweepPos + 5].replace(new RegExp("\\\\", "g"), ""); var src = mArray[sweepPos + 1]; var type = mArray[sweepPos + 2]; if (type == "VIDEO" || type == "video") { type = mpSdk.Mattertag.MediaType.VIDEO; } if (type == "PHOTO" || type == "photo") { type = mpSdk.Mattertag.MediaType.PHOTO; } if (type == "RICH" || type == "rich") { type = mpSdk.Mattertag.MediaType.RICH; } if (type == "NONE" || type == "none") { type = mpSdk.Mattertag.MediaType.NONE; } } if (typeof type == "undefined") { type = mpSdk.Mattertag.MediaType.NONE; } if (vArray.indexOf(tId) != -1) { sweepPos = vArray.indexOf(tId); var title = vArray[sweepPos + 2].replace(new RegExp("\\\\", "g"), ""); var description = vArray[sweepPos + 5].replace(new RegExp("\\\\", "g"), ""); } if (jArray.indexOf(tId) != -1) { sweepPos = jArray.indexOf(tId); var title = jArray[sweepPos + 2].replace(new RegExp("\\\\", "g"), ""); var description = jArray[sweepPos + 3]; if (description == "") { description = "Click the tag to listen"; } else { description = jArray[sweepPos + 3].replace(new RegExp("\\\\", "g"), ""); } } if (cArray.indexOf(tId) != -1) { sweepPos = cArray.indexOf(tId); var title = cArray[sweepPos + 1].replace(new RegExp("\\\\", "g"), ""); var description = cArray[sweepPos + 2].replace(new RegExp("\\\\", "g"), ""); } if (navArray.indexOf(tId) != -1) { sweepPos = navArray.indexOf(tId); var title = navArray[sweepPos + 2].replace(new RegExp("\\\\", "g"), ""); var description = navArray[sweepPos + 4].replace(new RegExp("\\\\", "g"), ""); if (description == "") { description = "Click tag to view more"; } } mpSdk.Mattertag.add([{ label: title, description: description, anchorPosition: { x: Number(xcoord), y: (+ycoord), z: Number(zcoord), }, media: { type: type, src: src }, stemVector: { // make the Mattertag stick straight up and make it 0.30 meters (~1 foot) tall x: stem_xcoord, y: stem_ycoord, z: stem_zcoord, }, color: { // blue disc r: 1.0, g: 0, b: 0, }, stemVisible: showstems }]).then(newSid => { mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { if (index == newSid) { if (lookup.indexOf(index) == -1) { lookup.push(index); lookup.push(tId); } else { lookup.splice(lookup.indexOf(index) + 1, 1, tId); } updateTags(index, item); } } }) }) } } catch (error) { console.error(error); } } function updateTags(index, item) { if (tagstems == 1) { var showstems = true; } else { var showstems = false; } var tagset = index; var tagDiscPosition = mpSdk.Mattertag.getDiscPosition(item); var xPos = tagDiscPosition.x; var yPos = tagDiscPosition.y; var zPos = tagDiscPosition.z; var realtagPos = lookup.indexOf(tagset); var realtag = lookup[realtagPos + 1]; if (typeof tArray != "undefined" && tArray != null) { var thistag = tArray.indexOf(realtag); if (thistag == -1) { changeLanguage(index, item); } else { var mType = tArray[thistag + 1]; var thistype = tArray[thistag + 2]; var thiscolor = tArray[thistag + 3]; var thisaction = tArray[thistag + 4]; var thisbackground = tArray[thistag + 5]; var thisdefact = tArray[thistag + 7]; if (thisdefact == "c") { if (mArray.indexOf(tagset) != -1) { sweepPos = mArray.indexOf(tagset); var title = mArray[sweepPos + 4]; var description = mArray[sweepPos + 5]; var src = mArray[sweepPos + 1]; var type = mArray[sweepPos + 2]; if (type == "VIDEO" || type == "video") { type = mpSdk.Mattertag.MediaType.VIDEO; } if (type == "PHOTO" || type == "photo") { type = mpSdk.Mattertag.MediaType.PHOTO; } if (type == "RICH" || type == "rich") { type = mpSdk.Mattertag.MediaType.RICH; } if (type == "NONE" || type == "none") { type = mpSdk.Mattertag.MediaType.NONE; } mpSdk.Mattertag.editBillboard(tagset, { label: title, description: description, media: { type: mpSdk.Mattertag.MediaType.NONE, src: '' } }); } if (vArray.indexOf(tagset) != -1) { sweepPos = vArray.indexOf(tagset); var title = vArray[sweepPos + 2]; var description = vArray[sweepPos + 5]; mpSdk.Mattertag.editBillboard(tagset, { label: title, description: description, media: { type: mpSdk.Mattertag.MediaType.NONE, src: '' } }); } if (jArray.indexOf(tagset) != -1) { sweepPos = jArray.indexOf(tagset); var title = jArray[sweepPos + 2]; var description = jArray[sweepPos + 3]; if (description = "") { description = "Click the tag to listen"; } mpSdk.Mattertag.editBillboard(tagset, { label: title, description: description, media: { type: mpSdk.Mattertag.MediaType.NONE, src: '' } }); } if (cArray.indexOf(tagset) != -1) { sweepPos = cArray.indexOf(tagset); var title = cArray[sweepPos + 1]; var description = cArray[sweepPos + 2]; mpSdk.Mattertag.editBillboard(tagset, { label: title, description: description, media: { type: mpSdk.Mattertag.MediaType.NONE, src: '' } }); } if (navArray.indexOf(tagset) != -1) { sweepPos = navArray.indexOf(tagset); var title = navArray[sweepPos + 2]; var description = navArray[sweepPos + 4]; if (description == "") { description = "Click tag to view more"; } mpSdk.Mattertag.editBillboard(tagset, { label: title, description: description, media: { type: mpSdk.Mattertag.MediaType.NONE, src: '' } }); } } } var thisicon = thistype + thiscolor; if (mType == "tag") { mpSdk.Mattertag.registerIcon(thisicon, baseLoc + '/assets/icons/autogenerate.php?icon=' + thistype + '&fill=' + thiscolor + '&background=' + thisbackground); mpSdk.Mattertag.editIcon(tagset, thisicon); if (tagstems == "0") { mpSdk.Mattertag.editPosition(tagset, { anchorPosition: { x: xPos, y: yPos, z: zPos, }, stemVector: { x: 0, y: 0, z: 0, }, stemVisible: showstems }); } changeLanguage(index, item); } realtag = null; } } mpSdk.Sweep.data.subscribe({ onAdded: function(index, item, collection) { changeLanguage(item.uuid, item); } }); function changeLanguage(index, item) { if (startButton) { builder = "no" } else { builder = "yes"; } if (index.length > 20) { if (typeof tArray != "undefined" && tArray != null) { var wehaveasweep = tArray.indexOf(index); if (wehaveasweep != -1) { var sweepaction = tArray[wehaveasweep + 4]; if (sweepaction == "b3daudio") { if (jArray.includes(index)) { var sweepPos = jArray.indexOf(index); var title = jArray[sweepPos + 2]; var description = jArray[sweepPos + 3]; function xmlHReq(index) { if (baselanguage != userLang) { if (dotranslation == "1") { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); title = response.title; description = response.description; jArray[sweepPos + 2] = title; jArray[sweepPos + 3] = description; } } } xmlhttp.open("GET", baseLoc + "/translate.php?type=sweep&id=" + index + "&model=" + model + "&version=" + version + "&title=" + title + "&description=" + description + "&lang=" + userLang + "&baselanguage=" + baselanguage + "&builder=" + builder, true); xmlhttp.send(); } } } xmlHReq(index); } } if (sweepaction == "b3dvideo") { if (vArray.includes(index)) { var sweepPos = vArray.indexOf(index); var title = vArray[sweepPos + 2]; var description = vArray[sweepPos + 5]; function xmlHReqVid(index) { if (baselanguage != userLang) { if (dotranslation == 1) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); title = response.title; description = response.description; vArray[sweepPos + 2] = title; vArray[sweepPos + 5] = description; } } } xmlhttp.open("GET", baseLoc + "/translate.php?type=sweep&id=" + index + "&model=" + model + "&version=" + version + "&title=" + title + "&description=" + description + "&lang=" + userLang + "&baselanguage=" + baselanguage + "&builder=" + builder, true); xmlhttp.send(); } } } xmlHReqVid(index); } } if (sweepaction == "b3dnav") { if (navArray.includes(index)) { var sweepPos = navArray.indexOf(index); var title = navArray[sweepPos + 2]; var description = vArray[sweepPos + 4]; function xmlHReqNav(index) { if (baselanguage != userLang) { if (dotranslation == 1) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); title = response.title; description = response.description; vArray[sweepPos + 2] = title; vArray[sweepPos + 4] = description; } } } xmlhttp.open("GET", baseLoc + "/translate.php?type=sweep&id=" + index + "&model=" + model + "&version=" + version + "&title=" + title + "&description=" + description + "&lang=" + userLang + "&baselanguage=" + baselanguage + "&builder=" + builder, true); xmlhttp.send(); } } } xmlHReqNav(index); } } if (sweepaction == "b3dext") { if (mArray.includes(index)) { var sweepPos = mArray.indexOf(index); var title = mArray[sweepPos + 4]; var description = mArray[sweepPos + 5]; function xmlHReqExt(index) { if (baselanguage != userLang) { if (dotranslation == 1) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); title = response.title; description = response.description; mArray[sweepPos + 4] = title; mArray[sweepPos + 5] = description; } } } xmlhttp.open("GET", baseLoc + "/translate.php?type=sweep&id=" + index + "&model=" + model + "&version=" + version + "&title=" + title + "&description=" + description + "&lang=" + userLang + "&baselanguage=" + baselanguage + "&builder=" + builder, true); xmlhttp.send(); } } } xmlHReqExt(index); } } } } } else { if (typeof tArray != "undefined" && tArray != null) { var referenceTag = lookup.indexOf(index); var referenceValue = lookup[referenceTag + 1]; var thistagPos = tArray.indexOf(referenceValue); var thisaction = tArray[thistagPos + 4]; var thisdefact = tArray[thistagPos + 7]; mytag = tArray[thistagPos]; undeftag = index; if (thisaction == "b3daudio") { var sweepPos = jArray.indexOf(referenceValue); transcriptdesc = jArray[sweepPos + 3]; } else { transcriptdesc = ""; } title = item.label; description = item.description; var uc = description.indexOf("]\uff08"); var n = description.indexOf("] ("); if (uc != -1) { var amendedTitle = description.replaceAll("]\uff08", "]("); var amendedTitle2 = amendedTitle.replaceAll("\uff09", ")"); description = amendedTitle2; } if (n != -1) { var amendedTitle = description.replaceAll("] (", "]("); description = amendedTitle; } description = encodeURIComponent(description); function xmlHReq(undeftag) { if (baselanguage != userLang) { if (dotranslation == 1) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); title = response.title; var uc = response.description.indexOf("]\uff08"); var n = response.description.indexOf("] ("); if (uc != -1) { var amendedTitle = response.description.replaceAll("]\uff08", "]("); var amendedTitle2 = amendedTitle.replaceAll("\uff09", ")"); description = response.description = amendedTitle2; } if (n != -1) { var amendedTitle = response.description.replaceAll("] (", "]("); description = response.description = amendedTitle; } if (thisaction == "b3daudio") { jArray[sweepPos + 3] = response.transcriptdesc; } dType = item.media.type; source = item.media.src; mpSdk.Mattertag.editBillboard(undeftag, { label: response.title, description: response.description, media: { type: dType, src: source } }); } } } xmlhttp.open("GET", baseLoc + "/translate.php?type=tag&id=" + referenceValue + "&model=" + model + "&version=" + version + "&title=" + title + "&description=" + description + "&transcriptdesc=" + transcriptdesc + "&lang=" + userLang + "&builder=" + builder, true); xmlhttp.send(); } } } xmlHReq(undeftag); } } } const scene = (await mpSdk.Scene.query(['scene']))[0]; if (dhbg == "1") { scene.traverse(child => { if (child.name == "Skysphere") { child.visible=false; const color1 = new THREE.Color(Number("0x" + dhbgc1)); const color2 = new THREE.Color(Number("0x" + dhbgc2)); var topcolor = color1; var bottomcolor = color2; child.material.uniforms.topColor.value = topcolor; child.material.uniforms.bottomColor.value = bottomcolor; child.material.uniformsNeedUpdate = true; } }) } iframe.focus(); mpSdk.Camera.pose.subscribe(function(pose) { var toSweep = pose.sweep; var to = sweepLookupArray[sweepLookupArray.indexOf(toSweep) - 1]; if (initialVar == 0) { if (pose.mode == "mode.inside" || pose.mode == "mode.outside") { submitAnalyticData(toSweep, "sweepenter", 1); window.sweepseconds = 0; function incrementSeconds() { window.sweepseconds += 0.5; } window.sweepcounter = setInterval(incrementSeconds, 500); if (typeof tArray != "undefined" && tArray != null) { var thistagPos = tArray.indexOf(to); var thistag = tArray[thistagPos]; if (thistagPos != -1) { var thisaction = tArray[thistagPos + 4]; var thistype = tArray[thistagPos + 1]; var hasAudio = tArray[thistagPos + 6]; if (thisaction == "b3daudio" || hasAudio == "YES") { if (baselanguage != userLang) { if (dotranslation == "1") { setTimeout(function() { audioplay(thistype, thistag); }, 1500); } else { audioplay(thistype, thistag); } } else { audioplay(thistype, thistag); } } if (thisaction == "b3dvideo") { if (baselanguage != userLang) { if (dotranslation == "1") { setTimeout(function() { videoplay(thistype, thistag); }, 1500); } } else { videoplay(thistype, thistag); } } if (thisaction == "b3dnav") {} if (thisaction == "b3dext") { if (baselanguage != userLang) { if (dotranslation == "1") { setTimeout(function() { mediaplay(thistype, thistag); }, 1500); } } else { mediaplay(thistype, thistag); } } if (thisaction == "b3dcode") { executeCode(thistag); } if (thisaction == "b3dimage") { imageplay(thistype, thistag); } if (thisaction == "b3dgallery") { galleryplay(thistype, thistag); } } } initialVar = 1; } if (rb != "0") { if (iframe.clientWidth > 1000) { $('#vflex').addClass('showing').removeClass('hidden'); $('#audiotoggle').addClass('showing').removeClass('collapsed'); $('#navHeader').addClass('showing').removeClass('collapsed'); $('#navdivider').addClass('showing').removeClass('collapsed'); $('#navDiv').addClass('showing').removeClass('collapsed'); $('#icon-right').removeAttr('hidden'); $('#icon-left').attr('hidden', true); } else { $('#vflex').addClass('showing').removeClass('hidden'); $('#audiotoggle').addClass('showing').removeClass('collapsed'); $('#icon-left').removeAttr('hidden'); } } } }); var bottomControls = iframe.contentWindow.document.getElementById("bottom-ui"); var buttonlist = iframe.contentWindow.document.getElementsByClassName("collapsible-list-items")[0]; if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { var musicdiv = iframe.contentWindow.document.createElement("div"); musicdiv.id = "musicDiv"; musicdiv.role = "button"; musicdiv.classList.add("icon-button", "button-interactive", "mode-music"); musicdiv.innerHTML = ""; musicdiv.style.paddingTop = "4px"; musicdiv.style.paddingLeft = "6px"; musicdiv.style.paddingRight = "6px"; musicdiv.style.paddingBottom = "4px"; musicdiv.style.fontSize = "22px"; musicdiv.style.filter = "drop-shadow( 2px 2px 1px rgba(0, 0, 0, .7))"; musicdiv.setAttribute("data-balloon", "Background music on/off"); buttonlist.appendChild(musicdiv); musicdiv.addEventListener("click", function() { if (audioBG.paused) { audioBG.play(); musicdiv.style.paddingTop = "4px"; musicdiv.style.paddingLeft = "6px"; musicdiv.style.paddingRight = "6px"; musicdiv.style.paddingBottom = "4px"; musicdiv.innerHTML = ""; } else { audioBG.pause(); musicdiv.style.paddingTop = "4px"; musicdiv.style.paddingLeft = "9px"; musicdiv.style.paddingRight = "9px"; musicdiv.style.paddingBottom = "4px"; musicdiv.innerHTML = ""; } }) } } if (hearingimpaired == 1) { var hearingdiv = iframe.contentWindow.document.createElement("div"); hearingdiv.role = "button"; hearingdiv.classList.add("icon-button", "button-interactive", "mode-transcripts"); hearingdiv.innerHTML = ""; hearingdiv.style.paddingTop = "5px"; hearingdiv.style.paddingLeft = "6px"; hearingdiv.style.paddingRight = "6px"; hearingdiv.style.paddingBottom = "5px"; hearingdiv.style.filter = "drop-shadow( 2px 2px 1px rgba(0, 0, 0, .7))"; hearingdiv.setAttribute("data-balloon", "Text transcript on/off"); buttonlist.appendChild(hearingdiv); hearingdiv.addEventListener("click", function() { if (toggletranscripts == 0) { toggletranscripts = 1; hearingdiv.style.paddingTop = "5px"; hearingdiv.style.paddingLeft = "6px"; hearingdiv.style.paddingRight = "6px"; hearingdiv.style.paddingBottom = "5px"; hearingdiv.innerHTML = ""; $("#apptranscription").css("z-index", 50); } else { toggletranscripts = 0; hearingdiv.style.paddingTop = "5px"; hearingdiv.style.paddingLeft = "7px"; hearingdiv.style.paddingRight = "7px"; hearingdiv.style.paddingBottom = "6px"; hearingdiv.innerHTML = ""; $("#apptranscription").css("z-index", -50); } }) } /*var questionDiv = iframe.contentWindow.document.createElement("div"); questionDiv.id = "questiondiv"; questionDiv.role = "button"; questionDiv.classList.add("icon-button", "button-interactive", "mode-questions"); questionDiv.style.paddingTop = "3px"; questionDiv.style.paddingLeft = "12px"; questionDiv.style.paddingRight = "12px"; questionDiv.style.paddingBottom = "3px"; questionDiv.style.filter = "drop-shadow( 2px 2px 1px rgba(0, 0, 0, .7))"; questionDiv.setAttribute("data-balloon", "Tour Instructions"); questionDiv.innerHTML =""; buttonlist.appendChild(questionDiv); questionDiv.addEventListener("click", function () { try{ iframe.contentDocument.getElementById('cta-container').style.opacity = 1; //iframe.contentDocument.getElementsByTagName('main')[0].addEventListener("click", closeCTA); function closeCTA() { iframe.contentDocument.getElementById('cta-container').style.opacity = 0; iframe.contentDocument.getElementsByTagName('main')[0].removeEventListener("click", closeCTA); } } catch(error) { console.error(error); } }) */ var playpauseDiv; if (ppInMpControls == "0") { playpauseDiv = document.createElement("div"); playpauseDiv.id = "audioPlayPause"; document.body.appendChild(playpauseDiv); playpauseDiv.role = "button"; playpauseDiv.classList.add("icon-button", "button-interactive", "mode-transcripts"); playpauseDiv.style.width = "50px"; playpauseDiv.style.height = "50px"; playpauseDiv.style.marginTop = "20px"; playpauseDiv.style.marginRight = "20px"; playpauseDiv.style.backgroundColor = cssBg; playpauseDiv.style.borderRadius = "100%"; //playpauseDiv.style.filter = "drop-shadow( 2px 2px 1px rgba(0, 0, 0, .7))"; playpauseDiv.setAttribute("data-balloon", "Audio play/pause"); playpauseDiv.style.display = "none"; playpauseDiv.innerHTML = ""; } else { playpauseDiv = iframe.contentWindow.document.createElement("div"); playpauseDiv.id = "audioPlayPause"; playpauseDiv.role = "button"; playpauseDiv.classList.add("icon-button", "button-interactive", "mode-transcripts"); playpauseDiv.style.paddingTop = "3px"; playpauseDiv.style.paddingLeft = "7px"; playpauseDiv.style.paddingRight = "7px"; playpauseDiv.style.paddingBottom = "3px"; playpauseDiv.style.filter = "drop-shadow( 2px 2px 1px rgba(0, 0, 0, .7))"; playpauseDiv.setAttribute("data-balloon", "Audio play/pause"); playpauseDiv.style.display = "none"; playpauseDiv.innerHTML = ""; buttonlist.appendChild(playpauseDiv); } playpauseDiv.addEventListener("click", function() { if (audio.paused) { audio.play(); if (ppInMpControls == "0") { playpauseDiv.innerHTML = ""; } else { playpauseDiv.innerHTML = ""; } isPaused = false; if (hearingimpaired == 1) { if (toggletranscripts == 1) { $("#apptranscription").css("z-index", 50); } $(".marquee span").css("animation-play-state", "running"); $(".marquee span").css("webkitAnimation-play-state", "running"); } } else { audio.pause(); if (ppInMpControls == "0") { playpauseDiv.innerHTML = ""; } else { playpauseDiv.innerHTML = ""; } isPaused = true; if (hearingimpaired == 1) { $("#apptranscription").css("z-index", -50); } $(".marquee span").css("animation-play-state", "paused"); $(".marquee span").css("webkitAnimation-play-state", "paused"); } }); mpSdk.Camera.pose.subscribe(function(pose) { if (iframe.contentDocument.getElementById('cta-container').style.opacity == 1) { iframe.contentDocument.getElementById('cta-container').style.opacity = 0; } poseCache = pose; }); mpSdk.Sweep.current.subscribe(function(currentSweep) { if (currentSweep !== "") { currentSweepArray = []; currentSweepArray.push({ "sid": currentSweep.sid, "rotation": JSON.stringify(poseCache.rotation) }); } }); mpSdk.Pointer.intersection.subscribe(intersectionData => { intersectionCache = intersectionData; intersectionCache.time = new Date().getTime(); }) if (pucks == "1" || pucks == 1) { mpSdk.Settings.update('features/sweep_pucks', false) }; await mpSdk.Scene.configure(function(renderer, three, effectComposer) { if (rendererPixelIncrease == 1) { renderer.setPixelRatio(2); } renderer.physicallyCorrectLights = true; renderer.antialias = true; renderer.shadowMap.enabled = true; renderer.shadowMap.bias = 0.0001; renderer.shadowMap.type = three.PCFSoftShadowMap; }); const raycaster = new THREE.Raycaster(); const mouse = new THREE.Vector2(); function controlsOpen(activeControl) { remove3JsInputs(); $("#controlWrapper").removeAttr("hidden"); let controls = [$("#3JsControls"), $("#mytags"), $("#mysweeps"), $("#mysec"), $("#tagAddControls"), $("#existingtagEditControls"), $("#excontrolWrapper"), $("#tlNavControls"), $("#navOrderControls"), $("#myparams"), $("#myaccess"), $("#mybgm"), $("#mycf"), $("#mylaunch"), $("#mylaunch"), $("#myui"), $("#mygt"), $("#mycss"), $("#mytheme"), $("#audiocontrols"), $("#videocontrols"), $("#mmControls"), $("#navcontrols"), $("#photoControls"), $("#htmlcontrols"), $("#defaultcontrols"), $("#tagAddControls"), $("#tagControls"), $("#existingtagEditControls")]; for (var i = 0; i < controls.length; i++) { if (controls[i][0].id == activeControl[0].id) { if (activeControl[0].id == $("#3JsControls")[0].id) { activeControl.css("display", "block"); } else { activeControl.removeAttr("hidden"); } } else { if (controls[i][0].id == $("#3JsControls")[0].id) { controls[i].css("display", "none"); } else { controls[i].attr("hidden", true); } } } } $('#controlsClose').click(function() { iframe.style.width = "100%"; $("#controlWrapper").attr("hidden", true); let controls = [$("#3JsControls"), $("#mytags"), $("#mysweeps"), $("#mysec"), $("#tagAddControls"), $("#existingtagEditControls"), $("#excontrolWrapper"), $("#tlNavControls"), $("#navOrderControls"), $("#myparams"), $("#myaccess"), $("#mybgm"), $("#mycf"), $("#myui"), $("#mygt"), $("#mycss"), $("#mytheme"), $("#audiocontrols"), $("#videocontrols"), $("#mmControls"), $("#navcontrols"), $("#photoControls"), $("#htmlcontrols"), $("#defaultcontrols"), $("#tagAddControls"), $("#tagControls"), $("#existingtagEditControls")]; for (var i = 0; i < controls.length; i++) { if (controls[i][0].id == $("#3JsControls")[0].id) { controls[i].css("display", "none"); } else { controls[i].attr("hidden", true); } } window.tag = null; }); $('#addTlNavButton').click(function() { ; $("#tlNavControls").load(baseLoc + "/tlnavcontrol.php?model=" + editmodel + "&version=" + version); activeControl = $("#tlNavControls"); controlsOpen(activeControl); }); $('#editNavOrderButton').click(function() { activeControl = $("#navOrderControls"); $("#navOrderControls").load(baseLoc + "/toplevelmenu.php?model=" + editmodel + "&version=" + version); controlsOpen(activeControl); }); $('#themeControlPage').click(function() { $("#mytheme").load(baseLoc + "/modelintrocontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mytheme"); controlsOpen(activeControl); }); $('#uiControlPage').click(function() { $("#myui").load(baseLoc + "/modeluicontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#myui"); controlsOpen(activeControl); }); $('#gtControlPage').click(function() { $("#mygt").load(baseLoc + "/modelgtcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mygt"); controlsOpen(activeControl); }); $('#launchControlPage').click(function() { $("#mylaunch").load(baseLoc + "/modellaunchcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mylaunch"); controlsOpen(activeControl); }); $('#secControlPage').click(function() { $("#mysec").load(baseLoc + "/modelseccontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mysec"); controlsOpen(activeControl); }); $('#tagControlPageSub').click(function() { $("#mytags").load(baseLoc + "/modeltagcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mytags"); controlsOpen(activeControl); }); $('#sweepControlPageSub').click(function() { $("#mysweeps").load(baseLoc + "/modelsweepcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mysweeps"); controlsOpen(activeControl); }); $('#cfControlPage').click(function() { $("#mycf").load(baseLoc + "/modelcfcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mycf"); controlsOpen(activeControl); }); $('#cssControlPage').click(function() { $("#mycss").load(baseLoc + "/modelcsscontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mycss"); controlsOpen(activeControl); }); $('#bgmControlPage').click(function() { $("#mybgm").load(baseLoc + "/modelbgmcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#mybgm"); controlsOpen(activeControl); }); $('#accessControlPage').click(function() { $("#myaccess").load(baseLoc + "/modelaccessibilitycontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#myaccess"); controlsOpen(activeControl); }); $('#urlParamControlPage').click(function() { $("#myparams").load(baseLoc + "/modelurlparamcontrols.php?model=" + editmodel + "&version=" + version); activeControl = $("#myparams"); controlsOpen(activeControl); }); $('#mymedialibrary').click(function() { var src = "modelpage"; var type = "all"; openMediaLibrary(src, type); }); $('#my3dlibrary').click(function() { var from = "MENU"; var thisdest = "https://c3d.space/wp-content/themes/pro-child-theme/mpaudio/3dmodels.php"; executeNav(from, thisdest); }); $('#existingClose').click(function() { document.getElementById("tbvflex").setAttribute("hidden", true); }); function remove3JsInputs() { try { function removeAllChildNodes(parent) { try { while (parent.firstChild) { parent.removeChild(parent.firstChild); } //parent.remove(); } catch (error) { console.error(error); } } $("#PosXinput").remove(); $("#PosYinput").remove(); $("#PosZinput").remove(); $("#RotXinput").remove(); $("#RotYinput").remove(); $("#RotZinput").remove(); $("#ScaXinput").remove(); $("#ScaYinput").remove(); $("#ScaZinput").remove(); $("#objRotXinput").remove(); $("#objRotYinput").remove(); $("#objRotZinput").remove(); $("#vidNameInput").remove(); $("#curvetitle").remove(); $("#curveinput").remove(); $("#transcriptTitle").remove(); $("#transcriptinput").remove(); $("#destDiv").remove(); $("#tagDiv").remove(); $("#destinput").remove(); $("#srcinput").remove(); $("#destlabel").remove(); $("#taglabel").remove(); $("#colorHeader").remove(); $("#colorInput").remove(); $("#bgLabel").remove(); $("#bgInput").remove(); $("#iconSelect").remove(); $("#tagType").remove(); $("#chooseIcon").remove(); $("#colorHeader").remove(); $("#animInput").remove(); $("#animDiv").remove(); $("#navActionSelect").remove(); $("#tagActionSelect").remove(); $("#chromainput").remove(); $("#chromatitle").remove(); $("#transcripttitle").remove(); $("#imgXinput").remove(); $("#imgYinput").remove(); $("#lightingdiv").remove(); $("#radiusinput").remove(); $("#radiustitle").remove(); $("#horiztitle").remove(); $("#horizinput").remove(); $("#mutetitle").remove(); $("#muteinput").remove(); $("#mcBtn").remove(); $("#emBtn").remove(); if (document.getElementById("3jsSubmitDiv") != null) { removeAllChildNodes(document.getElementById("3jsSubmitDiv")); document.getElementById("3JsControls").removeChild(document.getElementById("3jsSubmitDiv")); } document.getElementById("source").style.display = "block"; document.getElementById("3JsControls").style.display = "none"; iframe.style.width = "100%"; } catch (error) { console.error(error); } } function SvgRenderer() { 'use strict'; var group, buttonGroup, topSphere; this.inputs = { texture: null, aspect: 1, transparent: true, visible: true, opacity: 1, tagdetails: { tagcolor: "", tagbg: "", tagIcon: "", tagTitle: "", tagDesc: "", tagmedia: "", }, animation: "", dest: "", polygonOffset: false, polygonOffsetFactor: 0, polygonOffsetUnits: 0, localScale: { x: 1, y: 1, z: 1 }, localPosition: { x: 0, y: 0, z: 0 }, localRotation: { x: 0, y: 0, z: 0 } } this.events = { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true, } this.onInit = async function() { this.mesh; const thisOutputs = this.outputs; this.pivotNode; const THREE = this.context.three; const scene = this.context.scene; const root = this.context.root; const rootid = this.context.root.id; const renderer = this.context.renderer; const camera = this.context.camera; const node = this.context.root.obj3D; var comIterator = this.context.root.componentIterator(); const planeRootNode = Array.from(comIterator); this.planeRootNode = planeRootNode; const thisSvg = this; const loader = new THREE.TextureLoader(); var texture = ""; var thisinputs = this.inputs; var imageFile = baseUrl + '/wp-content/themes/pro-child-theme/mpaudio/assets/icons/autogenerate.php?icon=' + this.inputs.tagdetails.tagIcon + '&fill=' + this.inputs.tagdetails.tagcolor + '&background=' + this.inputs.tagdetails.tagbg; function xmlHReq() { var xmlhttp = new XMLHttpRequest(); var topGeometry = new THREE.CircleGeometry(0.3, 32), material1 = new THREE.MeshBasicMaterial({ map: loader.load(imageFile), side: THREE.DoubleSide, transparent: true, }); const topCylinder = new THREE.Mesh(topGeometry, material1); thisOutputs.collider = topCylinder; node.add(topCylinder); } xmlHReq(); var animation = this.inputs.animation; mpSdk.Camera.pose.subscribe(function() { if (animation != "Tumble" && animation != "Rotate") { var camvector = new THREE.Vector3(poseCache.position.x, poseCache.position.y, poseCache.position.z); node.lookAt(camvector); node.updateMatrixWorld(); } var scaleFactor = 8; var scaleVector = new THREE.Vector3(); var scale = scaleVector.subVectors(node.position, poseCache.position).length() / scaleFactor; //if (scale < 1) { scale = 1; } if (scale > 2) { scale = 2; } node.scale.set(scale, scale, 1); }) var clock = new THREE.Clock; var growBool = true; function animate() { var animation = thisSvg.inputs.animation; window.requestAnimationFrame(animate); if (animation == "Pulse") { var t = clock.getElapsedTime(); if (t >= 0.5) { growBool = !growBool; clock = new THREE.Clock; } if (growBool == true) { node.scale.x += 0.001; node.scale.y += 0.001; } else { node.scale.x -= 0.001; node.scale.y -= 0.001; } } else { if (animation == "Bloom(TBA)") { const renderScene = new THREE.RenderPass(scene, camera); const bloomPass = new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth, window.innerHeight), 1.5, 0.4, 0.85); bloomPass.threshold = 0; bloomPass.strength = 3; bloomPass.radius = 1; var composer = new THREE.EffectComposer(renderer); composer.addPass(renderScene); composer.addPass(bloomPass); } else { if (animation == "Tumble") { node.rotation.x += 0.01; node.rotation.y += 0.01; //node.rotation.z += 0.01; } else { if (animation == "Rotate") { node.rotation.y += 0.01; } else { if (animation == "aaa") {} else {} } } } } //node.rotation.x += 0.01; // node.rotation.y = Math.atan2((poseCache.position.x - node.position.x), (poseCache.position.z - node.position.z)); //let distance = node.position.distanceTo(poseCache.position); // node.scale.set(distance / 1.5, distance / 1.5, 0.01); } animate(); this.onInputsUpdated = function(oldInputs) { var newIcon = this.inputs.tagdetails.tagIcon; var newColor = this.inputs.tagdetails.tagcolor; //animation = this.inputs.animation; var newBg = this.inputs.tagdetails.tagbg; imageFile = baseLoc + '/assets/icons/autogenerate.php?icon=' + newIcon + '&fill=' + newColor + '&background=' + newBg; xmlHReq(); } this.onEvent = function(eventType, eventData) { this.notify(eventType, eventData); var clickedObjParent = this.planeRootNode; var clickedObj = this.context.root.obj3D; var thisSvg = this; var clickedObjPos = this.context.root.obj3D.position; var clickedObjRot = this.context.root.obj3D.rotation; var clickedObjSca = this.context.root.obj3D.scale; if (eventType == "INTERACTION.HOVER") { if ((clickedObjParent[0].inputs.tagdetails.tagTitle != null && clickedObjParent[0].inputs.tagdetails.tagTitle != "") || (clickedObjParent[0].inputs.dest != "" && clickedObjParent[0].inputs.dest != "0")) { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") {} else { var appendingContainer = document.getElementById("framecontainer"); if (imghover && img2hover) { mpSdk.Settings.update('features/cursor', false); iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = 'pointer'; var imghover2 = imghover; imghover = false; if ((clickedObjParent[0].inputs.tagdetails.tagTitle != null && clickedObjParent[0].inputs.tagdetails.tagTitle != "") || (clickedObjParent[0].inputs.dest.length > 0 && clickedObjParent[0].inputs.dest.length < 2)) { var hasTag = 1; var title = clickedObjParent[0].inputs.tagdetails.tagTitle; var desc = clickedObjParent[0].inputs.tagdetails.tagDesc; var media = clickedObjParent[0].inputs.tagdetails.tagmedia; if (document.getElementById("sweepInfoDiv") == null || typeof document.getElementById("sweepInfoDiv") == "undefined") { var sweepInfoDiv = document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile && iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } else { if (media != "") { sweepInfoDiv.style.maxWidth = "50vw"; } else { sweepInfoDiv.style.maxWidth = "30vw" } sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.pointerEvents = "none"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.color = "#FFFFFF"; sweepInfoDiv.style.borderRadius = "7px"; sweepInfoDiv.style.fontSize = "1em"; appendingContainer.appendChild(sweepInfoDiv); var sweepTitleDiv = document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; if (media != "") { sweepDescDiv.innerHTML = "

" + desc + "

Click for more" + "

"; } else { sweepDescDiv.innerHTML = "

" + desc + "

"; } if (!mobile) { sweepInfoDiv.append(sweepDescDiv); } else { if (title == "") { sweepInfoDiv.append(sweepDescDiv); } } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; imghover = false; } } } else { mpSdk.Settings.update('features/cursor', true); if (document.getElementById("sweepInfoDiv") != null && typeof document.getElementById("sweepInfoDiv") != "undefined") { if (img2hover) { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); } } else { imghover = true; img2hover = true; } iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = ''; imghover = true; } } } } else { if (eventType === 'INTERACTION.CLICK') { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var maincontrols = document.getElementById("3JsControls"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("tabWrapper").style.display = "none"; var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); if (maincontrols.style.display == "block") { remove3JsInputs(); } else { maincontrols.style.display = "block"; var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180.0000000000001; rotXinput.max = 180.0000000000001; rotXinput.step = 1; var thisRotX = this.inputs.localRotation.x.toFixed(3); controlsRotX.appendChild(rotXinput); rotXinput.value = thisRotX; clickedObjRot.x = Number(rotXinput.value * (Math.PI / 180)); rotXinput.addEventListener("change", function() { clickedObjRot.x = Number(rotXinput.value * (Math.PI / 180)); thisRotX = Number(rotXinput.value); //clickedObjParent.instance.inputs.localRotation.x = thisRotX; }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -180.0000000000001; rotYinput.max = 180.0000000000001; rotYinput.step = 1; var thisRotY = this.inputs.localRotation.y.toFixed(3); controlsRotY.appendChild(rotYinput); rotYinput.value = thisRotY; clickedObjRot.y = Number(rotYinput.value * (Math.PI / 180)); rotYinput.addEventListener("change", function() { clickedObjRot.y = Number(rotYinput.value * (Math.PI / 180)); thisRotY = Number(rotYinput.value); //clickedObjParent.instance.inputs.localRotation.y = thisRotY; }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.min = -180.0000000000001; rotZinput.max = 180.0000000000001; rotZinput.step = 1; var thisRotZ = this.inputs.localRotation.z.toFixed(3); controlsRotZ.appendChild(rotZinput); rotZinput.value = thisRotZ; clickedObjRot.z = Number(rotZinput.value * (Math.PI / 180)); rotZinput.addEventListener("change", function() { clickedObjRot.z = Number(rotZinput.value * (Math.PI / 180)); thisRotZ = Number(rotZinput.value); //clickedObjParent.instance.inputs.localRotation.z = thisRotZ; }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); controlScaX.style.display = "block"; scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "block"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); controlScaZ.style.display = "block"; scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) var iconButton = document.createElement("button"); iconButton.id = "chooseIcon"; iconButton.classList.add("inputListButton"); iconButton.innerHTML = "CHOOSE ICON"; controlSrc.appendChild(iconButton); var tagType = document.createElement("input"); tagType.id = "tagType"; tagType.type = "text"; tagType.setAttribute("hidden", true); tagType.value = thisSvg.inputs.tagdetails.tagIcon; controlSrc.appendChild(tagType); $("#tagType").on('change', function() { thisSvg.inputs.tagdetails.tagIcon = tagType.value; }); var colorHeader = document.createElement("h6"); colorHeader.id = "colorHeader"; colorHeader.innerHTML = "TAG COLOR"; controlSrc.appendChild(colorHeader); var colorInput = document.createElement("input"); colorInput.id = "colorInput"; colorInput.type = "text"; colorInput.classList.add("jscolor"); colorInput.setAttribute("data-jscolor", "{}"); colorInput.value = thisSvg.inputs.tagdetails.tagcolor; controlSrc.appendChild(colorInput); $("#colorInput").on('change', function() { thisSvg.inputs.tagdetails.tagcolor = colorInput.value.substring(1, colorInput.value.length); }); var bgHeader = document.createElement("h6"); bgHeader.id = "colorHeader"; bgHeader.innerHTML = "TAG BACKGROUND"; controlSrc.appendChild(bgHeader); var bgInput = document.createElement("input"); bgInput.id = "bgInput"; bgInput.type = "text"; bgInput.classList.add("jscolor"); bgInput.setAttribute("data-jscolor", "{}"); bgInput.value = thisSvg.inputs.tagdetails.tagbg; controlSrc.appendChild(bgInput); $("#bgInput").on('change', function() { thisSvg.inputs.tagdetails.tagbg = bgInput.value.substring(1, bgInput.value.length); }); var destDiv = document.createElement("div"); destDiv.id = "destDiv"; var addTagTitle = document.createElement("div"); addTagTitle.innerHTML = "
ADD TAG (LEAVE BLANK FOR NO TAG)
"; destDiv.appendChild(addTagTitle); var destTitle = document.createElement("div"); destTitle.innerHTML = "
FULL SCREEN TAG
"; destDiv.appendChild(destTitle); var destinput = document.createElement("Input"); destinput.type = "checkbox"; if (thisSvg.inputs.dest == 1 || thisSvg.inputs.dest == "1") { var fsIsChecked = true; } else { var fsIsChecked = false; } destinput.checked = fsIsChecked; destinput.id = "destInput"; destDiv.appendChild(destinput); document.getElementById("controlSrc").appendChild(destDiv); destinput.addEventListener("change", function() { if (destinput.checked == true) { var isChecked = 1; } else { var isChecked = 0; } thisSvg.inputs.dest = isChecked; }); var tagDiv = document.createElement("div"); tagDiv.id = "tagDiv"; var tagTitle = document.createElement("div"); tagTitle.innerHTML = "
TAG TITLE
"; tagDiv.appendChild(tagTitle); var tagtitleinput = document.createElement("Input"); tagtitleinput.id = "tagtitleinput"; tagtitleinput.type = "text"; tagtitleinput.value = thisSvg.inputs.tagdetails.tagTitle; tagDiv.appendChild(tagtitleinput); var tagDesc = document.createElement("div"); tagDesc.innerHTML = "
TAG DESCRIPTION
"; tagDiv.appendChild(tagDesc); var tagdescinput = document.createElement("textarea"); tagdescinput.value = ""; tagdescinput.id = "tagdescinput"; tagdescinput.value = thisSvg.inputs.tagdetails.tagDesc; tagDiv.appendChild(tagdescinput); var tagMedia = document.createElement("div"); tagMedia.innerHTML = "
TAG MEDIA URL
"; tagDiv.appendChild(tagMedia); var tagmediainput = document.createElement("Input"); tagmediainput.id = "tagmediainput"; tagmediainput.type = "url"; tagmediainput.value = thisSvg.inputs.tagdetails.tagmedia; tagDiv.appendChild(tagmediainput); document.getElementById("controlSrc").appendChild(tagDiv); tagtitleinput.addEventListener("change", function() { thisSvg.inputs.tagdetails.tagTitle = tagtitleinput.value; }); tagdescinput.addEventListener("change", function() { thisSvg.inputs.tagdetails.tagDesc = tagdescinput.value; }); tagmediainput.addEventListener("change", function() { thisSvg.inputs.tagdetails.tagmedia = tagmediainput.value; }); jscolor.install(); var animDiv = document.createElement("div"); animDiv.id = "animDiv"; animDiv.innerHTML = "
ANIMATION
"; document.getElementById("controlSrc").appendChild(animDiv); var array = ["Pulse", "Bloom(TBA)", "Rotate", "Tumble"]; var animinput = document.createElement("select"); animinput.id = "animInput"; animinput.value = thisSvg.inputs.animation; document.getElementById("controlSrc").appendChild(animinput); for (var i = 0; i < array.length; i++) { var option = document.createElement("option"); option.value = array[i]; option.text = array[i]; if (array[i] == thisSvg.inputs.animation) { option.selected = true; } animinput.appendChild(option); } $("#animInput").on('change', function() { thisSvg.inputs.animation = $("#animInput").val(); }); function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObj.name == "newButton") { vidNameInput.value = "atag_" + uuidv4(); clickedObj.name = vidNameInput.value; } else { vidNameInput.value = clickedObj.name; } document.getElementById("controlSrc").appendChild(vidNameInput); var atagSubmitDiv = document.createElement("div"); atagSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(atagSubmitDiv); var atagSubmit = document.createElement("button"); atagSubmit.setAttribute("id", "3JsAtagSubmit"); atagSubmit.classList.add("inputListButton"); atagSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(atagSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(clickedObj); clickedObj.visible = false; clickedObj = undefined; }); } } else { if ((clickedObjParent[0].inputs.tagdetails.tagTitle != null && clickedObjParent[0].inputs.tagdetails.tagTitle != "") || (clickedObjParent[0].inputs.dest.length > 0 && clickedObjParent[0].inputs.dest.length < 2 && clickedObjParent[0].inputs.dest != "0")) { var hasTag = 1; if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var appendingContainer = document.getElementById("iframecontainer") } else { var appendingContainer = document.getElementById("framecontainer"); } var title = clickedObjParent[0].inputs.tagdetails.tagTitle; var desc = clickedObjParent[0].inputs.tagdetails.tagDesc; var media = clickedObjParent[0].inputs.tagdetails.tagmedia; if (clickedObjParent[0].inputs.dest == "1") { var thisdest = clickedObjParent[0].inputs.tagdetails.tagmedia; executeNav(null, thisdest); } else { if (document.getElementById("sweepInfoDiv") != null && typeof document.getElementById("sweepInfoDiv") != "undefined") { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); } if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } $("video").prop('muted', true); if (typeof audio !== 'undefined') { if (!audio.paused && audio.currentTime > 0) { if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); audio.pause(); } } if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } var sweepInfoDiv = document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile) { if (iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.maxWidth = "90vw"; sweepInfoDiv.style.width = "90vw !important"; } } else { sweepInfoDiv.style.maxWidth = "50vw"; sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.zIndex = "10"; sweepInfoDiv.style.pointerEvents = "all"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.color = "#FFFFFF"; sweepInfoDiv.style.borderRadius = "7px"; appendingContainer.appendChild(sweepInfoDiv); sinaturalWidth = sweepInfoDiv.clientWidth; sinaturalHeight = sweepInfoDiv.clientHeight var sweepTitleDiv = document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); var closeDiv = document.createElement("span"); closeDiv.innerHTML = "

X

"; closeDiv.style.position = "absolute"; closeDiv.style.top = "-10px"; closeDiv.style.right = "10px"; closeDiv.style.cursor = "pointer"; closeDiv.addEventListener("click", function() { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").removeClass("blurry"); $("#showcase_iframe").removeClass("blurry"); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } sweepDivExists = 0; imghover = true; img2hover = true; }); sweepTitleDiv.appendChild(closeDiv); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; sweepDescDiv.innerHTML = "

" + desc + "

"; sweepInfoDiv.append(sweepDescDiv); if (media != "") { if (media.substring(media.length - 3, media.length) != "png" && media.substring(media.length - 3, media.length) != "jpg" && media.substring(media.length - 3, media.length) != "gif") { var csFrame = document.createElement("iframe"); csFrame.id = "csFrame"; csFrame.src = media; var csHolder = document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.position = "relative"; if (media.includes("mp4") || media.includes("m3u8") || media.includes("youtu") || media.includes("vimeo")) { csHolder.style.paddingBottom = "56.25%"; } else { csHolder.style.paddingBottom = "80%"; } csHolder.style.height = "0"; if (mobile) { if (iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } } else { sweepInfoDiv.style.width = "50vw"; } csFrame.style.width = "90%"; csFrame.style.position = "absolute"; csFrame.style.height = "90%"; csFrame.style.marginLeft = "5%"; csFrame.style.top = "0"; csFrame.style.left = "0"; csHolder.append(csFrame); sweepInfoDiv.append(csHolder); } else { var csHolder = document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.overflow = "auto"; var testAdded = setInterval(function() { var frameWidth = appendingContainer.contents().find("#sweepInfoDiv").width(); if (typeof frameWidth != "undefined") { csHolder.style.height = frameWidth * 9 / 20 + "px"; clearInterval(testAdded); } }, 100); csHolder.style.marginBottom = "20px"; sweepInfoDiv.append(csHolder); var csFrame = document.createElement("img"); csFrame.id = "csFrame"; csFrame.src = media; csFrame.style.width = "100%"; csFrame.style.overflow = "auto"; csHolder.append(csFrame); } updateCss(); } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; imghover = false; img2hover = false; } } else { //retrofit for box if (clickedObjParent[0].inputs.dest.length > 2) { var thisdest = clickedObjParent[0].inputs.tagdetails.tagmedia; executeNav(null, thisdest); } } } } } } } } function makeSvgRenderer() { return new SvgRenderer(); } function nadirPatch () { this.inputs = { "src": "", "opacity":0.3, "radius":0.75 }; this.onInit = function() { try { const THREE = this.context.three; const scene = this.context.scene; const root = this.context.root; const rootid = this.context.root.id; const renderer = this.context.renderer; const camera = this.context.camera; const node = this.context.root.obj3D; const imageFile = this.inputs.src; const nadirgeometry = new THREE.CircleGeometry( this.inputs.radius, 64 ); nadirgeometry.rotateX(-Math.PI * 0.5); const loader = new THREE.TextureLoader(); if (this.inputs.src.substring(0,5) == "https") { var nadirmaterial = new THREE.MeshBasicMaterial({ map: loader.load(this.inputs.src), side: THREE.DoubleSide, transparent: false, }); } else { var nadirmaterial = new THREE.MeshBasicMaterial({ color: Number("0x" + this.inputs.src) }); } this.nadirmesh = new THREE.Mesh(nadirgeometry, nadirmaterial ); this.nadirmesh.material.transparent = true; this.nadirmesh.material.opacity = this.inputs.opacity; node.add(this.nadirmesh); scene.add(node); mpSdk.on(mpSdk.Sweep.Event.EXIT, function(from, to) { var puck = scene.getObjectByName(from); if (typeof puck == "undefined") { puck.visible = true; } node.visible = false; }) mpSdk.on(mpSdk.Sweep.Event.ENTER, function(from, to) { var puck = scene.getObjectByName(to); if (typeof puck == "undefined") { var checkPuck = setInterval(function () { puck = scene.getObjectByName(to); if (typeof puck != "undefined") { puck.visible = false; node.position.x = poseCache.position.x node.position.y = puck.position.y + 0.01; node.position.z = poseCache.position.z node.visible = true; clearInterval(checkPuck); checkPuck = null; } },200); } else { node.position.x = poseCache.position.x node.position.y = puck.position.y + 0.01; node.position.z = poseCache.position.z node.visible = true; } }) } catch (error) { console.error(error) } } this.onInputsUpdated = function(oldInputs) { } }; function makeNadirPatch() { return new nadirPatch(); } function shadowInit() { this.inputs = { "alintensity": null, "hlintensity": null, "dlintensity": null, "dlopacity": null, "name": null }; this.onInit = function() { this.name = "shadowInit"; const THREE = this.context.three; const scene = this.context.scene; const root = this.context.root; const pivotNode = new THREE.Group(); const pivotNode2 = new THREE.Object3D; const thisElement = this; pivotNode.name = "shadowgeometry" this.outputs.objectRoot = pivotNode; this.outputs.collider = pivotNode; if (hasObject == true) { var vsdiv = iframe.contentWindow.document.createElement("div"); vsdiv.id = "vsDiv"; vsdiv.role = "button"; var vsshowing = true; vsdiv.classList.add("icon-button", "button-interactive", "mode-music"); vsdiv.innerHTML = ""; vsdiv.style.paddingTop = "4px"; vsdiv.style.paddingLeft = "6px"; vsdiv.style.paddingRight = "6px"; vsdiv.style.paddingBottom = "4px"; vsdiv.style.fontSize = "22px"; vsdiv.style.filter = "drop-shadow( 2px 2px 1px rgba(0, 0, 0, .7))"; vsdiv.setAttribute("data-balloon", "Show/hide virtual staging"); buttonlist.insertBefore(vsdiv, new_fs_element) vsdiv.addEventListener("click", function() { if (vsshowing == true) { scene.traverse(child => { if (child.type == "Object3D") { if (child.name.substring(0, 4) == "gltf") { child.visible = false; } } }); vsdiv.innerHTML = ""; vsshowing = false; } else { scene.traverse(child => { if (child.type == "Object3D") { if (child.name.substring(0, 4) == "gltf") { child.visible = true; } } }); vsdiv.innerHTML = ""; vsshowing = true; } }) } if (this.inputs.alintensity == "") { var alIntensity = 5; } else { var alIntensity = this.inputs.alintensity } this.onInputsUpdated = function(oldInputs) { if (oldInputs.alintensity != this.inputs.alintensity) { alIntensity = this.inputs.alintensity; } } sceneDlIntensity = 2; const ambientlight = new THREE.AmbientLight(0xffffff, alIntensity); ambientlight.name = "SCENE_AMBIENT"; pivotNode.add(ambientlight); scene.traverse(child => { if (child.name.substring(0, 5) == "Floor") { child.traverse(newchild => { if (newchild.name.substring(0, 4) == "Room") { const geo = newchild.geometry.clone(); geo.computeVertexNormals(); //geo.computeFaceNormals(); const planeMaterial = new THREE.ShadowMaterial({ "side": THREE.FrontSide }); planeMaterial.opacity = thisElement.inputs.dlopacity; var plane = new THREE.Mesh(geo, planeMaterial); plane.renderOrder = 4; plane.receiveShadow = true; plane.castShadow = false; plane.translateX(0.0001); plane.translateZ(0.0001); plane.translateY(0.001); plane.name = newchild.name + "_shadow_1"; scene.add(plane); var plane2 = new THREE.Mesh(geo, planeMaterial); plane2.renderOrder = 4; plane2.receiveShadow = true; plane.castShadow = false; plane2.translateX(-0.0001); plane2.translateZ(-0.0001); plane2.translateY(-0.011); plane2.name = newchild.name + "_shadow_2"; scene.add(plane2); } }) } }); } } function makeShadowInit() { return new shadowInit(); } function SpotLight1() { this.inputs = { "enabled": null, "color": { r: 0, g: 0, b: 0 }, "intensity": 0, "decay": 2, "angle": 0, "focus": 1, "localPosition": { x: 0, y: 0, z: 0 }, "castShadow": null, }; this.onInit = function() { this.context.renderer.shadowMap.enabled = true; const root = this.context.root; const scene = this.context.scene; let model = null; let obj = null; const THREE = this.context.three; const node = this.context.root.obj3D; this.spotLight = new THREE.SpotLight(0xffffff, 1, 1000, Math.PI / 8, 1); this.spotLight.name = this.context.root.obj3D.name + "spotlight1"; this.spotLight.intensity = this.inputs.intensity; this.spotLight.decay = this.inputs.decay; this.spotLight.castShadow = false; if (this.inputs.localPosition.x == 0 && this.inputs.localPosition.y == 0 && this.inputs.localPosition.z == 0) { this.spotLight.position.set(1, 3, 1); } else { this.spotLight.position.x = this.inputs.localPosition.x; this.spotLight.position.y = this.inputs.localPosition.y; this.spotLight.position.z = this.inputs.localPosition.z; } this.spotLight.target = node; const targetPos = new THREE.Vector3(0, 0, 0); this.spotLight.angle = this.inputs.angle; node.add(this.spotLight); if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.spotHelp = new THREE.SpotLightHelper(this.spotLight); this.spotHelp.name = this.context.root.obj3D.name + "_spot1helper"; this.spotHelp.visible = false; scene.add(this.spotHelp) } this.onInputsUpdated = function(oldInputs) { if (oldInputs.intensity !== this.inputs.intensity) { this.spotLight.intensity = this.inputs.intensity; } if (this.spotLight.position !== this.inputs.localPosition) { this.spotLight.position.x = this.inputs.localPosition.x; this.spotLight.position.z = this.inputs.localPosition.z; } if (oldInputs.decay !== this.inputs.decay) { this.spotLight.decay = this.inputs.decay; } if (oldInputs.angle !== this.inputs.angle) { this.spotLight.angle = this.inputs.angle; } if (oldInputs.castShadow !== this.inputs.castShadow) { this.spotLight.castShadow = this.inputs.castShadow; } if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.spotHelp.update(); } } } } function makeSpotLight1() { return new SpotLight1(); } function SpotLight2() { this.inputs = { "enabled": null, "color": { r: 0, g: 0, b: 0 }, "intensity": 0, "decay": 2, "angle": 0, "localPosition": { x: 0, y: 0, z: 0 }, "castShadow": null, }; this.onInit = function() { this.context.renderer.shadowMap.enabled = true; const root = this.context.root; const scene = this.context.scene; let model = null; let obj = null; const THREE = this.context.three; const node = this.context.root.obj3D; this.spotLight = new THREE.SpotLight(0xffffff, 1, 1000, Math.PI / 8, 1); this.spotLight.name = this.context.root.obj3D.name + "spotlight2"; this.spotLight.intensity = this.inputs.intensity; this.spotLight.decay = this.inputs.decay; this.spotLight.castShadow = false; this.spotLight.target = node; if (this.inputs.localPosition.x == 0 && this.inputs.localPosition.y == 0 && this.inputs.localPosition.z == 0) { this.spotLight.position.set(1, 0.3, 1); } else { this.spotLight.position.x = this.inputs.localPosition.x; this.spotLight.position.y = this.inputs.localPosition.y; this.spotLight.position.z = this.inputs.localPosition.z; } const targetPos = new THREE.Vector3(0, 0, 0); this.spotLight.angle = this.inputs.angle; this.spotLight.updateMatrixWorld; node.add(this.spotLight); if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.spotHelp = new THREE.SpotLightHelper(this.spotLight); this.spotHelp.name = this.context.root.obj3D.name + "_spot2helper"; this.spotHelp.visible = false; scene.add(this.spotHelp); } this.onInputsUpdated = function(oldInputs) { if (oldInputs.intensity !== this.inputs.intensity) { this.spotLight.intensity = this.inputs.intensity; } if (this.spotLight.position !== this.inputs.localPosition) { this.spotLight.position.x = this.inputs.localPosition.x; this.spotLight.position.z = this.inputs.localPosition.z; } if (oldInputs.decay !== this.inputs.decay) { this.spotLight.decay = this.inputs.decay; } if (oldInputs.angle !== this.inputs.angle) { this.spotLight.angle = this.inputs.angle; } if (oldInputs.castShadow !== this.inputs.castShadow) { this.spotLight.castShadow = this.inputs.castShadow; } if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.spotHelp.update(); } this.spotLight.updateMatrixWorld(); } } } function makeSpotLight2() { return new SpotLight2(); } function ShadowGeometry() { this.inputs = { "angleValue": 0, "radiusValue": 0, "sensor": false, "dlt": 2, "dlb": -2, "dll": -2, "dlr": 2, "dln": 18.2, "dlf": 20.5, "sl1a": 0, "sl1r": 1, "sl1d": 2, "sl1h": 3, "sl2a": 0, "sl2r": 1, "sl2d": 2, "sl2h": 3, "localRotation": { r: 0, g: 0, b: 0 }, "localScale": { x: 0, y: 0, z: 0 }, }; this.onInit = async function() { // make sure the renderer has shadowmaps enabled. this.context.renderer.shadowMap.enabled = true; const Renderer = this.context.renderer; const root = this.context.root; const scene = this.context.scene; const camera = this.context.camera; let model = null; let obj = null; const THREE = this.context.three; const node = this.context.root.obj3D; const thisElement = (this); for (const component of root.componentIterator()) { if (component.componentType === 'mp.shadowGeometry') { component.rotation = thisElement.inputs.localRotation; } if (component.componentType === 'mp.directionalLight') { componentDirectional = component; component.inputs.position.x = Number(thisElement.inputs.radiusValue) * Math.cos(thisElement.inputs.angleValue); component.inputs.position.y = 20; component.inputs.position.z = Number(thisElement.inputs.radiusValue) * Math.sin(thisElement.inputs.angleValue); component.light.shadow.camera.top = Number(thisElement.inputs.dlt); component.light.name = node.name + "_DirectionalLight"; component.light.shadow.camera.bottom = Number(thisElement.inputs.dlb); component.light.shadow.camera.right = Number(thisElement.inputs.dlr); component.light.shadow.camera.left = Number(thisElement.inputs.dll); component.light.shadow.camera.near = Number(thisElement.inputs.dln); component.light.shadow.camera.far = Number(thisElement.inputs.dlf); component.light.shadow.mapSize.width = 1024; component.light.shadow.mapSize.height = 1024; component.lightHelper.name = node.name + "_DirectionalLightHelper"; component.lightHelper.position.x = Number(thisElement.inputs.radiusValue) * Math.cos(thisElement.inputs.angleValue); component.lightHelper.position.z = Number(thisElement.inputs.radiusValue) * Math.sin(thisElement.inputs.angleValue); dlshadowhelper = new THREE.CameraHelper(component.light.shadow.camera); dlshadowhelper.name = node.name + "_DirectionalLightShadowHelper"; dlshadowhelper.visible = false; scene.add(dlshadowhelper); component.light.updateMatrixWorld(); component.lightHelper.updateMatrixWorld(); } if (component.componentType === 'mp.spotLight1') { component.spotLight.distance = thisElement.inputs.sl1d; component.spotLight.position.y = thisElement.inputs.sl1h; component.inputs.localPosition.x = Number(thisElement.inputs.sl1r) * Math.cos(thisElement.inputs.sl1a); component.inputs.localPosition.z = Number(thisElement.inputs.sl1r) * Math.sin(thisElement.inputs.sl1a); } if (component.componentType === 'mp.spotLight2') { component.spotLight.distance = thisElement.inputs.sl2d; component.spotLight.position.y = thisElement.inputs.sl2h; component.inputs.localPosition.x = Number(thisElement.inputs.sl2r) * Math.cos(thisElement.inputs.sl2a); component.inputs.localPosition.z = Number(thisElement.inputs.sl2r) * Math.sin(thisElement.inputs.sl2a); } if (component.componentType === 'mp.gltfLoader') { const desiredHeight = this.context.root.scale.x; // meters let scale = 1; component.outputs.onPropertyChanged('loadingState', async function(state) { if (state == 'Loaded') { component.outputs.objectRoot.quaternion.w = 0; component.outputs.objectRoot.quaternion.x = 0; component.outputs.objectRoot.quaternion.y = 0; component.outputs.objectRoot.quaternion.z = 0; component.outputs.objectRoot.name = "TEST"; const box = new component.context.three.Box3(); box.setFromObject(component.outputs.objectRoot); const curHeight = box.max.y - box.min.y; scale = desiredHeight / curHeight; component.inputs.localScale = { x: scale, y: scale, z: scale }; component.outputs.objectRoot.visible = false; component.outputs.objectRoot.visible = true; component.events = { "INTERACTION.CLICK": true, } component.outputs.objectRoot.updateMatrixWorld(); if (thisElement.inputs.sensor == 1) { try { const srcbox = new component.context.three.Box3(); component.outputs.objectRoot.updateMatrixWorld(); srcbox.setFromObject(component.outputs.objectRoot) var width = srcbox.max.x - srcbox.min.x; var height = srcbox.max.y - srcbox.min.y; var depth = srcbox.max.z - srcbox.min.z; srcbox.min.x = node.position.x - (width / 2 * scale) + 0.01 srcbox.max.x = node.position.x + (width / 2 * scale) + 0.01 srcbox.min.y = node.position.y srcbox.max.y = node.position.y + (height * scale) + 0.01 srcbox.min.z = node.position.z - (depth / 2 * scale) - 0.01 srcbox.max.z = node.position.z + (depth / 2 * scale) + 0.01 var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.max.x, y: srcbox.min.y + 0.1, z: srcbox.min.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.min.x, y: srcbox.min.y + 0.1, z: srcbox.max.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE2", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.min.x, y: srcbox.min.y + 0.1, z: srcbox.min.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE3", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.max.x, y: srcbox.min.y + 0.1, z: srcbox.max.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE4", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.max.x, y: srcbox.max.y, z: srcbox.min.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE5", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.min.x, y: srcbox.max.y, z: srcbox.max.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE6", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.min.x, y: srcbox.max.y, z: srcbox.min.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE7", "type": "gltf" }, }); sensor.addSource(source); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: srcbox.max.x, y: srcbox.max.y, z: srcbox.max.z, }, radius: 100, userData: { "name": node.name, "id": node.name + "OBJSOURCE8", "type": "gltf" }, }); sensor.addSource(source); } catch (error) { console.error(error); } component.outputs.objectRoot.traverse(async function(child) { if (child.type == "Object3D" && child.name == "TEST") { child.updateMatrixWorld(true); child.castShadow = true; } }) const readings = []; sensor.readings.subscribe({ onAdded(source, reading) { readings.push(source.userData.id); readings.push(reading.inView); var index = source.userData.id; }, onUpdated(source, reading) { var thisSource = readings.indexOf(source.userData.id) + 1; var thisGltf = scene.getObjectByName(source.userData.name); readings[thisSource] = reading.inView; var srcName = source.userData.id.substring(source.userData.id.length - 1, source.userData.id.length); if (source.userData.id.substring(source.userData.id.length - 1, source.userData.id.length) == "E") { var source1 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length)) + 1; var source2 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "2") + 1; var source3 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "3") + 1; var source4 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "4") + 1; var source5 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "5") + 1; var source6 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "6") + 1; var source7 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "7") + 1; var source8 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length) + "8") + 1; var state1 = readings[source1]; var state2 = readings[source2]; var state3 = readings[source3]; var state4 = readings[source4]; var state5 = readings[source5]; var state6 = readings[source6]; var state7 = readings[source7]; var state8 = readings[source8]; } else { var source1 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1)) + 1; var source2 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "2") + 1; var source3 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "3") + 1; var source4 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "4") + 1; var source5 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "5") + 1; var source6 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "6") + 1; var source7 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "7") + 1; var source8 = readings.indexOf(source.userData.id.substring(0, source.userData.id.length - 1) + "8") + 1; var state1 = readings[source1]; var state2 = readings[source2]; var state3 = readings[source3]; var state4 = readings[source4]; var state5 = readings[source5]; var state6 = readings[source6]; var state7 = readings[source7]; var state8 = readings[source8]; } var index = source.userData.id; if (index.substring(0, 4) == "gltf") { if (poseCache.mode == "mode.inside") { if (readings[thisSource] == 1 || (state1 == true || state2 == true || state3 == true || state4 == true || state5 == true || state6 == true || state7 == true || state8 == true)) { thisGltf.traverse(async function(newchild) { if (newchild.type == "Mesh") { newchild.castShadow = true; newchild.receiveShadow = true; } }) } else { thisGltf.traverse(async function(newchild) { if (newchild.type == "Mesh") { newchild.castShadow = false; newchild.receiveShadow = true; } }) } } else { component.outputs.objectRoot.traverse(async function(newchild) { if (newchild.type == "Mesh") { newchild.castShadow = false; newchild.receiveShadow = true; } }); } } } }); } component.onEvent = function(eventType, eventData, ) { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { if (eventType === "INTERACTION.CLICK") { try { if (typeof oldClickedObj != "undefined" && oldClickedObj != clickedObj) { scene.getObjectByName(oldClickedObj.name + "_spot1helper").visible = false; scene.getObjectByName(oldClickedObj.name + "_spot2helper").visible = false; } baseRot = this.inputs.localRotation; clickedObjRot = this.pivot.rotation; clickedObjSca = this.context.root.obj3D.scale clickedObj = this.context.root.obj3D; clickedObjPos = this.context.root.obj3D.position; mainScene = eventData.collider.parent.parent.parent; var shadowInit = scene.getObjectByName("ShadowInit"); clickedObjAl = shadowInit.getObjectByName("SCENE_AMBIENT"); sceneDl = shadowInit.getObjectByName("SCENE_DIRECTIONAL"); clickedObjDl = scene.getObjectByName(clickedObj.name + "_DirectionalLight"); dlhelper = scene.getObjectByName(clickedObj.name + "_DirectionalLightHelper"); dlshadowhelper = scene.getObjectByName(clickedObj.name + "_DirectionalLightShadowHelper"); spotLight = node.getObjectByName(clickedObj.name + "spotlight1"); spot1helper = scene.getObjectByName(clickedObj.name + "_spot1helper"); spotLight2 = node.getObjectByName(clickedObj.name + "spotlight2"); spot2helper = scene.getObjectByName(clickedObj.name + "_spot2helper"); scene.traverse(child => { if (child.type == "Mesh" && child.name.substring(0, 4) == "Room") { clickedObjSg = child.material.opacity; } }); clickedObj.traverse(child => { /* if (child.type == "DirectionalLight") { clickedObjDl = child; dlshadowhelper = new THREE.CameraHelper(clickedObjDl.shadow.camera ); scene.add(dlshadowhelper); dlhelper = new THREE.DirectionalLightHelper(clickedObjDl, 5 ); scene.add( dlhelper ); dlhelper.visible = false; } */ if (child.name == "TEST") { clickedObjModel = child; } }) clickedObjParent = this.context.root; clickedObjParentName = this.context.root.name; var maincontrols = document.getElementById("3JsControls"); if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); if (document.getElementById("3JsControls").style.display == "block") { spot1helper.visible = false; spot2helper.visible = false; dlhelper.visible = false; dlshadowhelper.visible = false; remove3JsInputs(); oldClickedObj = confClickedObj; return; } else { document.getElementById("tabWrapper").style.display = "block"; if (maincontrols.style.display == "block") { spot1helper.visible = false; spot2helper.visible = false; if (clickedObjDl.castShadow == true) { dlhelper.visible = true; dlshadowhelper.visible = true; } else { dlhelper.visible = false; dlshadowhelper.visible = false; } remove3JsInputs(); oldClickedObj = confClickedObj; } else { spot1helper.visible = false; spot2helper.visible = false; dlhelper.visible = false; dlshadowhelper.visible = false; iframe.style.width = "calc(100% - 230px)%"; maincontrols.style.display = "block" var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var objRotXinput = document.createElement("Input"); objRotXinput.type = "number"; objRotXinput.id = "objRotXinput"; objRotXinput.style.display = "none"; objRotXinput.value = Number(baseRot.x.toFixed(3)); document.getElementById("rotation").appendChild(objRotXinput); var objRotYinput = document.createElement("Input"); objRotYinput.type = "number"; objRotYinput.id = "objRotYinput"; objRotYinput.style.display = "none"; objRotYinput.value = Number(baseRot.y.toFixed(3)); document.getElementById("rotation").appendChild(objRotYinput); var objRotZinput = document.createElement("Input"); objRotZinput.type = "number"; objRotZinput.id = "objRotZinput"; objRotZinput.style.display = "none"; objRotZinput.value = Number(baseRot.z.toFixed(3)); document.getElementById("rotation").appendChild(objRotZinput); var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.step = 0.01; controlsRotX.appendChild(rotXinput); rotXinput.value = Number(clickedObjModel.rotation.x.toFixed(3)); rotXinput.addEventListener("change", function() { clickedObjModel.rotation.x = Number(rotXinput.value); clickedObj.updateMatrixWorld(); }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -1.570000000000001; rotYinput.max = 1.570000000000001; rotYinput.step = 0.01; controlsRotY.appendChild(rotYinput); rotYinput.value = Number(clickedObjModel.rotation.y.toFixed(3)); rotYinput.addEventListener("change", function() { clickedObjModel.rotation.set(Number(rotXinput.value), Number(rotYinput.value), Number(rotZinput.value)); clickedObj.updateMatrixWorld(); }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.step = 0.01; controlsRotZ.appendChild(rotZinput); rotZinput.value = Number(clickedObjRot.z.toFixed(3)); rotZinput.addEventListener("change", function() { clickedObjModel.rotation.z = Number(rotZinput.value); clickedObj.updateMatrixWorld(); }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); clickedObjSca.y = Number(scaXinput.value); clickedObjSca.z = Number(scaXinput.value); scaYinput.value = Number(scaXinput.value); scaZinput.value = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "none"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); controlScaZ.style.display = "none"; scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) var lightDiv = document.createElement("div"); lightDiv.id = "lightingdiv"; lightDiv.style.display = "none"; document.getElementById("3JsControls").append(lightDiv); var buttonLightDiv = document.createElement("div"); buttonLightDiv.id = "buttonLightDiv"; document.getElementById("lightingdiv").append(buttonLightDiv); var slbutton = document.createElement("button"); slbutton.id = "dlbutton"; buttonLightDiv.appendChild(slbutton); slbutton.classList.add("inputListButton"); slbutton.innerHTML = "SCENE LIGHTING"; slbutton.addEventListener("click", function() { sceneLightDiv.removeAttribute("hidden"); objectLightDiv.setAttribute("hidden", true); sl1LightDiv.setAttribute("hidden", true); sl2LightDiv.setAttribute("hidden", true); spot1helper.visible = false; spot2helper.visible = false; dlhelper.visible = false; dlshadowhelper.visible = false; }); var dlbutton = document.createElement("button"); dlbutton.id = "dlbutton"; buttonLightDiv.appendChild(dlbutton); dlbutton.classList.add("inputListButton"); dlbutton.innerHTML = "OBJECT DIRECTIONAL LIGHTING"; dlbutton.addEventListener("click", function() { objectLightDiv.removeAttribute("hidden"); sceneLightDiv.setAttribute("hidden", true); sl1LightDiv.setAttribute("hidden", true); sl2LightDiv.setAttribute("hidden", true); spot1helper.visible = false; spot2helper.visible = false; dlhelper.visible = true; dlshadowhelper.visible = true; }); var sl1button = document.createElement("button"); sl1button.id = "sl1button"; buttonLightDiv.appendChild(sl1button); sl1button.classList.add("inputListButton"); sl1button.innerHTML = "OBJECT SPOTLIGHT1"; sl1button.addEventListener("click", function() { sl1LightDiv.removeAttribute("hidden"); spot1helper.visible = true; spot2helper.visible = false; dlhelper.visible = false; dlshadowhelper.visible = false; objectLightDiv.setAttribute("hidden", true); sceneLightDiv.setAttribute("hidden", true); sl2LightDiv.setAttribute("hidden", true); }); var sl2button = document.createElement("button"); sl2button.id = "sl2button"; buttonLightDiv.appendChild(sl2button); sl2button.classList.add("inputListButton"); sl2button.innerHTML = "OBJECT SPOTLIGHT 2"; sl2button.addEventListener("click", function() { sl2LightDiv.removeAttribute("hidden"); spot1helper.visible = false; spot2helper.visible = true; dlhelper.visible = false; dlshadowhelper.visible = false; objectLightDiv.setAttribute("hidden", true); sl1LightDiv.setAttribute("hidden", true); sceneLightDiv.setAttribute("hidden", true); }); var sceneLightDiv = document.createElement("div"); sceneLightDiv.id = "scenelighting"; sceneLightDiv.innerHTML = "
SCENE LIGHTING
"; lightDiv.append(sceneLightDiv); sceneLightDiv.setAttribute("hidden", true); var ambientintensityHeader = document.createElement("div"); ambientintensityHeader.id = "ambientintensityHeader"; ambientintensityHeader.innerHTML = "
AMBIENT INTENSITY
"; sceneLightDiv.appendChild(ambientintensityHeader); var alIinput = document.createElement("Input"); alIinput.id = "alIinput"; alIinput.type = "number"; alIinput.step = 0.1; sceneLightDiv.appendChild(alIinput); alIinput.value = clickedObjAl.intensity.toFixed(3); alIinput.addEventListener("change", function() { clickedObjAl.intensity = Number(alIinput.value); }); var directionalopacityHeader = document.createElement("div"); directionalopacityHeader.id = "directionalopacityHeader"; directionalopacityHeader.innerHTML = "
SHADOW OPACITY
"; sceneLightDiv.appendChild(directionalopacityHeader); var dlOpacityinput = document.createElement("Input"); dlOpacityinput.id = "dlOpacityinput"; dlOpacityinput.type = "number"; dlOpacityinput.value = clickedObjSg; dlOpacityinput.step = 0.01; sceneLightDiv.appendChild(dlOpacityinput); dlOpacityinput.addEventListener("change", function() { scene.traverse(child => { if (child.type == "Mesh" && child.name.substring(child.name.length - 8, child.name.length - 2) == "shadow") { child.material.opacity = dlOpacityinput.value; } }) }); var objectLightDiv = document.createElement("div"); objectLightDiv.id = "objectlighting"; objectLightDiv.innerHTML = "
DIRECTIONAL LIGHTING
"; document.getElementById("lightingdiv").appendChild(objectLightDiv); objectLightDiv.setAttribute("hidden", true); var directionalshadowHeader = document.createElement("div"); directionalshadowHeader.id = "directionalshadowHeader"; directionalshadowHeader.innerHTML = "
SHADOW ENABLE
"; objectLightDiv.appendChild(directionalshadowHeader); var EdlInput = document.createElement("Input"); EdlInput.type = "checkbox"; EdlInput.checked = clickedObjDl.castShadow; EdlInput.id = "EdlInput"; objectLightDiv.appendChild(EdlInput); EdlInput.addEventListener("change", function() { clickedObjDl.castShadow = EdlInput.checked; if (EdlInput.checked) { dlshadowhelper.visible = true; } else { dlshadowhelper.visible = false; } }); var directionalSensorHeader = document.createElement("div"); directionalSensorHeader.id = "directionalshadowHeader"; directionalSensorHeader.innerHTML = "
ADD SENSORS
"; var dlSensorInput = document.createElement("Input"); objectLightDiv.appendChild(directionalSensorHeader); dlSensorInput.type = "checkbox"; if (thisElement.inputs.sensor == 1) { dlSensorInput.checked = true; } else { dlSensorInput.checked = false; } dlSensorInput.id = "dlSensorInput"; objectLightDiv.appendChild(dlSensorInput); var dl1Div = document.createElement("div"); dl1Div.id = "dirlightInt"; dl1Div.innerHTML = "
DIRECTIONAL INTENSITY
"; objectLightDiv.appendChild(dl1Div); var dlIntensityInput = document.createElement("Input"); dlIntensityInput.id = "dlIntensityInput"; dlIntensityInput.type = "number"; dlIntensityInput.step = 0.1; dl1Div.appendChild(dlIntensityInput); dlIntensityInput.value = dirLightAllocated.toFixed(3); dlIntensityInput.addEventListener("change", function() { var lightAllocate = 0; var lightnames = []; scene.traverse(child => { if (child.type == "DirectionalLight") { lightnames.push(child.name); } }) dirLightAllocated = Number(dlIntensityInput.value); lightAllocate = dirLightAllocated / dirLightSources; for (i = 0; i < lightnames.length; i++) { var light = scene.getObjectByName(lightnames[i]); light.intensity = lightAllocate; } }); var dltDiv = document.createElement("div"); dltDiv.id = "dirlightTop"; dltDiv.innerHTML = "
SHADOW TOP
"; objectLightDiv.appendChild(dltDiv); var dlTopInput = document.createElement("Input"); dlTopInput.id = "dlTopInput"; dlTopInput.type = "number"; dlTopInput.step = 0.1; objectLightDiv.appendChild(dlTopInput); dlTopInput.value = clickedObjDl.shadow.camera.top.toFixed(1); dlTopInput.addEventListener("change", function() { clickedObjDl.shadow.camera.top = Number(dlTopInput.value); clickedObjDl.updateMatrixWorld(); clickedObjDl.shadow.camera.updateProjectionMatrix(); dlshadowhelper.update(); }); var dlbDiv = document.createElement("div"); dlbDiv.id = "dirlightBottom"; dlbDiv.innerHTML = "
SHADOW BOTTOM
"; objectLightDiv.appendChild(dlbDiv); var dlBottomInput = document.createElement("Input"); dlBottomInput.id = "dlBottomInput"; dlBottomInput.type = "number"; dlBottomInput.step = 0.1; objectLightDiv.appendChild(dlBottomInput); dlBottomInput.value = clickedObjDl.shadow.camera.bottom.toFixed(1); dlBottomInput.addEventListener("change", function() { clickedObjDl.shadow.camera.bottom = Number(dlBottomInput.value); clickedObjDl.updateMatrixWorld(); clickedObjDl.shadow.camera.updateProjectionMatrix(); dlshadowhelper.update(); }); var dlLDiv = document.createElement("div"); dlLDiv.id = "dirlightBottom"; dlLDiv.innerHTML = "
SHADOW LEFT
"; objectLightDiv.appendChild(dlLDiv); var dlLeftInput = document.createElement("Input"); dlLeftInput.id = "dlLeftInput"; dlLeftInput.type = "number"; dlLeftInput.step = 0.1; objectLightDiv.appendChild(dlLeftInput); dlLeftInput.value = clickedObjDl.shadow.camera.left.toFixed(1); dlLeftInput.addEventListener("change", function() { clickedObjDl.shadow.camera.left = Number(dlLeftInput.value); clickedObjDl.updateMatrixWorld(); clickedObjDl.shadow.camera.updateProjectionMatrix(); dlshadowhelper.update(); }); var dlRDiv = document.createElement("div"); dlRDiv.id = "dirlightBottom"; dlRDiv.innerHTML = "
SHADOW RIGHT
"; objectLightDiv.appendChild(dlRDiv); var dlRightInput = document.createElement("Input"); dlRightInput.id = "dlRightInput"; dlRightInput.type = "number"; dlRightInput.step = 0.1; objectLightDiv.appendChild(dlRightInput); dlRightInput.value = clickedObjDl.shadow.camera.right.toFixed(1); dlRightInput.addEventListener("change", function() { clickedObjDl.shadow.camera.right = Number(dlRightInput.value); clickedObjDl.updateMatrixWorld(); clickedObjDl.shadow.camera.updateProjectionMatrix(); dlshadowhelper.update(); }); var dlNDiv = document.createElement("div"); dlNDiv.id = "dirlightNear"; dlNDiv.innerHTML = "
SHADOW NEAR
"; objectLightDiv.appendChild(dlNDiv); var dlNearInput = document.createElement("Input"); dlNearInput.id = "dlNearInput"; dlNearInput.type = "number"; dlNearInput.step = 0.1; objectLightDiv.appendChild(dlNearInput); dlNearInput.value = clickedObjDl.shadow.camera.near.toFixed(1); dlNearInput.addEventListener("change", function() { clickedObjDl.shadow.camera.near = Number(dlNearInput.value); clickedObjDl.updateMatrixWorld(); clickedObjDl.shadow.camera.updateProjectionMatrix(); dlshadowhelper.update(); }); var dlFDiv = document.createElement("div"); dlFDiv.id = "dirlightNear"; dlFDiv.innerHTML = "
SHADOW FAR
"; objectLightDiv.appendChild(dlFDiv); var dlFarInput = document.createElement("Input"); dlFarInput.id = "dlFarInput"; dlFarInput.type = "number"; dlFarInput.step = 0.1; objectLightDiv.appendChild(dlFarInput); dlFarInput.value = clickedObjDl.shadow.camera.far.toFixed(1); dlFarInput.addEventListener("change", function() { clickedObjDl.shadow.camera.far = Number(dlFarInput.value); clickedObjDl.updateMatrixWorld(); clickedObjDl.shadow.camera.updateProjectionMatrix(); dlshadowhelper.update(); }); var directionalangleHeader = document.createElement("div"); directionalangleHeader.id = "directionalangleHeader"; directionalangleHeader.innerHTML = "
DIRECTIONAL ANGLE
"; objectLightDiv.appendChild(directionalangleHeader); var dlAngleinput = document.createElement("Input"); dlAngleinput.id = "dlAngleinput"; dlAngleinput.type = "number"; dlAngleinput.step = 0.1; objectLightDiv.appendChild(dlAngleinput); dlightAngleValuetan = Math.atan(clickedObjDl.position.z / clickedObjDl.position.x); if (Number.isNaN(dlightAngleValuetan)) { dlightAngleValue = 0 } else { dlightAngleValue = Number(thisElement.inputs.angleValue); } dlAngleinput.value = dlightAngleValue.toFixed(3); dlAngleinput.addEventListener("change", function() { clickedObjDl.position.x = Number(dlRadiusinput.value) * Math.cos(dlAngleinput.value); clickedObjDl.position.z = Number(dlRadiusinput.value) * Math.sin(dlAngleinput.value); clickedObjDl.updateMatrixWorld(); thisElement.inputs.angleValue = dlAngleinput.value; }); var directionalradiusHeader = document.createElement("div"); directionalradiusHeader.id = "directionalradiusHeader"; directionalradiusHeader.innerHTML = "
DIRECTIONAL RADIUS
"; objectLightDiv.appendChild(directionalradiusHeader); var dlRadiusinput = document.createElement("Input"); dlRadiusinput.id = "dlRadiusinput"; dlRadiusinput.type = "number"; dlRadiusinput.step = 0.1; objectLightDiv.appendChild(dlRadiusinput); dLightRadiusValue = Math.sqrt(Math.pow(clickedObjDl.position.z, 2) + Math.pow(clickedObjDl.position.x, 2)); dlRadiusinput.value = dLightRadiusValue.toFixed(3); dlRadiusinput.addEventListener("change", function() { clickedObjDl.position.x = Number(dlRadiusinput.value) * Math.cos(dlAngleinput.value); clickedObjDl.position.z = Number(dlRadiusinput.value) * Math.sin(dlAngleinput.value); clickedObjDl.updateMatrixWorld(); }) var sl1LightDiv = document.createElement("div"); sl1LightDiv.id = "sl1lighting"; sl1LightDiv.innerHTML = "
OBJECT SPOTLIGHT 1
"; document.getElementById("lightingdiv").appendChild(sl1LightDiv); sl1LightDiv.setAttribute("hidden", true); var slDiv = document.createElement("div"); slDiv.id = "spotlighting"; sl1LightDiv.appendChild(slDiv); var sl1Div = document.createElement("div"); sl1Div.id = "spotlightInt1"; sl1Div.innerHTML = "
SPOT 1 INTENSITY
"; slDiv.appendChild(sl1Div); var sl1Input = document.createElement("Input"); sl1Input.id = "sl1Input"; sl1Input.type = "number"; sl1Input.step = 1; sl1Div.appendChild(sl1Input); sl1Input.value = spotLight.intensity.toFixed(3); sl1Input.addEventListener("change", function() { spotLight.intensity = Number(sl1Input.value); }); var sl1angleHeader = document.createElement("div"); sl1angleHeader.id = "sl1angleHeader"; sl1angleHeader.innerHTML = "
SPOTLIGHT 1 ANGLE
"; sl1Div.appendChild(sl1angleHeader); var sl1Angleinput = document.createElement("Input"); sl1Angleinput.id = "sl1AngleInput"; sl1Angleinput.type = "number"; sl1Angleinput.step = 0.1; sl1Div.appendChild(sl1Angleinput); sl1ightAngleValuetan = Math.atan(spotLight.position.z / spotLight.position.x); if (Number.isNaN(sl1ightAngleValuetan)) { sl1ightAngleValue = 0 } else { sl1ightAngleValue = Number(thisElement.inputs.sl1a); } sl1Angleinput.value = sl1ightAngleValue.toFixed(3); sl1Angleinput.addEventListener("change", function() { spotLight.position.x = Number(sl1Radiusinput.value) * Math.cos(sl1Angleinput.value); spotLight.position.z = Number(sl1Radiusinput.value) * Math.sin(sl1Angleinput.value); spotLight.updateMatrixWorld(); spot1helper.update(); thisElement.inputs.sl1a = sl1Angleinput.value }); var sl1radiusHeader = document.createElement("div"); sl1radiusHeader.id = "sl1radiusHeader"; sl1radiusHeader.innerHTML = "
SPOTLIGHT 1 RADIUS
"; sl1Div.appendChild(sl1radiusHeader); var sl1Radiusinput = document.createElement("Input"); sl1Radiusinput.id = "sl1RadiusInput"; sl1Radiusinput.type = "number"; sl1Radiusinput.step = 0.1; sl1Div.appendChild(sl1Radiusinput); sl1ightRadiusValue = Math.sqrt(Math.pow(spotLight.position.z, 2) + Math.pow(spotLight.position.x, 2)); sl1Radiusinput.value = sl1ightRadiusValue.toFixed(3); sl1Radiusinput.addEventListener("change", function() { spotLight.position.x = Number(sl1Radiusinput.value) * Math.cos(sl1Angleinput.value); spotLight.position.z = Number(sl1Radiusinput.value) * Math.sin(sl1Angleinput.value); spotLight.updateMatrixWorld(); spot1helper.update(); }) var sl1DecayDiv = document.createElement("div"); sl1DecayDiv.id = "spotlightonedecay"; sl1DecayDiv.innerHTML = "
SPOT 1 DROP OFF
"; slDiv.appendChild(sl1DecayDiv); var sl1DecayInput = document.createElement("Input"); sl1DecayInput.id = "sl1DecayInput"; sl1DecayInput.type = "number"; sl1DecayInput.step = 0.1; sl1DecayDiv.appendChild(sl1DecayInput); sl1DecayInput.value = spotLight.distance.toFixed(1); sl1DecayInput.addEventListener("change", function() { spotLight.distance = Number(sl1DecayInput.value); spotLight.updateMatrixWorld(); spot1helper.update(); }); var sl1HeightDiv = document.createElement("div"); sl1HeightDiv.id = "spotlightone1"; sl1HeightDiv.innerHTML = "
SPOT 1 HEIGHT
"; slDiv.appendChild(sl1HeightDiv); var sl1HeightInput = document.createElement("Input"); sl1HeightInput.id = "sl1HeightInput"; sl1HeightInput.type = "number"; sl1HeightInput.step = 0.1; sl1HeightDiv.appendChild(sl1HeightInput); sl1HeightInput.value = spotLight.position.y; sl1HeightInput.addEventListener("change", function() { spotLight.position.y = Number(sl1HeightInput.value); spotLight.updateMatrixWorld(); spot1helper.update(); }); var sl1ConeDiv = document.createElement("div"); sl1ConeDiv.id = "spotlightone1"; sl1ConeDiv.innerHTML = "
SPOT 1 CONE WIDTH
"; slDiv.appendChild(sl1ConeDiv); var sl1ConeInput = document.createElement("Input"); sl1ConeInput.id = "sl1ConeInput"; sl1ConeInput.type = "number"; sl1ConeInput.step = 0.01; sl1ConeDiv.appendChild(sl1ConeInput); sl1ConeInput.value = spotLight.angle; sl1ConeInput.addEventListener("change", function() { spotLight.angle = Number(sl1ConeInput.value); spot1helper.update(); }); var sl2LightDiv = document.createElement("div"); sl2LightDiv.id = "sl2lighting"; sl2LightDiv.innerHTML = "
OBJECT SPOTLIGHT 2
"; document.getElementById("lightingdiv").appendChild(sl2LightDiv); sl2LightDiv.setAttribute("hidden", true); var sl2Div = document.createElement("div"); sl2Div.id = "spotlighting2"; sl2Div.innerHTML = "
SPOT 2 INTENSITY
"; sl2LightDiv.appendChild(sl2Div); var sl2Input = document.createElement("Input"); sl2Input.id = "sl2Input"; sl2Input.type = "number"; sl2Input.step = 1; document.getElementById("spotlighting2").appendChild(sl2Input); sl2Input.value = spotLight2.intensity.toFixed(3); sl2Input.addEventListener("change", function() { spotLight2.intensity = Number(sl2Input.value); }); var sl2angleHeader = document.createElement("div"); sl2angleHeader.id = "sl2angleHeader"; sl2angleHeader.innerHTML = "
SPOTLIGHT 2 ANGLE
"; sl2Div.appendChild(sl2angleHeader); var sl2Angleinput = document.createElement("Input"); sl2Angleinput.id = "sl2AngleInput"; sl2Angleinput.type = "number"; sl2Angleinput.step = 0.1; sl2Div.appendChild(sl2Angleinput); sl2ightAngleValuetan = Math.atan(spotLight2.position.z / spotLight2.position.x); if (Number.isNaN(sl2ightAngleValuetan)) { sl2ightAngleValue = 0 } else { sl2ightAngleValue = Number(thisElement.inputs.sl2a); } sl2Angleinput.value = sl2ightAngleValue.toFixed(3); sl2Angleinput.addEventListener("change", function() { spotLight2.position.x = Number(sl2Radiusinput.value) * Math.cos(sl2Angleinput.value); spotLight2.position.z = Number(sl2Radiusinput.value) * Math.sin(sl2Angleinput.value); spotLight2.updateMatrixWorld(); spot2helper.update(); thisElement.inputs.sl2a = sl2Angleinput.value; }); var sl2radiusHeader = document.createElement("div"); sl2radiusHeader.id = "sl2radiusHeader"; sl2radiusHeader.innerHTML = "
SPOTLIGHT 2 RADIUS
"; sl2Div.appendChild(sl2radiusHeader); var sl2Radiusinput = document.createElement("Input"); sl2Radiusinput.id = "sl2RadiusInput"; sl2Radiusinput.type = "number"; sl2Radiusinput.step = 0.1; sl2Div.appendChild(sl2Radiusinput); sl2ightRadiusValue = Math.sqrt(Math.pow(spotLight2.position.z, 2) + Math.pow(spotLight2.position.x, 2)); sl2Radiusinput.value = sl2ightRadiusValue.toFixed(3); sl2Radiusinput.addEventListener("change", function() { spotLight2.position.x = Number(sl2Radiusinput.value) * Math.cos(sl2Angleinput.value); spotLight2.position.z = Number(sl2Radiusinput.value) * Math.sin(sl2Angleinput.value); spotLight2.updateMatrixWorld(); spot2helper.update(); }) var sl2DecayDiv = document.createElement("div"); sl2DecayDiv.id = "spotlighttwodecay"; sl2DecayDiv.innerHTML = "
SPOT 2 DROP OFF
"; sl2Div.appendChild(sl2DecayDiv); var sl2DecayInput = document.createElement("Input"); sl2DecayInput.id = "sl2DecayInput"; sl2DecayInput.type = "number"; sl2DecayInput.step = 0.1; sl2DecayDiv.appendChild(sl2DecayInput); sl2DecayInput.value = spotLight2.distance.toFixed(1); sl2DecayInput.addEventListener("change", function() { spotLight2.distance = Number(sl2DecayInput.value); spotLight2.updateMatrixWorld(); spot2helper.update(); }); var sl2HeightDiv = document.createElement("div"); sl2HeightDiv.id = "spotlighttwo1"; sl2HeightDiv.innerHTML = "
SPOT 2 HEIGHT
"; sl2Div.appendChild(sl2HeightDiv); var sl2HeightInput = document.createElement("Input"); sl2HeightInput.id = "sl2HeightInput"; sl2HeightInput.type = "number"; sl2HeightInput.step = 0.1; sl2HeightDiv.appendChild(sl2HeightInput); sl2HeightInput.value = spotLight2.position.y; sl2HeightInput.addEventListener("change", function() { spotLight2.position.y = Number(sl2HeightInput.value); spotLight2.updateMatrixWorld(); spot2helper.update(); }); var sl2ConeDiv = document.createElement("div"); sl2ConeDiv.id = "spotlighttwo1"; sl2ConeDiv.innerHTML = "
SPOT 2 CONE WIDTH
"; sl2Div.appendChild(sl2ConeDiv); var sl2ConeInput = document.createElement("Input"); sl2ConeInput.id = "sl2ConeInput"; sl2ConeInput.type = "number"; sl2ConeInput.step = 0.01; sl2ConeDiv.appendChild(sl2ConeInput); sl2ConeInput.value = spotLight2.angle; sl2ConeInput.addEventListener("change", function() { spotLight2.angle = Number(sl2ConeInput.value); spot2helper.update(); }); document.getElementById("source").style.display = "none"; var srcinput = document.createElement("Input"); srcinput.id = "srcinput"; srcinput.type = "url"; var myUrl = component.urlCache; srcinput.value = myUrl; document.getElementById("controlSrc").appendChild(srcinput); if (clickedObjParent.name != "newvideo") { var vidObj = scenecomponents.payload.objects; } else { var vidObj = newGltf.payload.objects; } function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObjParent.name == "newgltf") { vidNameInput.value = "gltf_" + uuidv4(); vidNameInput.innerHTML = "gltf_" + uuidv4(); clickedObjParent.name = vidNameInput.value; clickedObj.name = vidNameInput.value; spotLight.name = vidNameInput.value + "spotlight1" spotLight2.name = vidNameInput.value + "spotlight2" spot1helper.name = vidNameInput.value + "_spot1helper"; spot2helper.name = vidNameInput.value + "_spot2helper"; clickedObjDl.name = vidNameInput.value + "_DirectionalLight"; dlhelper.name = vidNameInput.value + "_DirectionalLightHelper"; dlshadowhelper.name = vidNameInput.value + "_DirectionalLightShadowHelper"; } else { vidNameInput.value = clickedObjParent.name; } srcinput.addEventListener("change", function() { component.urlCache = srcinput.value; }) document.getElementById("controlSrc").appendChild(vidNameInput); var gsSubmitDiv = document.createElement("div"); gsSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(gsSubmitDiv); var modelSubmit = document.createElement("button"); modelSubmit.setAttribute("id", "3JsModelSubmit"); modelSubmit.classList.add("inputListButton"); modelSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(modelSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { spot1helper.visible = false; spot2helper.visible = false; clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(node); node.visible = false; clickedObj = undefined; }); var tabButton = document.querySelectorAll(".tab-button"); if (tabButton[0].classList.contains("active") && tabButton[0].dataset.id == "object") { document.getElementById("3JsPosHolder").style.display = "block"; document.getElementById("lightingdiv").style.display = "none"; } else { document.getElementById("3JsPosHolder").style.display = "none"; document.getElementById("lightingdiv").style.display = "block"; } $(document).on("click", ".tab-button", function(e) { var tabButton = document.querySelectorAll(".tab-button"); const id = e.target.dataset.id; if (id) { tabButton.forEach(btn => { btn.classList.remove("active"); }); e.target.classList.add("active"); if (id == "object") { document.getElementById("3JsPosHolder").style.display = "block"; document.getElementById("lightingdiv").style.display = "none"; } else { document.getElementById("3JsPosHolder").style.display = "none"; document.getElementById("lightingdiv").style.display = "block"; } } }); component.notify(eventType, eventData); } } } } catch (error) { console.error(error); } oldClickedObj = clickedObj; confClickedObj = clickedObj; } } } } }); } else { if (component.componentType === 'mp.fbxLoader') { const desiredHeight = 1; // meters let scale = 1; component.outputs.onPropertyChanged('loadingState', state => { if (state == 'Loaded') { component.outputs.objectRoot.castShadow = true; component.outputs.objectRoot.traverse(child => { if (child.isMesh) { const loader = new THREE.TextureLoader(); for (i = 0; i < child.material.length; i++) { var j = i + 1; var filename = child.material[i].name; if (filename.substring(filename.length - 3, filename.length) == "1-1") { filename = filename.substring(0, filename.length - 3) } else { if (filename.substring(filename.length - 2, filename.length) == "-1") { filename = filename.substring(0, filename.length - 2) } else { if (filename.substring(filename.length - 1, filename.length) == "1") { filename = filename.substring(0, filename.length - 1) } } } var aotexturefile = filename + "Ao1.png"; var texturefile = filename + "Col1.png"; var normaltexturefile = filename + "NM1.png"; var texture = loader.load(baseUrl + "/assets/textures/" + texturefile); var normaltexture = loader.load(baseUrl + "/assets/textures/" + normaltexturefile); var aotexture = loader.load(baseUrl + "/assets/textures/" + aotexturefile); child.material[i].map = texture; child.material[i].normalMap = normaltexture; child.material[i].needsUpdate = true; } } }) const box = new component.context.three.Box3(); box.setFromObject(component.outputs.objectRoot); const curHeight = box.max.y - box.min.y; scale = desiredHeight / curHeight; component.inputs.localScale = { x: scale, y: scale, z: scale }; component.events = { "INTERACTION.CLICK": true, } component.onEvent = function(eventType, eventData, ) { if (eventType === "INTERACTION.CLICK") {} } } else { if (state == 'Error') { const onLoaderError = error => { console.error(error); } }; } }); } } } } }; function makeShadowGeometry() { return new ShadowGeometry(); } function tjsvidtick(tickertime, sweepPos, thismedia, type) { var transcription = sweepPos; var spanSelector = document.querySelector('.marquee span'); if (transcription.length > 0) { spanSelector.innerHTML = transcription; $("#apptranscription").removeAttr("hidden"); spanSelector.style.animationDuration = tickertime + 1 + "s"; $('.marquee span').css("animation-play-state", "running"); $('.marquee span').css("webkitAnimation-play-state", "running"); if (toggletranscripts == 1) { $("#apptranscription").css("z-index", 50); }; } } function getduration(tjs, tjsVideo) { if (tjsVideo.readyState == 0) { $(tjsVideo).on("loadedmetadata", function() { var type = "video" var tickertime = tjsVideo.duration; var thismedia = tjsVideo; var sweepPos = tjs.inputs.transcript $(tjsVideo).attr('data-transcript', sweepPos) function xmlHReqTjsGs() { if (baselanguage != userLang) { if (dotranslation == 1) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); sweepPos = response.title; description = response.description; } tjsvidtick(tickertime, sweepPos, thismedia, type); } } xmlhttp.open("GET", baseLoc + "/translate.php?title=" + sweepPos + "&description=null&lang=" + userLang + "&baselanguage=" + baselanguage + "&builder=" + builder, true); xmlhttp.send(); } else { tjsvidtick(tickertime, sweepPos, thismedia, type); } } else { tjsvidtick(tickertime, sweepPos, thismedia, type); } } xmlHReqTjsGs(); }) } else { var type = "video" var tickertime = tjsVideo.duration; var thismedia = tjsVideo; var sweepPos = tjs.inputs.transcript; $(tjsVideo).attr('data-transcript', sweepPos) function xmlHReqTjsGs() { if (baselanguage != userLang) { if (dotranslation == 1) { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { if (this.responseText != "NOT REQUIRED") { var response = JSON.parse(this.responseText); sweepPos = response.title; description = response.description; } tjsvidtick(tickertime, sweepPos, thismedia, type); } } xmlhttp.open("GET", baseLoc + "/translate.php?title=" + sweepPos + "&description=null&lang=" + userLang + "&baselanguage=" + baselanguage + "&builder=" + builder, true); xmlhttp.send(); } else { tjsvidtick(tickertime, sweepPos, thismedia, type); } } else { tjsvidtick(tickertime, sweepPos, thismedia, type); } } xmlHReqTjsGs(); } }; function greenscreen() { this.inputs = { "src": null, "muted": null, "chromakey": null, "transcript": null, "radius": null, "localRotation": { x: 0, y: 0, z: 0 } }; this.onInit = async function() { if (this.context.root.obj3D.name == "newgreenscreen") { this.video = this.createVideoElement(); this.video.src = this.inputs.src; if (os == "iOS" || os == "Mac OS") { this.audio = this.createAudioElement(); } } else { this.video = document.getElementById(this.context.root.obj3D.name); } //this.video.setAttribute("crossOrigin", 'anonymous'); //this.video.setAttribute("id", name); //this.video.setAttribute("playsinline", true); this.mesh; this.pivotNode; const THREE = this.context.three; const topRoot = this.context.root; const camera = this.context.camera; const scene = this.context.scene; const thisGs = this; const node = this.context.root.obj3D; this.slavetype = "mp.greenscreen" this.pivotNode = new THREE.Group(); if (this.inputs.chromakey != null && this.inputs.chromakey != "") { var chromacolor = this.inputs.chromakey; } if (this.inputs.chromakey === null || this.inputs.chromakey === "") { var chromacolor = "lime"; } function vertexShader() { return ` varying vec2 vUv; void main( void ) { vUv = uv; gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0); } ` } function fragmentShader() { return ` uniform vec3 keyColor; uniform float similarity; uniform float smoothness; varying vec2 vUv; uniform sampler2D map; void main() { vec4 videoColor = texture2D(map, vUv); float Y1 = 0.299 * keyColor.r + 0.587 * keyColor.g + 0.114 * keyColor.b; float Cr1 = keyColor.r - Y1; float Cb1 = keyColor.b - Y1; float Y2 = 0.299 * videoColor.r + 0.587 * videoColor.g + 0.114 * videoColor.b; float Cr2 = videoColor.r - Y2; float Cb2 = videoColor.b - Y2; float blend = smoothstep(similarity, similarity + smoothness, distance(vec2(Cr2, Cb2), vec2(Cr1, Cb1))); gl_FragColor = vec4(videoColor.rgb, videoColor.a * blend); } ` } var thisGsVideo = this.video if (this.inputs.radius == "") { this.inputs.radius = 3; } var keyColorObject = new THREE.Color(chromacolor); var videoTexture = new THREE.VideoTexture(this.video); videoTexture.minFilter = THREE.LinearFilter; videoTexture.magFilter = THREE.LinearFilter; let newChromaColor = new THREE.ShaderMaterial({ transparent: true, uniforms: { map: { value: videoTexture }, keyColor: { value: [0.0, 1.0, 0.0] }, similarity: { value: 0.7 }, smoothness: { value: 0.05 }, }, vertexShader: vertexShader(), fragmentShader: fragmentShader(), }) newChromaColor.update = function() { if (thisGs.video.readyState === thisGs.video.HAVE_ENOUGH_DATA) { if (videoTexture) { videoTexture.needsUpdate = true; } } } var myPosition = topRoot.obj3D.position; if (this.inputs.src != null) { this.mesh = new THREE.Mesh(new THREE.PlaneGeometry(1.0, 1.0), newChromaColor); this.mesh.scale.set(1, 1, 1); this.mesh.updateMatrixWorld(); this.pivotNode.add(this.mesh); this.outputs.objectRoot = this.pivotNode; if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.outputs.collider = topRoot.obj3D; } mpSdk.Camera.pose.subscribe(function() { var camvector = new THREE.Vector3(poseCache.position.x, node.position.y, poseCache.position.z); node.lookAt(camvector); node.updateMatrixWorld(); }) var videoName = this.pivotNode.parent.name; sensor2.readings.subscribe({ onAdded(source, reading) { tjs = this; var tjsVideo = thisGs.video; var index = source.userData.id; if (reading.inRange && reading.inView) {} else { if (source.userData.name == thisGs.pivotNode.parent.name) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); thisGs.video.muted = true; } } }, onUpdated(source, reading) { var index = source.userData.id; if (reading.inRange && reading.inView) { if (index.substring(0, index.length - 9) == node.name) { if (gsPlayed.indexOf(node.name) == -1) { tjs = thisGs; tjsVideo = thisGs.video; if (source.userData.name == thisGs.pivotNode.parent.name) { thisGs.video.currentTime = 0; if (typeof audio !== 'undefined') { if (!audio.paused && audio.currentTime > 0) { document.getElementById("audioPlayPause").style.display = "none"; $("#apptranscription").css("z-index", -50); audio.pause(); } } if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } thisGs.video.muted = false; thisGs.video.play(); gsPlaying = node.name; if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } getduration(tjs, tjsVideo); } } } tjsVideo.onended = function() { gsPlayed.push(node.name); gsPlaying = ""; source.volume.radius = 0; var hasTranscript = $(tjsVideo).attr('data-transcript'); if (typeof hasTranscript != "undefined" && hasTranscript.length > 0) { $(tjsVideo).attr('data-transcript', ""); if ($('.marquee span').length > 0) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } } } } } } else { if (source.userData.name == thisGs.pivotNode.parent.name) { //if (document.querySelector('.marquee span') != null && document.querySelector('.marquee span').innerHTML != "" && document.querySelector('.marquee span').innerHTML == thisGs.inputs.transcript) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); //} if (gsPlaying == node.name) { gsPlayed.push(node.name); gsPlaying = ""; } thisGs.video.muted = true; setTimeout(function() { thisGs.video.pause(); }, 500); if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { if (iframe.contentWindow.document.getElementById("musicDiv")) { if (iframe.contentWindow.document.getElementById("musicDiv").style.paddingLeft == "6px") { audioBG.play(); } } } } } } } } }); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: this.pivotNode.parent.position.x, y: this.pivotNode.parent.position.y + 0.5, z: this.pivotNode.parent.position.z, }, radius: this.inputs.radius, userData: { id: this.context.root.obj3D.name + "VIDEONODE", src: this.inputs.src, name: this.pivotNode.parent.name, "type": "greenscreen" }, }); sensor2.addSource(source); this.onInputsUpdated = function(oldInputs) { if (oldInputs.src !== this.inputs.src) { if (oldInputs.src.substring(oldInputs.src.length - 4, oldInputs.src.length) == "m3u8") { var hlsname = this.video.getAttribute("hlsname"); var hls = hlsObj[hlsname]; if (typeof hls != "undefined") { hls.destroy(); delete hlsObj[hlsname]; } } if (this.inputs.src.includes(window.location.hostname)) { this.video.src = this.inputs.src; this.video.load(); } else { if (this.inputs.src.substring(this.inputs.src.length - 4, this.inputs.src.length) == "m3u8") { if (Hls.isSupported()) { var newhls = new Hls({ debug: true, }); newhls.loadSource(this.inputs.src); newhls.attachMedia(this.video); hlsObj[hlsname] = hls; this.video.setAttribute("hlssrc", this.inputs.src) } else if (this.video.canPlayType('application/vnd.apple.mpegurl')) { this.video.src = this.inputs.src; this.video.addEventListener('canplay', function() { this.video.play(); }); } } else { this.video.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + this.inputs.src; } this.video.load(); } this.video.play(); } if (oldInputs.muted !== this.inputs.muted) { this.video.muted = this.inputs.muted; } if (oldInputs.chromakey !== this.inputs.chromakey) { myGreenScreenMaterial.uniforms.color = { type: "c", value: new THREE.Color(this.inputs.chromakey) }; this.video.play(); } } this.onTick = function() { requestAnimationFrame(dummyfunction); newChromaColor.update(); } var pivotNode = this.pivotNode; this.onTick(); this.events = { "INTERACTION.CLICK": true, } this.onEvent = function(eventType, eventData, ) { this.notify(eventType, eventData); thisPlane = this; clickedObjPos = this.context.root.obj3D.position; clickedObj = this.context.root.obj3D; clickedObjRot = this.context.root.obj3D.rotation; clickedObjSca = this.context.root.obj3D.scale clickedObjParent = this.context.root; clickedObjParentName = this.context.root.name; if (this.slavetype == "mp.greenscreen") { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { scene.traverse(child => { if (child.name.substring(child.name.length - 6, child.name.length) == "helper") { child.visible = false; } }); var maincontrols = document.getElementById("3JsControls"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("tabWrapper").style.display = "none"; var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); if (maincontrols.style.display == "block") { remove3JsInputs(); } else { maincontrols.style.display = "block"; var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180; rotXinput.max = 180; rotXinput.step = 1; var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180.0000000000001; rotXinput.max = 180.0000000000001; rotXinput.step = 1; var thisRotX = this.inputs.localRotation.x.toFixed(3); controlsRotX.appendChild(rotXinput); rotXinput.value = thisRotX; clickedObjRot.x = Number(rotXinput.value * (Math.PI / 180)); rotXinput.addEventListener("change", function() { clickedObjRot.x = Number(rotXinput.value * (Math.PI / 180)); thisRotX = Number(rotXinput.value); thisPlane.inputs.localRotation.x = thisRotX; }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -180.0000000000001; rotYinput.max = 180.0000000000001; rotYinput.step = 1; var thisRotY = this.inputs.localRotation.y.toFixed(3); controlsRotY.appendChild(rotYinput); rotYinput.value = thisRotY; clickedObjRot.y = Number(rotYinput.value * (Math.PI / 180)); rotYinput.addEventListener("change", function() { clickedObjRot.y = Number(rotYinput.value * (Math.PI / 180)); thisRotY = Number(rotYinput.value); thisPlane.inputs.localRotation.y = thisRotY; }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.min = -180.0000000000001; rotZinput.max = 180.0000000000001; rotZinput.step = 1; var thisRotZ = this.inputs.localRotation.z.toFixed(3); controlsRotZ.appendChild(rotZinput); rotZinput.value = thisRotZ; clickedObjRot.z = Number(rotZinput.value * (Math.PI / 180)); rotZinput.addEventListener("change", function() { clickedObjRot.z = Number(rotZinput.value * (Math.PI / 180)); thisRotZ = Number(rotZinput.value); thisPlane.inputs.localRotation.z = thisRotZ; }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); controlScaX.style.display = "block"; scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "block"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); controlScaZ.style.display = "block"; scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) var srcinput = document.createElement("Input"); srcinput.id = "srcinput"; srcinput.type = "url"; if (this.inputs.src.substring(8, 22) == "orange-glade-6") { var urlParams = new URLSearchParams(this.inputs.src); for (let p of urlParams) { var myParam = p[1]; } srcinput.value = myParam; } else { if (this.inputs.src.includes(window.location.hostname) && this.inputs.src.substring(0, 4) != "blob") { srcinput.value = this.inputs.src; } else { if (this.inputs.src.substring(this.inputs.src.length - 4, this.inputs.src.length) == "m3u8" || this.inputs.src.substring(0, 4) == "blob") { var hlssrc = thisGs.video.getAttribute("hlssrc"); srcinput.value = hlssrc; } } } document.getElementById("controlSrc").appendChild(srcinput); var radiusTitle = document.createElement("div"); radiusTitle.setAttribute("id", "radiustitle"); radiusTitle.innerHTML = "
ACTIVATION RADIUS
"; document.getElementById("controlSrc").appendChild(radiusTitle); var radiusinput = document.createElement("Input"); radiusinput.id = "radiusinput"; radiusinput.type = "number"; radiusinput.step = 0.25; controlSrc.appendChild(radiusinput); radiusinput.value = thisPlane.inputs.radius; var chromaTitle = document.createElement("div"); chromaTitle.setAttribute("id", "chromatitle"); chromaTitle.innerHTML = "
CHROMA KEY
"; document.getElementById("controlSrc").appendChild(chromaTitle); var chromaInput = document.createElement("select"); var selected = this.inputs.chromakey; if (selected == "lime") { var selectedIndex = 0; } else { if (selected == "black") { var selectedIndex = 1; } else { if (selected == "white") { var selectedIndex = 2; } } } var array = ["GREEN", "BLACK", "WHITE"] chromaInput.id = "chromainput"; chromaInput.style.width = "60%" for (i = 0; i < array.length; i++) { var option = document.createElement("option"); if (array[i] == "GREEN") { var code = "lime"; } if (array[i] == "BLACK") { var code = "#000000"; } if (array[i] == "WHITE") { var code = "white"; } option.value = code; option.text = array[i]; if (i === selectedIndex) { option.setAttribute("selected", true); } chromaInput.appendChild(option); } document.getElementById("controlSrc").appendChild(chromaInput); if (clickedObjParent.name != "newvideo") { var vidObj = scenecomponents.payload.objects; } else { var vidObj = newVideo.payload.objects; } var transcriptTitle = document.createElement("div"); transcriptTitle.setAttribute("id", "transcripttitle"); transcriptTitle.innerHTML = ""; document.getElementById("controlSrc").appendChild(transcriptTitle); var transcriptinput = document.createElement("textarea"); transcriptinput.id = "transcriptinput"; var transcriptval = this.inputs.transcript; transcriptinput.value = transcriptval; document.getElementById("controlSrc").appendChild(transcriptinput); function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObjParent.name == "newgreenscreen") { vidNameInput.value = "gsvid_" + uuidv4(); clickedObjParent.name = vidNameInput.value; } else { vidNameInput.value = clickedObjParent.name; } document.getElementById("controlSrc").appendChild(vidNameInput); srcinput.addEventListener("change", function() { if (srcinput.value.includes(window.location.hostname)) { thisGs.inputs.src = srcinput.value; } else { if (srcinput.value.substring(srcinput.value.length - 4, srcinput.value.length) == "m3u8") { thisGs.inputs.src = srcinput.value; } else { thisGs.inputs.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + srcinput.value; } } }) chromainput.addEventListener("change", function() { thisGs.inputs.chromakey = chromainput.value; }) var gsSubmitDiv = document.createElement("div"); gsSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(gsSubmitDiv); var GsSubmit = document.createElement("button"); GsSubmit.setAttribute("id", "3JsGsSubmit"); GsSubmit.classList.add("inputListButton"); GsSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(GsSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(node); node.visible = false; clickedObj = undefined; }); } } else {} } } } } this.createVideoElement = function() { const video = document.createElement('video'); video.setAttribute("playsinline", true); video.controls = true; video.crossOrigin = 'anonymous'; video.autoplay = true; video.muted = true; video.loop = true; return video; } this.createAudioElement = function() { const audio = document.createElement('video'); audio.setAttribute("playsinline", true); audio.style.display = "none"; audio.controls = true; audio.crossOrigin = 'anonymous'; audio.autoplay = false; audio.muted = true; audio.loop = true; return audio; } } function makeGreenScreen() { return new greenscreen(); } function planeCurve(g, z) { let p = g.parameters; let hw = p.width * 0.5; let a = new THREE.Vector2(-hw, 0); let b = new THREE.Vector2(0, z); let c = new THREE.Vector2(hw, 0); let ab = new THREE.Vector2().subVectors(a, b); let bc = new THREE.Vector2().subVectors(b, c); let ac = new THREE.Vector2().subVectors(a, c); let r = (ab.length() * bc.length() * ac.length()) / (2 * Math.abs(ab.cross(ac))); let center = new THREE.Vector2(0, z - r); let baseV = new THREE.Vector2().subVectors(a, center); let baseAngle = baseV.angle() - (Math.PI * 0.5); let arc = baseAngle * 2; let uv = g.attributes.uv; let pos = g.attributes.position; let mainV = new THREE.Vector2(); for (let i = 0; i < uv.count; i++) { let uvRatio = 1 - uv.getX(i); let y = pos.getY(i); if (z > -0.0001) { mainV.copy(c).rotateAround(center, (arc * uvRatio)); } else { mainV.copy(c).rotateAround(center, (-arc * uvRatio)); } pos.setXYZ(i, mainV.x, y, -mainV.y); } pos.needsUpdate = true; } function getCenterPoint(mesh) { var geometry = mesh.geometry; geometry.computeBoundingBox(); var center = new THREE.Vector3(); geometry.boundingBox.getCenter(center); mesh.localToWorld(center); return center; } const topNodeCurved = new THREE.Group(); function PlaneRenderer() { this.inputs = { play: false, texture: null, aspect: 1, transparent: true, visible: true, opacity: 1, polygonOffset: false, polygonOffsetFactor: 0, polygonOffsetUnits: 0, curveDepth: 0, horiz: false, localScale: { x: 1, y: 1, z: 1 }, localPosition: { x: 0, y: 0, z: 0 }, localRotation: { x: 0, y: 0, z: 0 }, slavetype: "" } this.emits = { "INTERACTION.CLICK": true, "sweepEntered": true, "playPressed": true, } this.events = { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true, } this.outputs = { currentTime:0, muted:true } this.onInit = async function() { this.mesh; this.pivotNode; const that = this; sweepInit = 0; const THREE = this.context.three; const scene = this.context.scene; const topRoot = this.context.root; const rootid = this.context.root.id; this.baseNode = this.context.root.obj3D; var comIterator = this.context.root.componentIterator(); const planeRootNode = Array.from(comIterator); this.planeRootNode = planeRootNode; this.slavetype = planeRootNode[0].componentType; const slavetype = this.slavetype; if (this.slavetype == "mp.curvedVideoRenderer") { if (this.inputs.localScale.z > 0.1) { let geom = new THREE.PlaneGeometry(1.6, 0.9, 20, 20); var bendDepth = this.inputs.curveDepth; planeCurve(geom, bendDepth); let mat = new THREE.MeshBasicMaterial({ transparent: this.inputs.transparent, alphaTest: 0.5, map: this.inputs.texture, opacity: this.inputs.opacity, polygonOffset: this.inputs.polygonOffset, polygonOffsetFactor: this.inputs.polygonOffsetFactor, polygonOffsetUnits: this.inputs.polygonOffsetUnits, }); this.mesh = new THREE.Mesh(geom, mat); this.mesh.scale.set(this.inputs.localScale.x, this.inputs.localScale.y / this.inputs.aspect, this.inputs.localScale.z); this.mesh.position.set(this.inputs.localPosition.x, this.inputs.localPosition.y, this.inputs.localPosition.z); this.baseNode.rotation.set(this.inputs.localRotation.x * (Math.PI/180), this.inputs.localRotation.y * (Math.PI/180), this.inputs.localRotation.z * (Math.PI/180)); this.mesh.updateMatrixWorld; this.baseNode.add(this.mesh); this.outputs.collider = this.mesh; } else { this.mesh = new THREE.Mesh(new THREE.PlaneGeometry(1.0, 1.0), new THREE.MeshBasicMaterial({ transparent: this.inputs.transparent, alphaTest: 0.5, map: this.inputs.texture, opacity: this.inputs.opacity, polygonOffset: this.inputs.polygonOffset, polygonOffsetFactor: this.inputs.polygonOffsetFactor, polygonOffsetUnits: this.inputs.polygonOffsetUnits, })); this.mesh.scale.set(this.inputs.localScale.x, this.inputs.localScale.y / this.inputs.aspect, this.inputs.localScale.z); //this.mesh.position.set(this.inputs.localPosition.x, this.inputs.localPosition.y, this.inputs.localPosition.z); this.baseNode.rotation.set(this.inputs.localRotation.x * (Math.PI/180), this.inputs.localRotation.y * (Math.PI/180), this.inputs.localRotation.z * (Math.PI/180)); this.mesh.rotation.set(this.inputs.localRotation.x, this.inputs.localRotation.y, this.inputs.localRotation.z); this.mesh.updateMatrixWorld(); this.baseNode.add(this.mesh); this.outputs.collider = this.mesh; } } else { this.mesh = new THREE.Mesh(new THREE.PlaneGeometry(1.0, 1.0), new THREE.MeshBasicMaterial({ transparent: this.inputs.transparent, alphaTest: 0.5, map: this.inputs.texture, opacity: this.inputs.opacity, polygonOffset: this.inputs.polygonOffset, polygonOffsetFactor: this.inputs.polygonOffsetFactor, polygonOffsetUnits: this.inputs.polygonOffsetUnits, })); this.mesh.scale.set(this.inputs.localScale.x, this.inputs.localScale.y / this.inputs.aspect, this.inputs.localScale.z); this.mesh.position.set(this.inputs.localPosition.x, this.inputs.localPosition.y, this.inputs.localPosition.z); this.mesh.updateMatrixWorld(); this.baseNode.add(this.mesh); this.outputs.collider = this.mesh; } this.mesh.visible = this.inputs.visible; if (this.slavetype == "mp.videoRenderer") { if (this.planeRootNode[0].inputs.videoMuted == "1") { if (typeof this.planeRootNode[6].mesh != "undefined"){ if(typeof this.planeRootNode[6].mesh.visible != "undefined" && this.planeRootNode[6].mesh.visible == true) { this.planeRootNode[6].mesh.visible = false; } } if (typeof this.planeRootNode[9].mesh != "undefined"){ if (typeof this.planeRootNode[9].mesh.visible != "undefined" && this.planeRootNode[9].mesh.visible == true) { this.planeRootNode[9].mesh.visible = false; } } } } if (this.slavetype == "mp.videoRenderer" || (this.slavetype == "mp.curvedVideoRenderer" && planeRootNode[0].inputs.startSweep == "")) { sensor.readings.subscribe({ onAdded(source, reading) { planeRootNode[0].inputs.play = false; planeRootNode[0].inputs.sensor = true; var index = source.userData.id; if (index == topRoot.obj3D.name + "_VIDEONODE") { planeRootNode[0].inputs.range = reading.inView; } }, onUpdated(source, reading) { var index = source.userData.id; if (index == topRoot.obj3D.name + "_VIDEONODE") { planeRootNode[0].inputs.range = reading.inView; if (!reading.inView) { if (slavetype == "mp.curvedVideoRenderer") { that.notify("sweepEntered", reading.inView); sweepstarted = reading.inView; } if (slavetype == "mp.videoRenderer") { that.notify("playPressed", {"val": reading.inView }); playstarted = reading.inView; } } } } }); if (this.slavetype != "mp.planeRenderer") { //const axesHelper = new THREE.AxesHelper( 5 ); //axesHelper.position.x = this.context.root.obj3D.position.x; //axesHelper.position.y = this.context.root.obj3D.position.y //axesHelper.position.z = this.context.root.obj3D.position.z //scene.add( axesHelper ); var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { x: this.context.root.obj3D.position.x, y: this.context.root.obj3D.position.y, z: this.context.root.obj3D.position.z-1, }, radius: 100, userData: { id: this.context.root.obj3D.name + "_VIDEONODE", name: this.context.root.obj3D.name + "_VIDEONODE", type: "video" }, }); sensor.addSource(source); } } else { planeRootNode[0].inputs.play = false; planeRootNode[0].inputs.sensor = false; planeRootNode[0].inputs.range = false; } if (this.slavetype == "mp.curvedVideoRenderer") { mpSdk.on(mpSdk.Sweep.Event.ENTER, function(from, to) { var toSweep = to; to = sweepLookupArray[sweepLookupArray.indexOf(toSweep) - 1]; if (planeRootNode[0].inputs.sweepEnable == "1") { if (planeRootNode[0].inputs.startSweep == to || planeRootNode[0].inputs.endSweep == to) { sweepstarted = true; that.notify("sweepEntered", true); } if (planeRootNode[0].inputs.endSweep == to) { sweepstarted = false; that.notify("sweepEntered", false); } }; }); sweepInit = 1; } } this.onEvent = function(eventType, eventData) { scene.traverse(child => { if (child.name.substring(child.name.length - 6, child.name.length) == "helper") { child.visible = false; } }); clickedObjPos = this.context.root.obj3D.position; const node = this.context.root.obj3D; thisPlane = this; clickedObj = this.context.root.obj3D; clickedObjRot = this.context.root.obj3D.rotation; clickedObjSca = this.context.root.obj3D.scale clickedObjParent = this.planeRootNode; clickedObjParentName = this.context.root.name; this.notify(eventType, eventData); if (eventType == "INTERACTION.HOVER") { if (this.slavetype == "mp.planeRenderer") { if ((clickedObjParent[2].inputs.tagdetails.tagTitle != null && clickedObjParent[2].inputs.tagdetails.tagTitle != "") || (clickedObjParent[2].inputs.tagdetails.tagDesc != null && clickedObjParent[2].inputs.tagdetails.tagDesc != "") || (clickedObjParent[2].inputs.dest != "" && clickedObjParent[2].inputs.dest != "0")) { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") {} else { var appendingContainer = document.getElementById("framecontainer"); if (imghover && img2hover) { mpSdk.Settings.update('features/cursor', false); iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = 'pointer'; var imghover2 = imghover; if (clickedObjParent[2].inputs.tagdetails.tagTitle != null && clickedObjParent[2].inputs.tagdetails.tagTitle != "" || (clickedObjParent[2].inputs.tagdetails.tagDesc != null && clickedObjParent[2].inputs.tagdetails.tagDesc != "")) { imghover = false; var hasTag = 1; var title = clickedObjParent[2].inputs.tagdetails.tagTitle; var desc = clickedObjParent[2].inputs.tagdetails.tagDesc; var media = clickedObjParent[2].inputs.tagdetails.tagmedia; if (document.getElementById("sweepInfoDiv") == null || typeof document.getElementById("sweepInfoDiv") == "undefined") { var sweepInfoDiv = document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile && iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } else { if (media != "") { sweepInfoDiv.style.maxWidth = "50vw"; } else { sweepInfoDiv.style.maxWidth = "30vw" } sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.textAlign = "center"; sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.pointerEvents = "none"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.color = "#FFFFFF"; sweepInfoDiv.style.borderRadius = "7px"; sweepInfoDiv.style.fontSize = "1em"; appendingContainer.appendChild(sweepInfoDiv); var sweepTitleDiv = document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; if (media != "") { sweepDescDiv.innerHTML = "

" + desc + "

Click for more" + "

"; } else { sweepDescDiv.innerHTML = "

" + desc + "

"; } if (!mobile) { sweepInfoDiv.append(sweepDescDiv); } else { if (title == "") { sweepInfoDiv.append(sweepDescDiv); } } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; imghover = false; } } else { if (clickedObjParent[2].inputs.dest != "") { if (imghover && img2hover) { mpSdk.Settings.update('features/cursor', false); iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = 'pointer'; var imghover2 = imghover; imghover = false; } else { iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = ''; imghover = true; } } } } else { mpSdk.Settings.update('features/cursor', true); if (document.getElementById("sweepInfoDiv") != null && typeof document.getElementById("sweepInfoDiv") != "undefined") { if (img2hover) { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); } } else { imghover = true; img2hover = true; } iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = ''; imghover = true; } } } else { imghover = true; } } else { if (vidhover) { mpSdk.Settings.update('features/cursor', false); if (clickedObjParent[0].inputs.videoMuted != "1") { iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = 'pointer'; vidhover = false; } } else { mpSdk.Settings.update('features/cursor', true); iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = ''; vidhover = true; } } } else { if (this.slavetype == "mp.curvedVideoRenderer") { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var maincontrols = document.getElementById("3JsControls"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("tabWrapper").style.display = "none"; var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); if (maincontrols.style.display == "block") { remove3JsInputs(); } else { maincontrols.style.display = "block"; var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180; rotXinput.max = 180; rotXinput.step = 1; var thisRotX = (Number(clickedObjRot.x).toFixed(15) * (180/Math.PI)); var RXV = Number(clickedObjRot.x) controlsRotX.appendChild(rotXinput); rotXinput.value = thisRotX; rotXinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.x = inRadians; }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -180; rotYinput.max = 180; rotYinput.step = 1; var thisRotY = (Number(clickedObjRot.y).toFixed(15) * (180/Math.PI)); controlsRotY.appendChild(rotYinput); rotYinput.value = thisRotY; rotYinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.y = inRadians; }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.min = -180; rotZinput.max = 180; rotZinput.step = 1; var thisRotZ = Number(clickedObjRot.z * (180/Math.PI)); controlsRotZ.appendChild(rotZinput); rotZinput.value = thisRotZ; rotZinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.z = inRadians }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); controlScaX.style.display = "block"; scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "block"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); controlScaZ.style.display = "block"; scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) var curveTitle = document.createElement("div"); curveTitle.setAttribute("id", "curvetitle"); curveTitle.innerHTML = "
CURVE DEPTH
"; controlScaZ.appendChild(curveTitle); var curveinput = document.createElement("Input"); curveinput.id = "curveinput"; curveinput.type = "number"; curveinput.step = 0.01; controlsScaZ.appendChild(curveinput); var curveDepth = this.inputs.curveDepth; var positions = this.mesh.geometry.attributes.position; var initialGeom = this.mesh.geometry; const axis = new THREE.Vector3(0, 1, 0); var axisPosition = new THREE.Vector3(-2, 0, -2); var vTemp = new THREE.Vector3(0, 0, 0); curveinput.value = this.inputs.curveDepth; curveinput.addEventListener("change", function() { var curveDepth = this.value; clickedObjParent[1].inputs.curveDepth = curveDepth; planeCurve(initialGeom, curveDepth); }); var horizTitle = document.createElement("div"); horizTitle.setAttribute("id", "horiztitle"); horizTitle.innerHTML = "
HORIZONTAL PLANE
"; controlScaZ.appendChild(horizTitle); var horizinput = document.createElement("Input"); horizinput.id = "horizinput"; horizinput.type = "checkbox"; if (this.inputs.horiz != "1") { horizinput.checked = false; } else { horizinput.checked = true; } controlsScaZ.appendChild(horizinput); horizinput.addEventListener("change", function() { if (horizinput.checked) { this.inputs.horiz = 1; } else { cthis.inputs.horiz = 0; } }); var mcBtn = document.createElement("button"); mcBtn.id = "mcBtn"; mcBtn.classList.add("inputListButton"); mcBtn.innerHTML = "MEDIA GALLERY"; mcBtn.addEventListener("click", function () { if (!$("#srcinput").attr("hidden")) { $("#srcinput").attr("hidden", true); } var src = "threejs"; var type = "video"; openMediaLibrary(src, type); }); document.getElementById("controlSrc").appendChild(mcBtn); var emBtn = document.createElement("button"); emBtn.id = "emBtn"; emBtn.classList.add("inputListButton"); emBtn.innerHTML = "EXTERNAL LINK"; emBtn.addEventListener("click", function () { if ($("#libDiv").length > 0) { closeMediaDiv(); } if ($("#srcinput").attr("hidden")) { $("#srcinput").removeAttr("hidden"); } }); document.getElementById("controlSrc").appendChild(emBtn); var srcinput = document.createElement("Input"); srcinput.id = "srcinput"; srcinput.type = "url"; srcinput.setAttribute("hidden", true); if (clickedObjParent[0].video.src.substring(8, 22) == "orange-glade-6") { var urlParams = new URLSearchParams(clickedObjParent[0].video.src); for (let p of urlParams) { var myParam = p[1]; } srcinput.value = myParam; } else { if (clickedObjParent[0].video.src.includes(window.location.hostname) && clickedObjParent[0].video.src.substring(0, 4) != "blob") { srcinput.value = clickedObjParent[0].video.src; } else { if (clickedObjParent[0].video.src.substring(clickedObjParent[0].video.src.length - 4, clickedObjParent[0].video.src.length) == "m3u8" || clickedObjParent[0].video.src.substring(0, 4) == "blob") { var hlssrc = clickedObjParent[0].video.getAttribute("hlssrc"); srcinput.value = hlssrc; } } } document.getElementById("controlSrc").appendChild(srcinput); var muteTitle = document.createElement("div"); muteTitle.setAttribute("id", "mutetitle"); muteTitle.innerHTML = "
MUTE VIDEO
"; document.getElementById("controlSrc").appendChild(muteTitle); var muteinput = document.createElement("Input"); muteinput.id = "muteinput"; muteinput.type = "checkbox"; if (clickedObjParent[0].inputs.videoMuted != "1") { muteinput.checked = false; } else { muteinput.checked = true; } muteinput.addEventListener("change", function() { if (muteinput.checked) { clickedObjParent[0].inputs.videoMuted = 1; } else { clickedObjParent[0].inputs.videoMuted = 0; } }); document.getElementById("controlSrc").appendChild(muteinput); var transcriptTitle = document.createElement("div"); transcriptTitle.setAttribute("id", "transcripttitle"); transcriptTitle.innerHTML = ""; document.getElementById("controlSrc").appendChild(transcriptTitle); var transcriptinput = document.createElement("textarea"); transcriptinput.id = "transcriptinput"; var transcriptval = clickedObjParent[0].inputs.transcript; transcriptinput.value = transcriptval; document.getElementById("controlSrc").appendChild(transcriptinput); function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObj.name == "newvideo") { vidNameInput.value = "video_" + uuidv4(); clickedObj.name = vidNameInput.value; } else { vidNameInput.value = clickedObj.name; } document.getElementById("controlSrc").appendChild(vidNameInput); srcinput.addEventListener("change", function() { clickedObjParent[0].inputs.src = srcinput.value; clickedObjParent[0].video.pause(); clickedObjParent[0].video.load(); clickedObjParent[0].video.play(); }) var gsSubmitDiv = document.createElement("div"); gsSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(gsSubmitDiv); var VidSubmit = document.createElement("button"); VidSubmit.setAttribute("id", "3JsCurvedVidSubmit"); VidSubmit.classList.add("inputListButton"); VidSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(VidSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(node); node.visible = false; clickedObj = undefined; }); } } else { if (clickedObjParent[0].inputs.videoMuted != "1") { if (!clickedObjParent[0].video.muted) { this.notify("sweepEntered", false); sweepstarted = false; } else { sweepstarted = true; this.notify("sweepEntered", true); } } } } else { if (this.slavetype == "mp.videoRenderer") { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var maincontrols = document.getElementById("3JsControls"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("tabWrapper").style.display = "none"; var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); if (maincontrols.style.display == "block") { remove3JsInputs(); } else { maincontrols.style.display = "block"; var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180.0000000000001; rotXinput.max = 180.0000000000001; rotXinput.step = 1; var thisRotX = Number(clickedObjRot.x * (180/Math.PI)); controlsRotX.appendChild(rotXinput); rotXinput.value = thisRotX; rotXinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.x = inRadians; }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -180.0000000000001; rotYinput.max = 180.0000000000001; rotYinput.step = 1; var thisRotY = Number(clickedObjRot.y * (180/Math.PI)); controlsRotY.appendChild(rotYinput); rotYinput.value = thisRotY; rotYinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.y = inRadians }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.min = -180.0000000000001; rotZinput.max = 180.0000000000001; rotZinput.step = 1; var thisRotZ = Number(clickedObjRot.z * (180/Math.PI)); controlsRotZ.appendChild(rotZinput); rotZinput.value = thisRotZ; rotZinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.z = inRadians }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); controlScaX.style.display = "block"; scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "block"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); scaZinput.setAttribute("readonly", true); controlScaZ.style.display = "block"; scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) var mcBtn = document.createElement("button"); mcBtn.id = "mcBtn"; mcBtn.classList.add("inputListButton"); mcBtn.innerHTML = "MEDIA GALLERY"; mcBtn.addEventListener("click", function () { if (!$("#srcinput").attr("hidden")) { $("#srcinput").attr("hidden", true); } var src = "threejs"; var type = "video"; openMediaLibrary(src, type); }); document.getElementById("controlSrc").appendChild(mcBtn); var emBtn = document.createElement("button"); emBtn.id = "emBtn"; emBtn.classList.add("inputListButton"); emBtn.innerHTML = "EXTERNAL LINK"; emBtn.addEventListener("click", function () { if ($("#libDiv").length > 0) { closeMediaDiv(); } if ($("#srcinput").attr("hidden")) { $("#srcinput").removeAttr("hidden"); } }); document.getElementById("controlSrc").appendChild(emBtn); var srcinput = document.createElement("Input"); srcinput.id = "srcinput"; srcinput.type = "url"; srcinput.setAttribute("hidden", true); if (clickedObjParent[0].video.src.substring(8, 22) == "orange-glade-6") { var urlParams = new URLSearchParams(clickedObjParent[0].video.src); for (let p of urlParams) { var myParam = p[1]; } srcinput.value = myParam; } else { if (clickedObjParent[0].video.src.includes(window.location.hostname) && clickedObjParent[0].video.src.substring(0, 4) != "blob") { srcinput.value = clickedObjParent[0].video.src; } else { if (clickedObjParent[0].instance.video.src.substring(clickedObjParent[0].video.src.length - 4, clickedObjParent[0].video.src.length) == "m3u8" || clickedObjParent[0].video.src.substring(0, 4) == "blob") { var hlssrc = clickedObjParent[0].video.getAttribute("hlssrc"); srcinput.value = hlssrc; } } } document.getElementById("controlSrc").appendChild(srcinput); var muteTitle = document.createElement("div"); muteTitle.setAttribute("id", "mutetitle"); muteTitle.innerHTML = "
MUTE VIDEO
"; document.getElementById("controlSrc").appendChild(muteTitle); var muteinput = document.createElement("Input"); muteinput.id = "muteinput"; muteinput.type = "checkbox"; if (clickedObjParent[0].inputs.videoMuted != "1") { muteinput.checked = false; } else { muteinput.checked = true; } muteinput.addEventListener("change", function() { if (muteinput.checked) { clickedObjParent[0].inputs.videoMuted = 1; } else { clickedObjParent[0].inputs.videoMuted = 0; } }); document.getElementById("controlSrc").appendChild(muteinput); if (clickedObj.name != "newvideo") { var vidObj = scenecomponents.payload.objects; } else { var vidObj = newVideo.payload.objects; } var transcriptTitle = document.createElement("div"); transcriptTitle.setAttribute("id", "transcripttitle"); transcriptTitle.innerHTML = ""; document.getElementById("controlSrc").appendChild(transcriptTitle); var transcriptinput = document.createElement("textarea"); transcriptinput.id = "transcriptinput"; var transcriptval = clickedObjParent[0].inputs.transcript; transcriptinput.value = transcriptval; document.getElementById("controlSrc").appendChild(transcriptinput); function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObj.name == "newvideo") { vidNameInput.value = "video_" + uuidv4(); clickedObj.name = vidNameInput.value; } else { vidNameInput.value = clickedObj.name; } document.getElementById("controlSrc").appendChild(vidNameInput); srcinput.addEventListener("change", function() { clickedObjParent[0].inputs.src = srcinput.value; //clickedObjParent[0].instance.video.pause(); //clickedObjParent[0].instance.video.load(); //clickedObjParent[0].instance.video.play(); }) var gsSubmitDiv = document.createElement("div"); gsSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(gsSubmitDiv); var VidSubmit = document.createElement("button"); VidSubmit.setAttribute("id", "3JsVidSubmit"); VidSubmit.classList.add("inputListButton"); VidSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(VidSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(node); node.visible = false; clickedObj = undefined; }); } } else { if (clickedObjParent[0].inputs.videoMuted != "1") { if (!clickedObjParent[0].video.muted) { this.notify("playPressed", {"val": false}); playstarted = false; } else { playstarted = true; this.notify("playPressed", {"val": true}); } } } } else { if (this.slavetype == "mp.planeRenderer") { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var maincontrols = document.getElementById("3JsControls"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("tabWrapper").style.display = "none"; var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); if (maincontrols.style.display == "block") { remove3JsInputs(); } else { maincontrols.style.display = "block"; var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180.0000000000001; rotXinput.max = 180.0000000000001; rotXinput.step = 1; var thisRotX = Number(clickedObjRot.x * (180/Math.PI)); controlsRotX.appendChild(rotXinput); rotXinput.value = thisRotX; rotXinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.x = inRadians; }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -180.0000000000001; rotYinput.max = 180.0000000000001; rotYinput.step = 1; //var thisRotY = this.inputs.localRotation.y.toFixed(3); var thisRotY = Number(clickedObjRot.y * (180/Math.PI)); controlsRotY.appendChild(rotYinput); rotYinput.value = thisRotY; rotYinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.y = inRadians }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.min = -180.0000000000001; rotZinput.max = 180.0000000000001; rotZinput.step = 1; var thisRotZ = Number(clickedObjRot.z * (180/Math.PI)); controlsRotZ.appendChild(rotZinput); rotZinput.value = thisRotZ; rotZinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.z = inRadians }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); controlScaX.style.display = "block"; scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "block"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); controlScaZ.style.display = "block"; scaZinput.setAttribute("readonly", true); scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) if (document.getElementById("imgXinput") == null) { var imgXinput = document.createElement("Input"); imgXinput.setAttribute("hidden", true); imgXinput.id = "imgXinput"; imgXinput.type = "number"; } else { var imgXinput = document.getElementById("imgXinput"); } imgXinput.value = clickedObjParent[2].image.width; document.getElementById("controlSrc").appendChild(imgXinput); imgXinput.addEventListener("change", function() { clickedObjParent[2].instance.image.width = Number(imgXinput.value); }); if (document.getElementById("imgYinput") == null) { var imgYinput = document.createElement("Input"); imgYinput.setAttribute("hidden", true); imgYinput.id = "imgYinput"; imgYinput.type = "number"; } else { var imgYinput = document.getElementById("imgYinput"); } imgYinput.value = clickedObjParent[2].image.height; document.getElementById("controlSrc").appendChild(imgYinput); imgYinput.addEventListener("change", function() { clickedObjParent[2].image.height = Number(imgYinput.value); }); var mcBtn = document.createElement("button"); mcBtn.id = "mcBtn"; mcBtn.classList.add("inputListButton"); mcBtn.innerHTML = "MEDIA GALLERY"; mcBtn.addEventListener("click", function () { if (!$("#srcinput").attr("hidden")) { $("#srcinput").attr("hidden", true); } var src = "threejs"; var type = "image"; openMediaLibrary(src, type); }); document.getElementById("controlSrc").appendChild(mcBtn); var emBtn = document.createElement("button"); emBtn.id = "emBtn"; emBtn.classList.add("inputListButton"); emBtn.innerHTML = "EXTERNAL LINK"; emBtn.addEventListener("click", function () { if ($("#libDiv").length > 0) { closeMediaDiv(); } if ($("#srcinput").attr("hidden")) { $("#srcinput").removeAttr("hidden"); } }); document.getElementById("controlSrc").appendChild(emBtn); var srcinput = document.createElement("Input"); srcinput.id = "srcinput"; srcinput.type = "url"; srcinput.setAttribute("hidden", true); if (clickedObjParent[2].inputs.src.substring(8, 22) == "orange-glade-6") { var urlParams = new URLSearchParams(clickedObjParent[2].inputs.src); for (let p of urlParams) { var myParam = p[1]; } srcinput.value = myParam; } else { srcinput.value = clickedObjParent[2].inputs.src; } document.getElementById("controlSrc").appendChild(srcinput); if (clickedObjParent.name != "newvideo") { var vidObj = scenecomponents.payload.objects; } else { var vidObj = newVideo.payload.objects; } var destDiv = document.createElement("div"); destDiv.id = "destDiv"; var addTagTitle = document.createElement("div"); addTagTitle.innerHTML = "
ADD TAG (LEAVE BLANK FOR NO TAG)
"; destDiv.appendChild(addTagTitle); var destTitle = document.createElement("div"); destTitle.innerHTML = "
FULL SCREEN TAG
"; destDiv.appendChild(destTitle); var destinput = document.createElement("Input"); destinput.type = "checkbox"; if (clickedObjParent[2].inputs.dest == 1 || clickedObjParent[2].inputs.dest == "1") { var fsIsChecked = true; } else { var fsIsChecked = false; } destinput.checked = fsIsChecked; destinput.id = "destInput"; destDiv.appendChild(destinput); document.getElementById("controlSrc").appendChild(destDiv); destinput.addEventListener("change", function() { if (destinput.checked == true) { var isChecked = 1; } else { var isChecked = 0; } clickedObjParent[2].inputs.dest = isChecked; }); var tagDiv = document.createElement("div"); tagDiv.id = "tagDiv"; var tagTitle = document.createElement("div"); tagTitle.innerHTML = "
TAG TITLE
"; tagDiv.appendChild(tagTitle); var tagtitleinput = document.createElement("Input"); tagtitleinput.id = "tagtitleinput"; tagtitleinput.type = "text"; tagtitleinput.value = clickedObjParent[2].inputs.tagdetails.tagTitle; tagDiv.appendChild(tagtitleinput); var tagDesc = document.createElement("div"); tagDesc.innerHTML = "
TAG DESCRIPTION
"; tagDiv.appendChild(tagDesc); var tagdescinput = document.createElement("textarea"); tagdescinput.value = ""; tagdescinput.id = "tagdescinput"; tagdescinput.value = clickedObjParent[2].inputs.tagdetails.tagDesc; tagDiv.appendChild(tagdescinput); var tagMedia = document.createElement("div"); tagMedia.innerHTML = "
TAG MEDIA URL
"; tagDiv.appendChild(tagMedia); var tagmediainput = document.createElement("Input"); tagmediainput.id = "tagmediainput"; tagmediainput.type = "url"; tagmediainput.value = clickedObjParent[2].inputs.tagdetails.tagmedia; tagDiv.appendChild(tagmediainput); document.getElementById("controlSrc").appendChild(tagDiv); tagtitleinput.addEventListener("change", function() { clickedObjParent[2].inputs.tagdetails.tagTitle = tagtitleinput.value; }); tagdescinput.addEventListener("change", function() { clickedObjParent[2].inputs.tagdetails.tagDesc = tagdescinput.value; }); tagmediainput.addEventListener("change", function() { clickedObjParent[2].inputs.tagdetails.tagmedia = tagmediainput.value; }); function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObj.name == "newimage") { vidNameInput.value = "image_" + uuidv4(); clickedObj.name = vidNameInput.value; } else { vidNameInput.value = clickedObj.name; } document.getElementById("controlSrc").appendChild(vidNameInput); srcinput.addEventListener("change", function() { if (srcinput.value.includes(window.location.hostname)) { clickedObjParent[2].inputs.src = srcinput.value; } else { clickedObjParent[2].inputs.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + srcinput.value; } }) var gsSubmitDiv = document.createElement("div"); gsSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(gsSubmitDiv); var ImgSubmit = document.createElement("button"); ImgSubmit.setAttribute("id", "3JsImgSubmit"); ImgSubmit.classList.add("inputListButton"); ImgSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(ImgSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(node); node.visible = false; clickedObj = undefined; }); } } else { if ((clickedObjParent[2].inputs.tagdetails.tagTitle != null && clickedObjParent[2].inputs.tagdetails.tagTitle != "") || (clickedObjParent[2].inputs.dest.length > 0 && clickedObjParent[2].inputs.dest.length < 2 && clickedObjParent[2].inputs.dest != "0")) { var hasTag = 1; if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var appendingContainer = document.getElementById("iframecontainer") } else { var appendingContainer = document.getElementById("framecontainer"); } var title = clickedObjParent[2].inputs.tagdetails.tagTitle; var desc = clickedObjParent[2].inputs.tagdetails.tagDesc; var media = clickedObjParent[2].inputs.tagdetails.tagmedia; if (clickedObjParent[2].inputs.dest == "1") { var thisdest = clickedObjParent[2].inputs.tagdetails.tagmedia; executeNav(null, thisdest); } else { if (document.getElementById("sweepInfoDiv") != null && typeof document.getElementById("sweepInfoDiv") != "undefined") { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); } if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } $("video").prop('muted', true); if (typeof audio !== 'undefined') { if (!audio.paused && audio.currentTime > 0) { if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); audio.pause(); } } if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } var sweepInfoDiv = document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile && iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } else { if (media != "") { sweepInfoDiv.style.maxWidth = "50vw"; } else { sweepInfoDiv.style.maxWidth = "30vw" } sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.zIndex = "10"; sweepInfoDiv.style.pointerEvents = "all"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.color = "#FFFFFF"; sweepInfoDiv.style.borderRadius = "7px"; appendingContainer.appendChild(sweepInfoDiv); sinaturalWidth = sweepInfoDiv.clientWidth; sinaturalHeight = sweepInfoDiv.clientHeight var sweepTitleDiv = document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); var closeDiv = document.createElement("span"); closeDiv.innerHTML = "

X

"; closeDiv.style.position = "absolute"; closeDiv.style.top = "-10px"; closeDiv.style.right = "10px"; closeDiv.style.cursor = "pointer"; closeDiv.addEventListener("click", function() { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").removeClass("blurry"); $("#showcase_iframe").removeClass("blurry"); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } sweepDivExists = 0; imghover = true; img2hover = true; }); sweepTitleDiv.appendChild(closeDiv); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; sweepDescDiv.innerHTML = "

" + desc + "

"; sweepInfoDiv.append(sweepDescDiv); if (media != "") { if (media.substring(media.length - 3, media.length) != "png" && media.substring(media.length - 3, media.length) != "jpg" && media.substring(media.length - 3, media.length) != "gif") { var csFrame = document.createElement("iframe"); csFrame.id = "csFrame"; csFrame.src = media; var csHolder = document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.position = "relative"; if (media.includes("mp4") || media.includes("m3u8") || media.includes("youtu") || media.includes("vimeo")) { csHolder.style.paddingBottom = "56.25%"; } else { csHolder.style.paddingBottom = "80%"; } csHolder.style.height = "0"; if (mobile) { if (iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } } else { sweepInfoDiv.style.width = "50vw"; } csFrame.style.width = "90%"; csFrame.style.position = "absolute"; csFrame.style.height = "90%"; csFrame.style.marginLeft = "5%"; csFrame.style.top = "0"; csFrame.style.left = "0"; csHolder.append(csFrame); sweepInfoDiv.append(csHolder); } else { var csHolder = document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.overflow = "auto"; var testAdded = setInterval(function() { var frameWidth = appendingContainer.contents().find("#sweepInfoDiv").width(); if (typeof frameWidth != "undefined") { csHolder.style.height = frameWidth * 9 / 20 + "px"; clearInterval(testAdded); } }, 100); csHolder.style.marginBottom = "20px"; sweepInfoDiv.append(csHolder); var csFrame = document.createElement("img"); csFrame.id = "csFrame"; csFrame.src = media; csFrame.style.width = "100%"; csFrame.style.overflow = "auto"; csHolder.append(csFrame); } updateCss(); } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; imghover = false; img2hover = false; } } else { //retrofit for box if (clickedObjParent[2].inputs.dest.length > 2) { var thisdest = clickedObjParent[2].inputs.dest; executeNav(null, thisdest); } } } } } } } } this.onInputsUpdated = function(oldInputs) { if (oldInputs.transparent !== this.inputs.transparent) { (this.mesh.material).transparent = this.inputs.transparent; } if (oldInputs.texture !== this.inputs.texture) { const material = this.mesh.material; material.map = this.inputs.texture; material.needsUpdate = true; } if (oldInputs.visible !== this.inputs.visible) { this.mesh.visible = this.inputs.visible; } if (oldInputs.polygonOffset !== this.inputs.polygonOffset) { const material = this.mesh.material; material.polygonOffset = this.inputs.polygonOffset; material.polygonOffsetFactor = this.inputs.polygonOffsetFactor; material.polygonOffsetUnits = this.inputs.polygonOffsetUnits; } this.mesh.scale.set(this.inputs.localScale.x, this.inputs.localScale.y / this.inputs.aspect, this.inputs.localScale.z); this.mesh.position.set(this.inputs.localPosition.x, this.inputs.localPosition.y, this.inputs.localPosition.z); } this.onDestroy = function() { this.outputs.collider = null; this.outputs.objectRoot = null; this.mesh.material.dispose(); this.mesh.geometry.dispose(); } } function makePlaneRenderer() { return new PlaneRenderer(); } function BoxRenderer() { this.inputs = { "localScale": { "x": 1, "y": 1, "z": 1 }, "localPosition": { "x": 0, "y": 0, "z": 0 }, "localRotation": { "x": 0, "y": 0, "z": 0 }, "tagdetails": { "tagTitle": "", "tagDesc": "", "tagmedia": "", }, "dest": "" } this.events = { "INTERACTION.CLICK": true, "INTERACTION.HOVER": true, } this.onInit = function() { const THREE = this.context.three; const scene = this.context.scene; const root = this.context.root; var comIterator = this.context.root.componentIterator(); const planeRootNode = Array.from(comIterator); this.planeRootNode = planeRootNode; for (const component of root.componentIterator()) { if (component.componentType === 'mp.box') { component.rotation = this.inputs.localRotation; } } const geometry = new THREE.BoxGeometry(this.inputs.localScale.x, this.inputs.localScale.y, this.inputs.localScale.z); if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { material = new THREE.MeshBasicMaterial({ color: 0x00ff00, opacity: 0.3, transparent: true }); } else { material = new THREE.MeshBasicMaterial({ color: 0x00ff00, opacity: 0, transparent: true, }); } const cube = new THREE.Mesh(geometry, material); this.context.root.obj3D.add(cube); this.outputs.collider = cube; } this.onInputsUpdated = function(oldInputs) {} this.onEvent = function(eventType, eventData) { clickedObjParent = this.planeRootNode; clickedObj = this.context.root.obj3D; clickedObjPos = this.context.root.obj3D.position; clickedObjRot = this.context.root.obj3D.rotation; clickedObjSca = this.context.root.obj3D.scale; if (eventType == "INTERACTION.HOVER") { if ((clickedObjParent[0].inputs.tagdetails.tagTitle != null && clickedObjParent[0].inputs.tagdetails.tagTitle != "") || (clickedObjParent[0].inputs.dest != "" && clickedObjParent[0].inputs.dest != "0")) { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") {} else { var appendingContainer = document.getElementById("framecontainer"); if (imghover && img2hover) { mpSdk.Settings.update('features/cursor', false); iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = 'pointer'; var imghover2 = imghover; if ((clickedObjParent[0].inputs.tagdetails.tagTitle != null && clickedObjParent[0].inputs.tagdetails.tagTitle != "") || (clickedObjParent[0].inputs.dest.length > 0 && clickedObjParent[0].inputs.dest.length < 2)) { imghover = false; var hasTag = 1; var title = clickedObjParent[0].inputs.tagdetails.tagTitle; var desc = clickedObjParent[0].inputs.tagdetails.tagDesc; var media = clickedObjParent[0].inputs.tagdetails.tagmedia; if (document.getElementById("sweepInfoDiv") == null || typeof document.getElementById("sweepInfoDiv") == "undefined") { var sweepInfoDiv = document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile && iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } else { if (media != "") { sweepInfoDiv.style.maxWidth = "50vw"; } else { sweepInfoDiv.style.maxWidth = "30vw" } sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.pointerEvents = "none"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.color = "#FFFFFF"; sweepInfoDiv.style.borderRadius = "7px"; sweepInfoDiv.style.fontSize = "1em"; appendingContainer.appendChild(sweepInfoDiv); var sweepTitleDiv = document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; if (media != "") { sweepDescDiv.innerHTML = "

" + desc + "

Click for more" + "

"; } else { sweepDescDiv.innerHTML = "

" + desc + "

"; } if (!mobile) { sweepInfoDiv.append(sweepDescDiv); } else { if (title == "") { sweepInfoDiv.append(sweepDescDiv); } } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; imghover = false; } } else { if (clickedObjParent[0].inputs.dest != "") { if (imghover && img2hover) { mpSdk.Settings.update('features/cursor', false); iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = 'pointer'; var imghover2 = imghover; imghover = false; } else { iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = ''; imghover = true; } } } } else { mpSdk.Settings.update('features/cursor', true); if (document.getElementById("sweepInfoDiv") != null && typeof document.getElementById("sweepInfoDiv") != "undefined") { if (img2hover) { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); } } else { imghover = true; img2hover = true; } iframe.contentDocument.querySelector('.webgl-canvas').style.cursor = ''; imghover = true; } } } } else { if (eventType === 'INTERACTION.CLICK') { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var maincontrols = document.getElementById("3JsControls"); document.getElementById("controlWrapper").setAttribute("hidden", true); document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("tabWrapper").style.display = "none"; var controlsPosX = document.getElementById("controlPosX"); var controlsPosY = document.getElementById("controlPosY"); var controlsPosZ = document.getElementById("controlPosZ"); var controlsRotX = document.getElementById("controlRotX"); var controlsRotY = document.getElementById("controlRotY"); var controlsRotZ = document.getElementById("controlRotZ"); var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); if (maincontrols.style.display == "block") { remove3JsInputs(); } else { maincontrols.style.display = "block"; var posXinput = document.createElement("Input"); posXinput.id = "PosXinput"; posXinput.type = "number"; posXinput.step = 0.01; controlsPosX.appendChild(posXinput); posXinput.value = clickedObjPos.x.toFixed(3); posXinput.addEventListener("change", function() { clickedObjPos.x = Number(posXinput.value); }) var posYinput = document.createElement("Input"); posYinput.id = "PosYinput"; posYinput.type = "number"; posYinput.step = 0.01; controlsPosY.appendChild(posYinput); posYinput.value = clickedObjPos.y.toFixed(3); posYinput.addEventListener("change", function() { clickedObjPos.y = Number(posYinput.value); }) var posZinput = document.createElement("Input"); posZinput.id = "PosZinput"; posZinput.type = "number"; posZinput.step = 0.01; controlsPosZ.appendChild(posZinput); posZinput.value = clickedObjPos.z.toFixed(3); posZinput.addEventListener("change", function() { clickedObjPos.z = Number(posZinput.value); }) var rotXinput = document.createElement("Input"); rotXinput.id = "RotXinput"; rotXinput.type = "number"; rotXinput.min = -180.0000000000001; rotXinput.max = 180.0000000000001; rotXinput.step = 1; var thisRotX = Number(clickedObjRot.x * (180/Math.PI)); controlsRotX.appendChild(rotXinput); rotXinput.value = thisRotX; rotXinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.x = inRadians; }) var rotYinput = document.createElement("Input"); rotYinput.id = "RotYinput"; rotYinput.type = "number"; rotYinput.min = -180.0000000000001; rotYinput.max = 180.0000000000001; rotYinput.step = 1; var thisRotY = Number(clickedObjRot.y * (180/Math.PI)); controlsRotY.appendChild(rotYinput); rotYinput.value = thisRotY; rotYinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.y = inRadians }) var rotZinput = document.createElement("Input"); rotZinput.id = "RotZinput"; rotZinput.type = "number"; rotZinput.min = -180.0000000000001; rotZinput.max = 180.0000000000001; rotZinput.step = 1; var thisRotZ = Number(clickedObjRot.z * (180/Math.PI)); controlsRotZ.appendChild(rotZinput); rotZinput.value = thisRotZ; rotZinput.addEventListener("change", function() { var inRadians = Number(this.value * (Math.PI / 180)); clickedObj.rotation.z = inRadians }) var controlsScaX = document.getElementById("controlScaX"); var controlsScaY = document.getElementById("controlScaY"); var controlsScaZ = document.getElementById("controlScaZ"); var scaXinput = document.createElement("Input"); controlScaX.style.display = "block"; scaXinput.id = "ScaXinput"; scaXinput.type = "number"; scaXinput.step = 0.01; controlsScaX.appendChild(scaXinput); scaXinput.value = clickedObjSca.x.toFixed(3); scaXinput.addEventListener("change", function() { clickedObjSca.x = Number(scaXinput.value); }) var scaYinput = document.createElement("Input"); controlScaY.style.display = "block"; scaYinput.id = "ScaYinput"; scaYinput.type = "number"; scaYinput.step = 0.01; controlsScaY.appendChild(scaYinput); scaYinput.value = clickedObjSca.y.toFixed(3); scaYinput.addEventListener("change", function() { clickedObjSca.y = Number(scaYinput.value); }) var scaZinput = document.createElement("Input"); controlScaZ.style.display = "block"; scaZinput.id = "ScaZinput"; scaZinput.type = "number"; scaZinput.step = 0.01; controlsScaZ.appendChild(scaZinput); scaZinput.value = clickedObjSca.z.toFixed(3); scaZinput.addEventListener("change", function() { clickedObjSca.z = Number(scaZinput.value); }) var destDiv = document.createElement("div"); destDiv.id = "destDiv"; var addTagTitle = document.createElement("div"); addTagTitle.innerHTML = "
ADD TAG (LEAVE BLANK FOR NO TAG)
"; destDiv.appendChild(addTagTitle); var destTitle = document.createElement("div"); destTitle.innerHTML = "
FULL SCREEN TAG
"; destDiv.appendChild(destTitle); var destinput = document.createElement("Input"); destinput.type = "checkbox"; if (clickedObjParent[0].inputs.dest == 1 || clickedObjParent[0].inputs.dest == "1") { var fsIsChecked = true; } else { var fsIsChecked = false; } destinput.checked = fsIsChecked; destinput.id = "destInput"; destDiv.appendChild(destinput); document.getElementById("controlSrc").appendChild(destDiv); destinput.addEventListener("change", function() { if (destinput.checked == true) { var isChecked = 1; } else { var isChecked = 0; } clickedObjParent[0].inputs.dest = isChecked; }); var tagDiv = document.createElement("div"); tagDiv.id = "tagDiv"; var tagTitle = document.createElement("div"); tagTitle.innerHTML = "
TAG TITLE
"; tagDiv.appendChild(tagTitle); var tagtitleinput = document.createElement("Input"); tagtitleinput.id = "tagtitleinput"; tagtitleinput.type = "text"; tagtitleinput.value = clickedObjParent[0].inputs.tagdetails.tagTitle; tagDiv.appendChild(tagtitleinput); var tagDesc = document.createElement("div"); tagDesc.innerHTML = "
TAG DESCRIPTION
"; tagDiv.appendChild(tagDesc); var tagdescinput = document.createElement("textarea"); tagdescinput.value = ""; tagdescinput.id = "tagdescinput"; tagdescinput.value = clickedObjParent[0].inputs.tagdetails.tagDesc; tagDiv.appendChild(tagdescinput); var tagMedia = document.createElement("div"); tagMedia.innerHTML = "
TAG MEDIA URL
"; tagDiv.appendChild(tagMedia); var tagmediainput = document.createElement("Input"); tagmediainput.id = "tagmediainput"; tagmediainput.type = "url"; tagmediainput.value = clickedObjParent[0].inputs.tagdetails.tagmedia; tagDiv.appendChild(tagmediainput); document.getElementById("controlSrc").appendChild(tagDiv); tagtitleinput.addEventListener("change", function() { clickedObjParent[0].inputs.tagdetails.tagTitle = tagtitleinput.value; }); tagdescinput.addEventListener("change", function() { clickedObjParent[0].inputs.tagdetails.tagDesc = tagdescinput.value; }); tagmediainput.addEventListener("change", function() { clickedObjParent[0].inputs.tagdetails.tagmedia = tagmediainput.value; }); function uuidv4() { return ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); } var vidNameInput = document.createElement("Input"); vidNameInput.id = "vidNameInput"; vidNameInput.type = "text"; vidNameInput.style.display = "none"; if (clickedObj.name == "newbox") { vidNameInput.value = "box_" + uuidv4(); clickedObj.name = vidNameInput.value; } else { vidNameInput.value = clickedObj.name; } document.getElementById("controlSrc").appendChild(vidNameInput); var gsSubmitDiv = document.createElement("div"); gsSubmitDiv.setAttribute("id", "3jsSubmitDiv"); document.getElementById("3JsControls").appendChild(gsSubmitDiv); var BoxSubmit = document.createElement("button"); BoxSubmit.setAttribute("id", "3JsBoxSubmit"); BoxSubmit.classList.add("inputListButton"); BoxSubmit.innerHTML = "SAVE"; document.getElementById("3jsSubmitDiv").appendChild(BoxSubmit); var orTitle = document.createElement("b"); orTitle.setAttribute("id", "or"); orTitle.innerHTML = "
OR
"; document.getElementById("3jsSubmitDiv").appendChild(orTitle); var deleteButton = document.createElement("button"); deleteButton.setAttribute("id", "3JsDelete"); deleteButton.classList.add("inputListButton"); deleteButton.innerHTML = "DELETE"; document.getElementById("3jsSubmitDiv").appendChild(deleteButton); deleteButton.addEventListener("click", function() { clickedObj.traverse(child => { if (child.type == "Mesh") { child.geometry.dispose(); child.material.dispose(); scene.remove(child); } }) scene.remove(clickedObj); clickedObj.visible = false; clickedObj = undefined; }); } } else { if ((clickedObjParent[0].inputs.tagdetails.tagTitle != null && clickedObjParent[0].inputs.tagdetails.tagTitle != "") || (clickedObjParent[0].inputs.dest.length > 0 && clickedObjParent[0].inputs.dest.length < 2 && clickedObjParent[0].inputs.dest != "0")) { var hasTag = 1; if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var appendingContainer = document.getElementById("iframecontainer") } else { var appendingContainer = document.getElementById("framecontainer"); } var title = clickedObjParent[0].inputs.tagdetails.tagTitle; var desc = clickedObjParent[0].inputs.tagdetails.tagDesc; var media = clickedObjParent[0].inputs.tagdetails.tagmedia; if (clickedObjParent[0].inputs.dest == "1") { var thisdest = clickedObjParent[0].inputs.tagdetails.tagmedia; executeNav(null, thisdest); } else { if (document.getElementById("sweepInfoDiv") != null && typeof document.getElementById("sweepInfoDiv") != "undefined") { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); } if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } $("video").prop('muted', true); if (typeof audio !== 'undefined') { if (!audio.paused && audio.currentTime > 0) { if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); audio.pause(); } } if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } var sweepInfoDiv = document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile && iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } else { if (media != "") { sweepInfoDiv.style.maxWidth = "50vw"; } else { sweepInfoDiv.style.maxWidth = "30vw" } sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.zIndex = "10"; sweepInfoDiv.style.pointerEvents = "all"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.color = "#FFFFFF"; sweepInfoDiv.style.borderRadius = "7px"; appendingContainer.appendChild(sweepInfoDiv); sinaturalWidth = sweepInfoDiv.clientWidth; sinaturalHeight = sweepInfoDiv.clientHeight var sweepTitleDiv = document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); var closeDiv = document.createElement("span"); closeDiv.innerHTML = "

X

"; closeDiv.style.position = "absolute"; closeDiv.style.top = "-10px"; closeDiv.style.right = "10px"; closeDiv.style.cursor = "pointer"; closeDiv.addEventListener("click", function() { appendingContainer.removeChild(document.getElementById("sweepInfoDiv")); if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").removeClass("blurry"); $("#showcase_iframe").removeClass("blurry"); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } sweepDivExists = 0; imghover = true; img2hover = true; }); sweepTitleDiv.appendChild(closeDiv); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; sweepDescDiv.innerHTML = "

" + desc + "

"; sweepInfoDiv.append(sweepDescDiv); if (media != "") { if (media.substring(media.length - 3, media.length) != "png" && media.substring(media.length - 3, media.length) != "jpg" && media.substring(media.length - 3, media.length) != "gif") { var csFrame = document.createElement("iframe"); csFrame.id = "csFrame"; csFrame.src = media; var csHolder = document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.position = "relative"; if (media.includes("mp4") || media.includes("m3u8") || media.includes("youtu") || media.includes("vimeo")) { csHolder.style.paddingBottom = "56.25%"; } else { csHolder.style.paddingBottom = "80%"; } csHolder.style.height = "0"; if (mobile) { if (iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } } else { sweepInfoDiv.style.width = "50vw"; } csFrame.style.width = "90%"; csFrame.style.position = "absolute"; csFrame.style.height = "90%"; csFrame.style.marginLeft = "5%"; csFrame.style.top = "0"; csFrame.style.left = "0"; csHolder.append(csFrame); sweepInfoDiv.append(csHolder); } else { var csHolder = document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.overflow = "auto"; var testAdded = setInterval(function() { var frameWidth = appendingContainer.contents().find("#sweepInfoDiv").width(); if (typeof frameWidth != "undefined") { csHolder.style.height = frameWidth * 9 / 20 + "px"; clearInterval(testAdded); } }, 100); csHolder.style.marginBottom = "20px"; sweepInfoDiv.append(csHolder); var csFrame = document.createElement("img"); csFrame.id = "csFrame"; csFrame.src = media; csFrame.style.width = "100%"; csFrame.style.overflow = "auto"; csHolder.append(csFrame); } updateCss(); } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; imghover = false; img2hover = false; } } else { //retrofit for box if (clickedObjParent[0].inputs.dest.length > 2) { var thisdest = clickedObjParent[0].inputs.dest; executeNav(null, thisdest); } } } } else {} } } this.onDestroy = function() { this.outputs.texture = null; this.renderTarget.dispose(); } } function makeBoxRenderer() { return new BoxRenderer(); } function CanvasRenderer() { this.inputs = { painter: null, textureRes: { w: 1024, h: 1024 }, } this.outputs = { texture: null } this.events = { repaint: true } this.onInit = function() { this.canvas; this.renderContext2D; this.renderTarget; const THREE = this.context.three; const renderer = this.context.renderer; const loader = new THREE.TextureLoader(); this.canvas = document.createElement('canvas'); this.renderContext2D = this.canvas.getContext('2d'); //this.renderContext2D.imageSmoothingQuality = "low"; this.renderTarget = new THREE.WebGLRenderTarget(this.inputs.textureRes.w, this.inputs.textureRes.h); this.renderTarget.texture = new THREE.CanvasTexture(this.canvas);//loader.load("https://c3d.space/media/c3daddimage.png"); //this.renderTarget.texture.anisotropy = renderer.capabilities.getMaxAnisotropy(); this.renderTarget.texture.minFilter = THREE.LinearFilter; this.resize(this.inputs.textureRes); this.repaint(); this.outputs.texture = this.renderTarget.texture; } this.onInputsUpdated = function(oldInputs) { if (oldInputs.textureRes.w !== this.inputs.textureRes.w || oldInputs.textureRes.h !== this.inputs.textureRes.h) { this.resize(this.inputs.textureRes); } // if (oldInputs.painter !== this.inputs.painter) { // this.repaint(); // } } this.onEvent = function(eventType, eventData) { if (eventType === 'repaint') { this.repaint(); } } this.onDestroy = function() { this.outputs.texture = null; this.renderTarget.dispose(); } this.resize = function(size) { this.canvas.width = size.w; this.canvas.height = size.h; this.renderTarget.width = size.w; this.renderTarget.height = size.h; } this.repaint = function() { if (this.inputs.painter) { this.inputs.painter.paint(this.renderContext2D, this.inputs.textureRes); this.renderTarget.texture.needsUpdate = true; } } } function makeCanvasRenderer() { return new CanvasRenderer(); } function CanvasText() { this.inputs = { position: { x: 0, y: 0 }, size: { h: 100, w: 100 }, radius: 1, text: 'Placeholder', font: 'normal bold 80px sans-serif', textWidth: 100, } this.outputs = { painter: null, } this.onInit = function() { this.outputs.painter = this; } this.onInputsUpdated = function() { this.notify('paint.ready'); } this.paint = function(context2d, size) { context2d.strokeStyle = 'black'; context2d.fillStyle = 'black'; context2d.font = this.inputs.font; context2d.textAlign = 'left'; context2d.textBaseline = 'top'; wrapText(context2d, this.inputs.text, this.inputs.position.x, this.inputs.position.y, this.inputs.textWidth, 30); } } function wrapText(context, text, x, y, maxWidth, lineHeight) { var words = text.split(' '); var line = ''; for (var n = 0; n < words.length; n++) { var testLine = line + words[n] + ' '; var metrics = context.measureText(testLine); var testWidth = metrics.width; if (testWidth > maxWidth && n > 0) { context.fillText(line, x, y); line = words[n] + ' '; y += lineHeight; } else { line = testLine; } } context.fillText(line, x, y); } function makeCanvasText() { return new CanvasText(); } function CanvasImage() { this.inputs = { src: null, dest: null, tagdetails: { tagTitle: "", tagDesc: "", tagmedia: "", }, srcPosition: { x: 0, y: 0 }, srcSize: { w: 64, h: 64 }, destPosition: { x: 0, y: 0 }, destSize: { w: 64, h: 64 }, } this.emits = { "paint.ready": true, } this.outputs = { painter: null, } this.image = {} this.onInit = function() { this.maybeLoadImage(); this.outputs.painter = this; } this.onInputsUpdated = function(oldInputs) { if (oldInputs.src != this.inputs.src) { this.maybeLoadImage(); } } this.paint = function(context2d, size) { if (!this.image) { return; } context2d.clearRect(0, 0, this.inputs.destSize.w, this.inputs.destSize.h); if (this.image.width > 0) { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var imgXinput = document.getElementById("imgXinput"); if (imgXinput != null) { imgXinput.value = this.image.width; } var imgYinput = document.getElementById("imgYinput"); if (imgYinput != null) { imgYinput.value = this.image.width; } } this.inputs.srcSize = { w: this.image.width, h: this.image.height }; context2d.drawImage(this.image, this.inputs.srcPosition.x, this.inputs.srcPosition.y, this.inputs.srcSize.w, this.inputs.srcSize.h, this.inputs.destPosition.x, this.inputs.destPosition.y, this.inputs.destSize.w, this.inputs.destSize.h); } } this.maybeLoadImage = function() { this.image = null; if (this.inputs.src !== null && this.inputs.src !== '') { const that = this; this.image = new Image(); this.image.crossOrigin = 'anonymous';; if (this.inputs.src.includes(window.location.hostname)) { this.image.src = this.inputs.src; } else { this.image.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + this.inputs.src; } this.image.onload = function(event) { that.notify('paint.ready'); }; } } } function makeCanvasImage() { return new CanvasImage(); } function CanvasBorder() { this.inputs = { position: { x: 0, y: 0 }, size: { h: 1024, w: 1024 }, radius: 50, } this.emits = { "paint.ready": true } this.outputs = { painter: null, } this.onInit = function() { this.outputs.painter = this; this.notify('paint.ready'); } this.onInputsUpdated = function() { this.notify('paint.ready'); } this.paint = function(context2d, size) { const x = this.inputs.position.x; const y = this.inputs.position.y; const radius = this.inputs.radius; var r = x + this.inputs.size.w; var b = y + this.inputs.size.h; context2d.shadowBlur = 10; context2d.shadowColor = 'black'; context2d.beginPath(); context2d.strokeStyle = 'black'; context2d.lineWidth = 50; context2d.moveTo(x + radius, y); context2d.lineTo(r - radius, y); context2d.quadraticCurveTo(r, y, r, y + radius); context2d.lineTo(r, y + this.inputs.size.h - radius); context2d.quadraticCurveTo(r, b, r - radius, b); context2d.lineTo(x + radius, b); context2d.quadraticCurveTo(x, b, x, b - radius); context2d.lineTo(x, y + radius); context2d.quadraticCurveTo(x, y, x + radius, y); context2d.stroke(); } } function makeCanvasBorder() { return new CanvasBorder(); } function VideoRenderer() { this.inputs = { src: null, muted: false, videoMuted:false, sensor: null, play: false, range: false, transcript: null, currentTime: 10 } this.outputs = { texture: null, aspect: 1 } this.events = { playPressed:true } this.onInit = function() { try { this.releaseTexture(); this.outputs.aspect = 6 / 3.2; const THREE = this.context.three; const scene = this.context.scene; const root = this.context.root; if (!this.inputs.src) { this.video.src = ''; return; } if (root.obj3D.name == "newvideo") { this.video = this.createVideoElement(); this.video.src = this.inputs.src; if (os == "iOS" || os == "Mac OS") { this.audio = this.createAudioElement(); } } else { this.video = document.getElementById(root.obj3D.name) } const thisVideo = this.video; thisRoot = this; this.texture = new THREE.VideoTexture(this.video); this.texture.minFilter = THREE.LinearFilter; this.texture.magFilter = THREE.LinearFilter; this.texture.format = THREE.RGBAFormat; //if (this.texture && mp.renderer.xr.isPresenting) { // this.texture.needsUpdate = true; //} this.outputs.texture = this.texture; var thisTexture = this.texture; this.video.play(); this.onTick(); } catch (error) { console.error(error); } } this.onTick = function() { requestAnimationFrame(dummyfunction); if (this.context.renderer.xr.isPresenting) { this.texture.needsUpdate = true; } } this.onEvent = function(eventType, eventData) { if (eventType == "playPressed") { if(eventData.val == true) { this.inputs.play = true; } else { this.inputs.play = false; } } }; this.onInputsUpdated = function(oldInputs) { /* if (oldInputs.muted !== this.inputs.muted) { if (!this.inputs.muted) { this.video.currentTime = 0; } this.video.muted = this.inputs.muted; } if (oldInputs.currentTime !== this.inputs.currentTime) { this.video.currentTime = this.inputs.currentTime; }*/ if (oldInputs.src !== this.inputs.src) { if (oldInputs.src.substring(oldInputs.src.length - 4, oldInputs.src.length) == "m3u8") { var hlsname = this.video.getAttribute("hlsname"); var hls = hlsObj[hlsname]; if (typeof hls != "undefined") { hls.destroy(); delete hlsObj[hlsname]; } } if (this.inputs.src.includes(window.location.hostname)) { this.video.src = this.inputs.src; this.video.load(); } else { if (this.inputs.src.substring(this.inputs.src.length - 4, this.inputs.src.length) == "m3u8") { if (Hls.isSupported()) { var newhls = new Hls({ debug: true, }); newhls.loadSource(this.inputs.src); newhls.attachMedia(this.video); hlsObj[hlsname] = hls; this.video.setAttribute("hlssrc", this.inputs.src) } else if (this.video.canPlayType('application/vnd.apple.mpegurl')) { this.video.src = this.inputs.src; this.video.addEventListener('canplay', function() { this.video.play(); }); } } else { this.video.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + this.inputs.src; } this.video.load(); } this.video.play(); } if (!this.inputs.range) { //this.video.pause(); this.video.muted = true; //for (const component of this.context.root.componentIterator()) { // if (component.componentType === 'mp.toggleState') { // component.outputs.state = false; // component.outputs.negated = true; // } //} if ($('.marquee span').length > 0 && $('.marquee span').html() != "" && $('.marquee span').html() == this.inputs.transcript) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); $("#apptranscription").attr("hidden", true); } } else { if (!this.inputs.sensor) { if (!this.inputs.play) { if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { if (iframe.contentWindow.document.getElementById("musicDiv")) { if (iframe.contentWindow.document.getElementById("musicDiv").style.paddingLeft == "6px") { audioBG.play(); } } } } } this.video.muted = true; if ($('.marquee span').length > 0 && $('.marquee span').html() != "" && $('.marquee span').html() == this.inputs.transcript) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } } else { tjs = this; tjsVideo = this.video; if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.video.muted = true; } else { if (os != "iOS" && os != "Mac OS") { if (!audio.paused && audio.currentTime > 0) { document.getElementById("audioPlayPause").style.display = "none"; $("#apptranscription").css("z-index", -50); audio.pause(); if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } } this.video.currentTime = 0; this.video.muted = false; this.video.play(); if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } getduration(tjs, tjsVideo); } } else { tjsVideo.onended = function() {}; } } } tjsVideo.onended = function() { var hasTranscript = $(tjsVideo).attr('data-transcript'); if (typeof hasTranscript != "undefined" && hasTranscript.length > 0) { $(tjsVideo).attr('data-transcript', ""); if ($('.marquee span').length > 0) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } } } } else { if (!this.inputs.play) { this.video.muted = true; this.video.play(); } else { if (os != "iOS" && os != "Mac OS") { if (!audio.paused && audio.currentTime > 0) { if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); audio.pause(); } } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } } this.video.currentTime = 0; this.video.muted = false; this.video.play(); tjs = this; tjsVideo = this.video; if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } getduration(tjs, tjsVideo); } tjsVideo.onended = function() { var hasTranscript = $(tjsVideo).attr('data-transcript'); if (hasTranscript.length > 0) { if ($('.marquee span').length > 0) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } } } } else { tjsVideo.onended = function() { tjsVideo.src = ""; }; } } } } }; this.onDestroy = function() { this.releaseTexture(); } this.releaseTexture = function() { if (this.texture) { this.outputs.texture = null; this.texture.dispose(); } } this.createVideoElement = function() { const video = document.createElement('video'); video.setAttribute("playsinline", true); video.controls = true; video.crossOrigin = 'anonymous'; video.autoplay = true; video.muted = true; video.loop = true; return video; } this.createAudioElement = function() { const audio = document.createElement('video'); audio.setAttribute("playsinline", true); audio.style.display = "none"; audio.controls = true; audio.crossOrigin = 'anonymous'; audio.autoplay = false; audio.muted = true; audio.loop = true; return audio; } } function makeVideoRenderer() { return new VideoRenderer(); } function CurvedVideoRenderer() { this.inputs = { src: null, sensor: false, play: false, range: false, videoMuted:false, muted: true, currentTime: 0, transcript: null, sweepEnable: null, startSweep: null, endSweep: null, } this.outputs = { texture: null, aspect: 1 } this.events = { sweepEntered:true } this.onInit = function() { this.releaseTexture(); this.outputs.aspect = 6 / 3.2; const THREE = this.context.three; const scene = this.context.scene; const root = this.context.root; const renderer = this.context.renderer if (!this.inputs.src) { this.video.src = ''; return; } if (root.obj3D.name == "newvideo") { this.video = this.createVideoElement(); this.video.src = this.inputs.src; if (os == "iOS" || os == "Mac OS") { this.audio = this.createAudioElement(); } } else { this.video = document.getElementById(root.obj3D.name) } thisVideo = this.video; thisRoot = this; this.texture = new THREE.VideoTexture(this.video); this.texture.minFilter = THREE.LinearFilter; this.texture.magFilter = THREE.LinearFilter; this.texture.format = THREE.RGBAFormat; this.outputs.texture = this.texture; thisTexture = this.texture; this.video.play(); this.onTick(); } this.onTick = function() { requestAnimationFrame(dummyfunction); if (this.context.renderer.xr.isPresenting) { this.texture.needsUpdate = true; } } this.onEvent = function(eventType, eventData) { if (eventType == "sweepEntered") { if(eventData == true) { //this.video.currentTime = 0; //this.video.muted = false; this.inputs.play = true; } else { this.inputs.play = false; //this.video.muted = true; } } }; this.onInputsUpdated = function(oldInputs) { if (oldInputs.src !== this.inputs.src) { if (oldInputs.src.substring(oldInputs.src.length - 4, oldInputs.src.length) == "m3u8") { var hlsname = this.video.getAttribute("hlsname"); var hls = hlsObj[hlsname]; if (typeof hls != "undefined") { hls.destroy(); delete hlsObj[hlsname]; } } if (this.inputs.src.includes(window.location.hostname)) { this.video.src = this.inputs.src; this.video.load(); } else { if (this.inputs.src.substring(this.inputs.src.length - 4, this.inputs.src.length) == "m3u8") { if (Hls.isSupported()) { var newhls = new Hls({ debug: true, }); newhls.loadSource(this.inputs.src); newhls.attachMedia(this.video); hlsObj[hlsname] = hls; this.video.setAttribute("hlssrc", this.inputs.src) } else if (this.video.canPlayType('application/vnd.apple.mpegurl')) { this.video.src = this.inputs.src; this.video.addEventListener('canplay', function() { this.video.play(); }); } } else { this.video.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + this.inputs.src; } this.video.load(); } this.video.play(); } if (!this.inputs.range) { // this.video.pause(); this.video.muted = true; // for (const component of this.context.root.componentIterator()) { // if (component.componentType === 'mp.toggleState') { // component.outputs.state = false; // component.outputs.negated = true; // } //} if ($('.marquee span').length > 0 && $('.marquee span').html() != "" && $('.marquee span').html() == this.inputs.transcript) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } } else { if (!this.inputs.sensor) { if (!this.inputs.play) { if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { if (iframe.contentWindow.document.getElementById("musicDiv")) { if (iframe.contentWindow.document.getElementById("musicDiv").style.paddingLeft == "6px") { audioBG.play(); } } } } } this.video.muted = true; if ($('.marquee span').length > 0 && $('.marquee span').html() != "" && $('.marquee span').html() == this.inputs.transcript) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } } else { if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { this.video.muted = true; } else { if (os != "iOS" && os != "Mac OS") { if (!audio.paused && audio.currentTime > 0) { document.getElementById("audioPlayPause").style.display = "none"; $("#apptranscription").css("z-index", -50); audio.pause(); } } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } } this.video.currentTime = 0; this.video.muted = false; this.video.play(); tjs = this; tjsVideo = this.video; if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } getduration(tjs, tjsVideo); } tjsVideo.onended = function() { var hasTranscript = $(tjsVideo).attr('data-transcript');; if (hasTranscript.length > 0) { if ($('.marquee span').length > 0) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } } } } else { tjsVideo.onended = function() { tjsVideo.src = ""; }; } } } } else { if (!this.inputs.play) { this.video.muted = true; this.video.play(); } else { if (os != "iOS" && os != "Mac OS") { if (!audio.paused && audio.currentTime > 0) { if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); audio.pause(); } } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } } this.video.currentTime = 0; this.video.muted = false; this.video.play(); tjs = this; tjsVideo = this.video; if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } getduration(tjs, tjsVideo); } tjsVideo.onended = function() { var hasTranscript = $(tjsVideo).attr('data-transcript'); if (hasTranscript.length > 0) { if ($('.marquee span').length > 0) { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); } if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.paused) { audioBG.play(); } } } } } } else { tjsVideo.onended = function() { tjsVideo.src = ""; }; } } } } }; this.onDestroy = function() { this.releaseTexture(); } this.releaseTexture = function() { if (this.texture) { this.outputs.texture = null; this.texture.dispose(); } } this.createVideoElement = function() { const video = document.createElement('video'); video.setAttribute("playsinline", true); video.controls = true; video.crossOrigin = 'anonymous'; video.autoplay = true; video.muted = true; video.loop = true; return video; } this.createAudioElement = function() { const audio = document.createElement('video'); audio.setAttribute("playsinline", true); audio.style.display = "none"; audio.controls = true; audio.crossOrigin = 'anonymous'; audio.autoplay = false; audio.muted = true; audio.loop = true; return audio; } } function makeCurvedVideoRenderer() { return new CurvedVideoRenderer(); } const event = { Toggle: 'toggle', } function ToggleState() { this.inputs = { initialState: true } this.outputs = { state: true, negated: false, } this.events = { toggle: true } this.onInit = function() { this.outputs.state = !this.inputs.initialState; this.outputs.negated = !this.outputs.state; } this.onEvent = function(eventType, eventData) { if (eventType === "toggle") { this.outputs.state = eventData.val; this.outputs.negated = !eventData.val; } } } function makeToggleState() { return new ToggleState(); } const initComponents = async (mpSdk) => { await Promise.all([ mpSdk.Scene.register('mp.canvasRenderer', makeCanvasRenderer), mpSdk.Scene.register('mp.planeRenderer', makePlaneRenderer), mpSdk.Scene.register('mp.canvasBorder', makeCanvasBorder), mpSdk.Scene.register('mp.toggleState', makeToggleState), mpSdk.Scene.register('mp.canvasText', makeCanvasText), mpSdk.Scene.register('mp.canvasImage', makeCanvasImage), mpSdk.Scene.register('mp.videoRenderer', makeVideoRenderer), mpSdk.Scene.register('mp.curvedVideoRenderer', makeCurvedVideoRenderer), mpSdk.Scene.register('mp.shadowGeometry', makeShadowGeometry), mpSdk.Scene.register('mp.greenscreen', makeGreenScreen), mpSdk.Scene.register('mp.shadowinit', makeShadowInit), mpSdk.Scene.register('mp.spotLight1', makeSpotLight1), mpSdk.Scene.register('mp.spotLight2', makeSpotLight2), mpSdk.Scene.register('mp.box', makeBoxRenderer), mpSdk.Scene.register('mp.buttonRenderer', makeSvgRenderer), mpSdk.Scene.register('mp.nadirpatch', makeNadirPatch) ]); } const sensor = await mpSdk.Sensor.createSensor(mpSdk.Sensor.SensorType.CAMERA); const sensor2 = await mpSdk.Sensor.createSensor(mpSdk.Sensor.SensorType.CAMERA); if (proxtags != 1) { if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { mpSdk.Camera.pose.subscribe(function(pose) { if (tagsdh == "1") { if (pose.mode == "mode.inside" || pose.mode == "mode.outside") { mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { setTimeout(function() { mpSdk.Mattertag.editOpacity(index, 1); }, 500) } }) } else { mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { setTimeout(function() { mpSdk.Mattertag.editOpacity(index, 0); }, 500) } }) } } }) } } else { await mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { setTimeout(async function() { var source = await mpSdk.Sensor.createSource(mpSdk.Sensor.SourceType.SPHERE, { origin: { // disc position x: item.anchorPosition.x + item.stemVector.x, y: item.anchorPosition.y + item.stemVector.y, z: item.anchorPosition.z + item.stemVector.z, }, radius: proxradius, userData: { id: index, type: "tag" }, }); sensor.addSource(source); },500) } }); sensor.readings.subscribe({ onAdded(source, reading) { var index = source.userData.id; var type = source.userData.type; if (type == "tag") { if (reading.inRange && reading.inView) { mpSdk.Mattertag.editOpacity(index, 1); } else { mpSdk.Mattertag.editOpacity(index, 0); } } }, onUpdated(source, reading) { var index = source.userData.id; var type = source.userData.type; if (type == "tag") { if (reading.inRange && reading.inView) { mpSdk.Mattertag.editOpacity(index, 1); } else { mpSdk.Mattertag.editOpacity(index, 0); } } } }); } const load = async (mpSdk) => { let sdkSceneComponents; let nodesToStart; let sdkSceneComponents2; try { sdkSceneComponents = await mpSdk.Scene.deserialize(JSON.stringify(scenecomponents)); sdkSceneComponents.start; newSer = await mpSdk.Scene.serialize(sdkSceneComponents); sdkSceneComponents2 = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...sdkSceneComponents2.nodeIterator()]; } catch (e) { console.error(e); } for (const node of nodesToStart) { try { node.start(); } catch (error) { console.error(error); } } } await initComponents(mpSdk); try { await load(mpSdk); adaptUi(); } catch (e) { console.error(e); } const showcaseLoaded = await mpSdk.App.state.waitUntil(state => state.phase === 'appphase.playing'); function adaptUi() { var checkTime = 0; var checkElems = setInterval(function (checktime) { var head = $('#showcase_iframe').contents().find("head"); if (tagsversion == "0") { head.append(''); //head.append(''); } if (tagsversion == "1") { head.append(''); $('head').append(''); } } checkTime ++; var searchDiv = $('#showcase_iframe').contents().find(".top-tool-button"); var searchClick = searchDiv.children(":first") var titleDiv = $("#showcase_iframe").contents().find("#model-title"); var titleClickDiv = $("#showcase_iframe").contents().find("#gui-name"); let frameparams = new URLSearchParams(iframe.contentWindow.document.location.search); let framesearchparam = frameparams.get("search"); let frameshparam = frameparams.get("title"); if ((typeof framesearchparam == undefined || framesearchparam != 0) || (typeof frameshparam == undefined || frameshparam != 0)) { if ($("#tourlogoimage").length > 0) { head.append(''); searchClick.on("click", function() { var attr = $("#tourlogoimage").attr("hidden"); if (typeof attr !== typeof undefined && attr !== false) { $("#tourlogoimage").removeAttr("hidden"); } else { $("#tourlogoimage").attr("hidden", true); setTimeout(function() { var iconButton = $("#showcase_iframe").contents().find(".icon-close").parent(); iconButton.on("click", function() { $("#tourlogoimage").removeAttr("hidden"); }) }, 1000); } }); titleClickDiv.on("click", function() { var attr = $("#tourlogoimage").attr("hidden"); if (typeof attr !== typeof undefined && attr !== false) { $("#tourlogoimage").removeAttr("hidden"); } else { $("#tourlogoimage").attr("hidden", true); setTimeout(function() { var iconButton = $("#showcase_iframe").contents().find(".icon-close").parent(); iconButton.on("click", function() { $("#tourlogoimage").removeAttr("hidden"); }) }, 1000); } }); } } if (searchDiv.length > 0 || checkTime > 15) { clearInterval(checkElems) checkElems = null; } },200); } const euclideanDist = (pos1, pos2) => { return Math.sqrt(Math.pow(pos1.x - pos2.x, 2) + Math.pow(pos1.y - pos2.y, 2) + Math.pow(pos1.z - pos2.z, 2)) } const closestSid = (pos) => { let min = 0; if (typeof sweepCollection[min] != "undefined") { let minDist = euclideanDist(pos, sweepCollection[min].position); for (let i = 1; i < sweepCollection.length; ++i) { const dist = euclideanDist(pos, sweepCollection[i].position); if (minDist > dist) { min = i; minDist = dist; } } return sweepCollection[min].sid; } } mpSdk.Pointer.intersection.subscribe(function(intersectionData) { if (intersectionData.object == "intersectedobject.sweep") { const closest = closestSid(intersectionData.position); var sweep = scene.getObjectByName(closest); window.opacitySweep = sweep; if (typeof sweep != "undefined") { sweep.material.opacity = 0.7; closestUUID = sweepLookupArray[sweepLookupArray.indexOf(closest) - 1]; var isCustom = csArray.indexOf(closestUUID); if (isCustom != -1) { if (sweepDivExists == 0) { var hasTag = csArray[isCustom + 1]; var title = csArray[isCustom + 2]; var desc = csArray[isCustom + 3]; var media = csArray[isCustom + 4]; var sweepInfoDiv = iframe.contentWindow.document.createElement("div"); sweepInfoDiv.id = "sweepInfoDiv"; sweepInfoDiv.style.zIndex = "1"; sweepInfoDiv.style.paddingLeft = "30px"; sweepInfoDiv.style.paddingRight = "30px"; if (mobile && iframe.clientHeight > iframe.clientWidth) { sweepInfoDiv.style.width = "90vw"; } else { if (media != "") { sweepInfoDiv.style.maxWidth = "50vw"; } else { sweepInfoDiv.style.maxWidth = "30vw" } sweepInfoDiv.style.maxHeight = "90vh"; } sweepInfoDiv.style.position = "absolute"; sweepInfoDiv.style.pointerEvents = "all"; sweepInfoDiv.style.backgroundColor = "rgba(0,0,0,0.75)"; sweepInfoDiv.style.borderRadius = "7px"; iframe.contentWindow.document.getElementById("showcase-modals").appendChild(sweepInfoDiv); var sweepTitleDiv = iframe.contentWindow.document.createElement("div"); sweepTitleDiv.id = "sweepTitleDiv"; sweepTitleDiv.style.width = "100%"; var titleSpan = document.createElement("span"); if (title != "") { titleSpan.innerHTML = "

" + title + "

"; titleSpan.style.float = "left"; titleSpan.style.width = "100%"; if (mobile) { titleSpan.style.paddingTop = "10px"; } } else { sweepInfoDiv.style.paddingTop = "10px"; } sweepTitleDiv.appendChild(titleSpan); closeDiv = iframe.contentWindow.document.createElement("span"); closeDiv.innerHTML = "

X

"; if (mobile) { closeDiv.style.position = "absolute"; closeDiv.style.top = "-10px"; closeDiv.style.right = "10px"; } else { closeDiv.style.float = "right"; } closeDiv.style.cursor = "pointer"; closeDiv.addEventListener("click", function() { iframe.contentWindow.document.getElementById("showcase-modals").removeChild(iframe.contentWindow.document.getElementById("sweepInfoDiv")); sweepDivExists = 0; }); sweepTitleDiv.appendChild(closeDiv); sweepInfoDiv.append(sweepTitleDiv); var sweepDescDiv = iframe.contentWindow.document.createElement("div"); sweepDescDiv.id = "sweepDescDiv"; sweepDescDiv.style.clear = "both"; sweepDescDiv.innerHTML = "

" + desc + "

"; if (!mobile) { sweepInfoDiv.append(sweepDescDiv); } else { if (title == "") { sweepInfoDiv.append(sweepDescDiv); } } if (media != "") { if (media.substring(media.length - 3, media.length) != "png" && media.substring(media.length - 3, media.length) != "jpg" && media.substring(media.length - 3, media.length) != "gif") { var csFrame = iframe.contentWindow.document.createElement("iframe"); csFrame.id = "csFrame"; csFrame.src = media; var csHolder = iframe.contentWindow.document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.position = "relative"; csHolder.style.paddingBottom = "56.25%"; csHolder.style.height = "0"; sweepInfoDiv.style.width = "50vw"; csFrame.style.width = "90%"; csFrame.style.position = "absolute"; csFrame.style.height = "90%"; csFrame.style.marginLeft = "5%"; csFrame.style.top = "0"; csFrame.style.left = "0"; csHolder.append(csFrame); sweepInfoDiv.append(csHolder); } else { var csHolder = iframe.contentWindow.document.createElement("div"); csHolder.id = "csHolder"; csHolder.style.overflow = "auto"; var testAdded = setInterval(function() { var frameWidth = $('#showcase_iframe').contents().find("#sweepInfoDiv").width(); if (typeof frameWidth != "undefined") { csHolder.style.height = frameWidth * 9 / 20 + "px"; clearInterval(testAdded); } }, 100); csHolder.style.marginBottom = "20px"; sweepInfoDiv.append(csHolder); var csFrame = iframe.contentWindow.document.createElement("img"); csFrame.id = "csFrame"; csFrame.src = media; csFrame.style.width = "100%"; csFrame.style.overflow = "auto"; csHolder.append(csFrame); } } var showcaseSize = { w: iframe.clientWidth, h: iframe.clientHeight, }; sweepInfoDiv.style.left = `${iframe.clientWidth/2 - sweepInfoDiv.offsetWidth/2}px`; sweepInfoDiv.style.top = `${iframe.clientHeight/2 - sweepInfoDiv.offsetHeight/2}px`; sweepDivExists = 1; } } } } else { const closest = closestSid(intersectionData.position); var isCustom = csArray.indexOf(closest); var media = csArray[isCustom + 4]; if (media == "") { if (iframe.contentWindow.document.getElementById("sweepInfoDiv") != null && typeof iframe.contentWindow.document.getElementById("sweepInfoDiv") != "undefined") { iframe.contentWindow.document.getElementById("showcase-modals").removeChild(iframe.contentWindow.document.getElementById("sweepInfoDiv")); sweepDivExists = 0; } } if (typeof window.opacitySweep != "undefined") { window.opacitySweep.material.opacity = 0.4; } } }); function changePano(pano, sweepIconSrc) { if (!pano?.material?.map) return; if (sweepIconSrc != "NOCHANGE") { var pano2 = new THREE.Mesh(pano.geometry.clone(), pano.material.clone()); pano2.name = pano.name; pano2.type = "puckMesh"; pano2.position.set(pano.position.x, pano.position.y, pano.position.z); pano2.renderOrder = 4; pano.geometry.dispose(); pano.material.dispose(); scene.remove(pano); pano2.material.visible = true; try { pano2.material.map = new THREE.TextureLoader().load(sweepIconSrc); } catch (error) { console.error(error); } sweepIconSrc = ""; pano2.material.map.minFilter = THREE.LinearFilter; pano2.material.opacity = 0.4; pano2.material.needsUpdate = true; scene.add(pano2) pano2.updateMatrixWorld(); mpSdk.on(mpSdk.Camera.Event.MOVE, function() { if (iframe.contentWindow.document.getElementById("sweepInfoDiv") != null && typeof iframe.contentWindow.document.getElementById("sweepInfoDiv") != "undefined") { iframe.contentWindow.document.getElementById("showcase-modals").removeChild(iframe.contentWindow.document.getElementById("sweepInfoDiv")); sweepDivExists = 0; } pano2.lookAt(poseCache.position.x, pano2.position.y, poseCache.position.z); }); } } mpSdk.Sweep.data.subscribe({ onAdded: function(index, item, collection) { var thisUUID = sweepLookupArray[sweepLookupArray.indexOf(index) - 1]; var pano = scene.getObjectByName(index); if (mediaCustomPuck == 1) { if (typeof vArray !== 'undefined') { if (vArray.includes(thisUUID)) { sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=video&fill=' + cssFg + '&background=' + cssBg; changePano(pano, sweepIconSrc) } } if (typeof jArray !== 'undefined') { if (jArray.includes(thisUUID)) { sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=audio&fill=' + cssFg + '&background=' + cssBg; changePano(pano, sweepIconSrc) } } if (typeof mArray !== 'undefined') { if (mArray.includes(thisUUID)) { sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=internet-explorer&fill=' + cssFg + '&background=' + cssBg; changePano(pano, sweepIconSrc) } } } if ((typeof customSweepUrl != "undefined" && customSweepUrl != "" && pucks == "0")) { var isSingle = csArray.indexOf(item.uuid); if (isSingle != -1) { var hasIcon = csArray[isSingle + 5]; var customicon = csArray[isSingle + 6]; var custombg = csArray[isSingle + 7]; var customfg = csArray[isSingle + 8]; if (hasIcon == "1") { if (customicon.substring(0, 5) == "icon_") { customicon = customicon.substring(5, customicon.length); sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=' + customicon + '&fill=' + customfg + '&background=' + custombg; changePano(pano, sweepIconSrc) } else { sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=baseSweepIcon&fill=' + customfg + '&background=' + custombg; changePano(pano, sweepIconSrc) } } } else { if (mediaCustomPuck == 1) { if (!vArray.includes(thisUUID) && !jArray.includes(thisUUID) && !mArray.includes(thisUUID)) { if (typeof customSweepUrl != "undefined") { if (customSweepUrl.substring(0, 5) != "https") { sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=baseSweepIcon&fill=' + customSweepUrl + '&background=' + cssBg; changePano(pano, sweepIconSrc) } else { if (customSweepUrl.substring(0, 5) == "https") { sweepIconSrc = customSweepUrl; changePano(pano, sweepIconSrc) } } } } } else { if (typeof customSweepUrl != "undefined") { if (customSweepUrl.substring(0, 5) != "https") { sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=baseSweepIcon&fill=' + customSweepUrl + '&background=' + cssBg; changePano(pano, sweepIconSrc) } else { if (customSweepUrl.substring(0, 5) == "https") { sweepIconSrc = customSweepUrl; changePano(pano, sweepIconSrc) } } } } } } else { var isSingle = csArray.indexOf(item.uuid); if (isSingle != -1) { var hasIcon = csArray[isSingle + 5]; var customicon = csArray[isSingle + 6]; var custombg = csArray[isSingle + 7]; var customfg = csArray[isSingle + 8]; if (hasIcon == "1") { if (customicon.substring(0, 5) == "icon_") { customicon = customicon.substring(5, customicon.length); sweepIconSrc = baseLoc + '/assets/icons/autogenerate.php?icon=' + customicon + '&fill=' + customfg + '&background=' + custombg; changePano(pano, sweepIconSrc) } } } } } }); if (tagsversion == "0") { var image = $('#showcase_iframe').contents().find(".tag-image"); if (image.length > 0) { image[0].click(function() {}) } var head = $('#showcase_iframe').contents().find("head"); if (cssFg == "000000") { var sliderBg = "FFFFFF"; } else { var sliderBg = cssFg } var mutationObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) {}); }); mpSdk.on(mpSdk.Mattertag.Event.HOVER, function(tag) { var i = 0; var domCreated = setInterval(function(i) { i = i + 1; if (dockRemove == 1) { var tagBody = $('#showcase_iframe').contents().find(".tag-billboard"); var tagBody2 = tagBody.clone(true).off(); tagBody.replaceWith(tagBody2) var oeLoader = $('#showcase_iframe').contents().find(".oembed-loading"); oeLoader.css("display", "none"); } var descr = $('#showcase_iframe').contents().find(".tag-description"); var image = $('#showcase_iframe').contents().find(".tag-image"); var tagframe = $('#showcase_iframe').contents().find(".tag-container").next(); if (image.length > 0) { if (image.width() < 600) { image.css("cursor", "url(" + baseUrl + "/wp-content/themes/pro-child-theme/mpaudio/assets/cursorzoom2.png), auto"); } else { image.css("cursor", "default"); } clearInterval(domCreated); domCreated = null; } else { clearInterval(domCreated); domCreated = null; } }, 500) }) mpSdk.on(mpSdk.Mattertag.Event.CLICK, function(tag) { if (typeof tArray != "undefined" && tArray != null) { var referenceTag = lookup.indexOf(tag); var referenceValue = lookup[referenceTag + 1]; var thistagPos = tArray.indexOf(referenceValue); thistag = tArray[thistagPos]; if (thistagPos != -1) { submitAnalyticData(thistag, "tagclick", 1); } else { submitAnalyticData(tag, "tagclick", 1); } } var descr = $('#showcase_iframe').contents().find(".tag-description"); var image = $('#showcase_iframe').contents().find(".tag-image"); var tagcontainer = $('#showcase_iframe').contents().find(".tag-container"); var customframe = $('#showcase_iframe').contents().find(".custom-widget-container"); if (image.length > 0) { image[0].click(function() { var descr = $('#showcase_iframe').contents().find(".tag-description"); }) } }) } var old_fs_element = iframe.contentWindow.document.getElementsByClassName("fullscreen-mode")[0]; if (old_fs_element) { var new_fs_element = old_fs_element.cloneNode(true); old_fs_element.parentNode.appendChild(new_fs_element); old_fs_element.style.display = "none"; new_fs_element.addEventListener("click", function() { var doc = window.document; var docEl = doc.documentElement; var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen; var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen; if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) { requestFullScreen.call(docEl); } else { cancelFullScreen.call(doc); } }); } var divelements = iframe.contentWindow.document.getElementsByClassName("collapsible-list-items")[0].childNodes; for (var i = 0; i < divelements.length; i++) { var divelement = divelements[i]; if (divelement.ariaLabel == "Share this Space") { var old_share_element = divelements[i]; } } if (old_share_element) { old_share_element.addEventListener("click", function() { setTimeout(function() { var inputElement = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[1].childNodes[0]; var inputButton = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[1].childNodes[1]; var newInputButton = inputButton.cloneNode(true); inputButton.parentNode.replaceChild(newInputButton, inputButton); newInputButton.addEventListener("click", function() { inputElement.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; } catch (err) { console.log('Oops, unable to copy', err); } }); var socialIconsDiv = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0]; var checkboxDiv = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[2]; checkboxDiv.style.display = "none"; var socialIcons = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes; var newSocialDiv = socialIconsDiv.cloneNode(true); socialIconsDiv.parentNode.replaceChild(newSocialDiv, socialIconsDiv); for (var i = 0; i < socialIcons.length; i++) { var nodeItem = socialIcons.item(i) var newSocialIcon = nodeItem.cloneNode(true); nodeItem.style.display = "none"; nodeItem.parentNode.appendChild(newSocialIcon); i = i + 1; } if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { var queryString = window.location.search; const urlParams = new URLSearchParams(queryString); if (urlParams.has("model")) { var hrefVal = baseUrl + "/tagviewer/?model=" + editmodel + "&version=" + version; } else { if (urlParams.has("experience")) { var experience = urlParams.get("experience") var hrefVal = baseUrl + "/tour/?experience=" + experience; } } } else { var hrefVal = window.location.href; } inputElement.value = hrefVal; var fbIcon = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[0]; fbIcon.addEventListener("click", function() { window.open('https://www.facebook.com/sharer.php?u=' + encodeURIComponent(hrefVal) + '%26utm_source%3D1', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); var twitterIcon = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[1]; twitterIcon.addEventListener("click", function() { var title = document.title; window.open('https://twitter.com/intent/tweet?text=Explore%20' + encodeURIComponent(title) + ' at ' + encodeURIComponent(hrefVal) + '%26utm_source%3D2', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); var liIcon = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[2]; liIcon.addEventListener("click", function() { window.open('https://www.linkedin.com/sharing/share-offsite/?url=' + encodeURIComponent(hrefVal) + '%26utm_source%3D6', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); var pintrestIcon = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[3]; pintrestIcon.addEventListener("click", function() { var title = document.title; var vars = {}; window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { vars[key] = value; }); var thumb = 'https://my.matterport.com/api/v1/player/models/' + vars.m + '/thumb'; window.open('https://www.pinterest.com/pin/create/link/?url=' + encodeURIComponent(hrefVal) + '%26utm_source%3D5' + '&description=' + encodeURIComponent(title) + '&media=' + encodeURIComponent(thumb), 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); var emailIcon = iframe.contentWindow.document.getElementsByClassName("modal-background")[0].childNodes[0].childNodes[1].childNodes[0].childNodes[0].childNodes[4]; emailIcon.addEventListener("click", function() { var title = document.title; location.href = 'mailto:?subject=' + encodeURIComponent(title) + '&body=' + encodeURIComponent(title + '\n\n') + encodeURIComponent(hrefVal) + '%26utm_source%3D3'; }); }, 100); }); } if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { //const showcaseLoaded = await mpSdk.App.state.waitUntil(state => state.phase === 'appphase.playing'); $('#mediaconfigcontrols').click(function() { $('#mediaconfigcontrols ul').toggleClass('visible'); }); $('#objectControlPage').click(function() { $('#add_item ul').toggleClass('visible'); if ($('#add_item ul').hasClass('visible')) { $('.objUpArrow').css("display", "inline-flex"); $('.objDownArrow').css("display", "none"); } else { $('.objUpArrow').css("display", "none"); $('.objDownArrow').css("display", "inline-flex"); } }); $('#add_globalslink').click(function() { $('#add_globals ul').toggleClass('visible'); if ($('#add_globals ul').hasClass('visible')) { $('.globUpArrow').css("display", "inline-flex"); $('.globDownArrow').css("display", "none"); } else { $('.globUpArrow').css("display", "none"); $('.globDownArrow').css("display", "inline-flex"); } }); $('#navControlPage').click(function() { $('#navconfigcontrols ul').toggleClass('visible'); if ($('#navconfigcontrols ul').hasClass('visible')) { $('.navUpArrow').css("display", "inline-flex"); $('.navDownArrow').css("display", "none"); } else { $('.navUpArrow').css("display", "none"); $('.navDownArrow').css("display", "inline-flex"); } }); $('#tagControlPage').click(function() { $('#tagconfigcontrols ul').toggleClass('visible'); if ($('#tagconfigcontrols ul').hasClass('visible')) { $('.tagUpArrow').css("display", "inline-flex"); $('.tagDownArrow').css("display", "none"); } else { $('.tagUpArrow').css("display", "none"); $('.tagDownArrow').css("display", "inline-flex"); } }); $('#sweepControlPage').click(function() { $('#sweepconfigcontrols ul').toggleClass('visible'); if ($('#sweepconfigcontrols ul').hasClass('visible')) { $('.sweepUpArrow').css("display", "inline-flex"); $('.sweepDownArrow').css("display", "none"); } else { $('.sweepUpArrow').css("display", "none"); $('.sweepDownArrow').css("display", "inline-flex"); } }); $('#modelPreview').click(function() { var from = "MENU"; var thisdest = "https://c3d.space/tour?model=" + editmodel + "&version=" + version; executeNav(from, thisdest); }); var modelAddDiv = document.getElementById("modelDynDiv"); document.getElementById("add3JsModelButton").addEventListener("click", async function() { movingVid = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); modelAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; vidInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { modelAddDiv.style.left = `${coord.x - 5}px` modelAddDiv.style.top = `${coord.y - 5}px`; modelAddDiv.style.position = "absolute"; modelAddDiv.style.backgroundColor = "red"; modelAddDiv.style.borderRadius = "50%"; modelAddDiv.style.width = "10px"; modelAddDiv.style.height = "10px"; modelAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); modelAddDiv.addEventListener('click', function() { var src = "tjsmodel"; var type = "model"; openMediaLibrary(src, type); //$("#iconPage").css("display", "block"); //content = baseLoc + "/3dmodels.php" //$("#iconPage").load(content); }); $(document).on('click', ".tjsmodelSelectButton", async function() { newGltf.payload.objects[0].components[0].inputs.url = $(this).attr("data-media"); newGltf.payload.objects[0].position.x = intersectionCache.position.x; newGltf.payload.objects[0].position.y = intersectionCache.position.y + 0.0005; newGltf.payload.objects[0].position.z = intersectionCache.position.z; newrot = poseCache.rotation.y; newGltf.payload.objects[0].rotation.y = newrot; var newlightneeded = dirLightAllocated / dirLightSources; dirLightAllocated = dirLightAllocated + newlightneeded; dirLightSources = dirLightSources + 1; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newGltf)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); } $("#iconPage").css("display", "none"); modelAddDiv.style.display = 'none'; movingVid = false; clearInterval(vidInterval); iframe.focus(); initialLoad = 1; if ($("#libDiv").length > 0) { closeMediaDiv(); } }); $(document).on('click', "#3JsModelSubmit", function() { var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var objRotXinput = document.getElementById("objRotXinput").value; if (initialLoad == 1) { var objRotYinput = newrot; } else { var objRotYinput = document.getElementById("objRotYinput").value; } var objRotZinput = document.getElementById("objRotZinput").value; var rotXinput = document.getElementById("RotXinput").value; var rotYinput = document.getElementById("RotYinput").value; var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var alIinput = document.getElementById("alIinput").value; var dlOpacityinput = document.getElementById("dlOpacityinput").value; var EdlInputChecked = document.getElementById("EdlInput").checked; if (document.getElementById("dlSensorInput").checked) { var dlSensorInputChecked = 1; } else { var dlSensorInputChecked = 0; } var dlIntensityInput = document.getElementById("dlIntensityInput").value; var dlTopinput = document.getElementById("dlTopInput").value; var dlBottominput = document.getElementById("dlBottomInput").value; var dlLeftinput = document.getElementById("dlLeftInput").value; var dlRightinput = document.getElementById("dlRightInput").value; var dlNearinput = document.getElementById("dlNearInput").value; var dlFarinput = document.getElementById("dlFarInput").value; var dlXinput = document.getElementById("dlAngleinput").value; var dlYinput = ""; var dlZinput = document.getElementById("dlRadiusinput").value; var sl1Input = document.getElementById("sl1Input").value; var sl1ConeInput = document.getElementById("sl1ConeInput").value; var sl1AngleInput = document.getElementById("sl1AngleInput").value; var sl1RadiusInput = document.getElementById("sl1RadiusInput").value; var sl1DecayInput = document.getElementById("sl1DecayInput").value; var sl1HeightInput = document.getElementById("sl1HeightInput").value; var sl2Input = document.getElementById("sl2Input").value; var sl2ConeInput = document.getElementById("sl2ConeInput").value; var sl2AngleInput = document.getElementById("sl2AngleInput").value; var sl2RadiusInput = document.getElementById("sl2RadiusInput").value; var sl2DecayInput = document.getElementById("sl2DecayInput").value; var sl2HeightInput = document.getElementById("sl2HeightInput").value; var srcinput = document.getElementById("srcinput").value; var vidNameInput = document.getElementById("vidNameInput").value; if (spotLight.name.substring(0, 7) == "newgltf") { spotLight.name = vidNameInput + "spotlight1"; spot1helper.name = vidNameInput + "_spot1helper"; spotLight2.name = vidNameInput + "spotlight2"; spot2helper.name = vidNameInput + "_spot2helper"; } var threeJsAddformData = new FormData(); threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "object"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', objRotXinput); threeJsAddformData.append('objroty', objRotYinput); threeJsAddformData.append('objrotz', objRotZinput); threeJsAddformData.append('rotx', rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', ""); threeJsAddformData.append('ali', alIinput); threeJsAddformData.append('dlo', dlOpacityinput); threeJsAddformData.append('dlti', dlIntensityInput); threeJsAddformData.append('dlts', dirLightSources); threeJsAddformData.append('dls', EdlInputChecked); threeJsAddformData.append('dli', dlIntensityInput); threeJsAddformData.append('sensor', dlSensorInputChecked); threeJsAddformData.append('dlt', dlTopinput); threeJsAddformData.append('dlb', dlBottominput); threeJsAddformData.append('dll', dlLeftinput); threeJsAddformData.append('dlr', dlRightinput); threeJsAddformData.append('dln', dlNearinput); threeJsAddformData.append('dlf', dlFarinput); threeJsAddformData.append('dlx', dlXinput); threeJsAddformData.append('dly', dlYinput); threeJsAddformData.append('dlz', dlZinput); threeJsAddformData.append('sl1i', sl1Input); threeJsAddformData.append('sl1c', sl1ConeInput); threeJsAddformData.append('sl1a', sl1AngleInput); threeJsAddformData.append('sl1r', sl1RadiusInput); threeJsAddformData.append('sl1d', sl1DecayInput); threeJsAddformData.append('sl1h', sl1HeightInput); threeJsAddformData.append('sl2a', sl2AngleInput); threeJsAddformData.append('sl2r', sl2RadiusInput); threeJsAddformData.append('sl2d', sl2DecayInput); threeJsAddformData.append('sl2h', sl2HeightInput); threeJsAddformData.append('sl2i', sl2Input); threeJsAddformData.append('sl2c', sl2ConeInput); threeJsAddformData.append('radius', ""); threeJsAddformData.append('imgx', ""); threeJsAddformData.append('imgy', ""); threeJsAddformData.append('src', srcinput); threeJsAddformData.append('transcript', ""); threeJsAddformData.append('dest', ""); threeJsAddformData.append('tagtitle', ""); threeJsAddformData.append('tagdesc', ""); threeJsAddformData.append('tagmedia', ""); threeJsAddformData.append('tagicon', ""); threeJsAddformData.append('tagfg', ""); threeJsAddformData.append('tagbg', ""); threeJsAddformData.append('taganim', ""); threeJsAddformData.append('chromakey', ""); threeJsAddformData.append('animation', ""); threeJsAddformData.append('videoMute', ""); threeJsAddformData.append('horiz', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } initialLoad = 0; }); var boxAddDiv = document.getElementById("boxDynDiv"); document.getElementById("add3JsBoxButton").addEventListener("click", async function() { movingBox = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); boxAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; boxInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { boxAddDiv.style.left = `${coord.x - 5}px` boxAddDiv.style.top = `${coord.y - 5}px`; boxAddDiv.style.position = "absolute"; boxAddDiv.style.backgroundColor = "red"; boxAddDiv.style.borderRadius = "50%"; boxAddDiv.style.width = "10px"; boxAddDiv.style.height = "10px"; boxAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); boxAddDiv.addEventListener('click', async function() { newBox.payload.objects[0].position.x = intersectionCache.position.x; newBox.payload.objects[0].position.y = intersectionCache.position.y + (newBox.payload.objects[0].components[0].inputs.localScale.y / 4); newBox.payload.objects[0].position.z = intersectionCache.position.z; newBox.payload.objects[0].rotation.y = poseCache.rotation.y; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newBox)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); } boxAddDiv.style.display = 'none'; movingBox = false; clearInterval(boxInterval); iframe.focus(); }); $(document).on('click', "#3JsBoxSubmit", function() { var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var rotXinput = document.getElementById("RotXinput").value; if ((rotXinput >= 0 && rotXinput < 1.57) || (rotXinput <= -0.872 && rotXinput >= -3.142)) { var rotYinput = document.getElementById("RotYinput").value; } else { var rotYinput = document.getElementById("RotYinput").value * -1 } var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var alIinput = ""; var dlOpacityinput = ""; var EdlInput = ""; var dlIntensityInput = ""; var dlXinput = ""; var dlYinput = ""; var dlZinput = ""; var sl1Input = ""; var sl2Input = ""; var sl1ConeIinput = ""; var sl2ConeIinput = ""; var srcinput = ""; var radiusinput = ""; var chromainput = ""; if (document.getElementById("destInput").checked) { var destinput = 1; } else { var destinput = 0; } var tagtitleinput = document.getElementById("tagtitleinput").value; var tagdescinput = document.getElementById("tagdescinput").value; var tagmediainput = document.getElementById("tagmediainput").value; var vidNameInput = document.getElementById("vidNameInput").value; var threeJsAddformData = new FormData(); threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "box"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', ""); threeJsAddformData.append('objroty', ""); threeJsAddformData.append('objrotz', ""); threeJsAddformData.append('rotx', rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', ""); threeJsAddformData.append('ali', ""); threeJsAddformData.append('dlo', ""); threeJsAddformData.append('dlti', ""); threeJsAddformData.append('dlts', ""); threeJsAddformData.append('dls', ""); threeJsAddformData.append('dli', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('sensor', ""); threeJsAddformData.append('dlt', ""); threeJsAddformData.append('dlb', ""); threeJsAddformData.append('dll', ""); threeJsAddformData.append('dlr', ""); threeJsAddformData.append('dln', ""); threeJsAddformData.append('dlf', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl1a', ""); threeJsAddformData.append('sl1r', ""); threeJsAddformData.append('sl1d', ""); threeJsAddformData.append('sl1h', ""); threeJsAddformData.append('sl2a', ""); threeJsAddformData.append('sl2r', ""); threeJsAddformData.append('sl2d', ""); threeJsAddformData.append('sl2h', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('imgx', ""); threeJsAddformData.append('imgy', ""); threeJsAddformData.append('src', ""); threeJsAddformData.append('transcript', ""); threeJsAddformData.append('dest', destinput); threeJsAddformData.append('tagtitle', tagtitleinput); threeJsAddformData.append('tagdesc', tagdescinput); threeJsAddformData.append('tagmedia', tagmediainput); threeJsAddformData.append('tagicon', ""); threeJsAddformData.append('tagfg', ""); threeJsAddformData.append('tagbg', ""); threeJsAddformData.append('taganim', ""); threeJsAddformData.append('radius', ""); threeJsAddformData.append('chromakey', ""); threeJsAddformData.append('animation', ""); threeJsAddformData.append('videoMute', ""); threeJsAddformData.append('horiz', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } initialLoad = 0; }); $(document).on('change', "#nplogo", async function() { var url = $(this).val(); if (url != "") { if (scene.getObjectByName("nadirpatch")!= null) { var patch = scene.getObjectByName("nadirpatch"); patch.children[0].geometry.dispose(); patch.children[0].material.dispose(); scene.remove(patch); patch = null; } $("#currentnpLogoImg").remove(); $("#NplogoBtn").attr("hidden", true); $(".hPara").attr("hidden", true); $("#NplogoUrlBtn").attr("hidden", true) $("#rmNplogoBtn").removeAttr("hidden") $("#nporholder").removeAttr("hidden") var img = document.createElement("img"); img.id = "currentnpLogoImg"; img.style.width = "90%"; img.src = url; $("#nplogoHolder").before(img); await mpSdk.Sweep.current.subscribe(function (currentSweep) { var puck = scene.getObjectByName(currentSweep.sid); console.log(puck) var camera = scene.getObjectByName("CameraRig"); var radius = document.getElementById("npradius").value; var opacity = document.getElementById("npopacity").value; newNadirPatch.payload.objects[0].components[0].inputs.src = url; newNadirPatch.payload.objects[0].components[0].inputs.opacity = opacity; newNadirPatch.payload.objects[0].components[0].inputs.radius = radius; newNadirPatch.payload.objects[0].position.x = camera.position.x; newNadirPatch.payload.objects[0].position.y = puck.position.y - +0.01; newNadirPatch.payload.objects[0].position.z = camera.position.z; }); nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newNadirPatch)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); } } else { var patch = scene.getObjectByName("nadirpatch"); patch.children[0].geometry.dispose(); patch.children[0].material.dispose(); scene.remove(patch); patch = null; } }); $(document).on('change', "#npopacity", async function() { if (scene.getObjectByName("nadirpatch")!= null) { var np = scene.getObjectByName("nadirpatch"); np.children[0].material.opacity = $(this).val(); } }); $(document).on('change', "#npradius", async function() { if (scene.getObjectByName("nadirpatch")!= null) { var np = scene.getObjectByName("nadirpatch"); var radius = np.children[0].geometry.parameters.radius; np.scale.x = $(this).val()/radius; np.scale.z = $(this).val()/radius; } }); $(document).on('click', ".removeMediaBtn", function() { $(".hPara").removeAttr("hidden"); if ($(this).attr("data-src") == "bgmedia") { $("#currentBgImg").remove(); $("#intro_bg").val(""); $("#intro_bg").attr("hidden", true); $("#bgMedBtn").removeAttr("hidden"); $("#bgMedUrlBtn").removeAttr("hidden"); } else { if ($(this).attr("data-src") == "clogo") { $("#currentcLogoImg").remove(); $("#logo").val(""); $("#clogoHolder").attr("hidden", true); $("#ClogoBtn").removeAttr("hidden"); $("#ClogoUrlBtn").removeAttr("hidden"); } else { if ($(this).attr("data-src") == "plogo") { $("#currentpLogoImg").remove(); $("#providerlogo").val(""); $("#plogoHolder").attr("hidden", true); $("#PlogoBtn").removeAttr("hidden"); $("#PlogoUrlBtn").removeAttr("hidden"); } else { if ($(this).attr("data-src") == "csweep") { $("#currentCsweepImg").remove(); $("#customSweepUrl").val(""); $("#customSweepUrl").attr("hidden", true); $("#CsweepBtn").removeAttr("hidden"); $("#CsweepUrlBtn").removeAttr("hidden"); } else { if ($(this).attr("data-src") == "tagvideo") { $("#currentTagVid").remove(); $("#vidLink").val(""); $("#vidLinkHolder").attr("hidden", true); $("#vrecord").removeAttr("hidden"); $("#linkVideo").removeAttr("hidden"); $("#linktoVideoUrl").removeAttr("hidden"); $("#noChangeVideo").removeAttr("hidden"); var evt = document.createEvent('CustomEvent'); evt.initCustomEvent('change', true, false); document.getElementById("vidLink").dispatchEvent(evt); } else { if ($(this).attr("data-src") == "tagimage") { $("#currentTagImg").remove(); $("#mmLink").val(""); $("#mediaLinkHolder").attr("hidden", true); $("#linkImage").removeAttr("hidden"); $("#linktoImageUrl").removeAttr("hidden"); $("#noChangeImage").removeAttr("hidden"); var evt = document.createEvent('CustomEvent'); evt.initCustomEvent('change', true, false); document.getElementById("mmLink").dispatchEvent(evt); } else { if ($(this).attr("data-src") == "nplogo") { $("#currentnpLogoImg").remove(); $("#nplogo").val(""); $("#nplogoHolder").attr("hidden", true); $("#nporholder").attr("hidden", true); $("#NplogoBtn").removeAttr("hidden"); $("#NplogoUrlBtn").removeAttr("hidden"); var evt = document.createEvent('CustomEvent'); evt.initCustomEvent('change', true, false); document.getElementById("nplogo").dispatchEvent(evt); } } } } } } } $(this).attr("hidden", true); }); var gsAddDiv = document.getElementById("gsDynDiv"); document.getElementById("add3JsGSButton").addEventListener("click", async function() { movingGs = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); gsAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; gsInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { gsAddDiv.style.left = `${coord.x - 5}px` gsAddDiv.style.top = `${coord.y - 5}px`; gsAddDiv.style.position = "absolute"; gsAddDiv.style.backgroundColor = "red"; gsAddDiv.style.borderRadius = "50%"; gsAddDiv.style.width = "10px"; gsAddDiv.style.height = "10px"; gsAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); gsAddDiv.addEventListener('click', async function() { newGreenscreen.payload.objects[0].position.x = intersectionCache.position.x; if (intersectionCache.position.y < 0.1) { intersectionCache.position.y = intersectionCache.position.y + 0.5; } newGreenscreen.payload.objects[0].position.y = intersectionCache.position.y; newGreenscreen.payload.objects[0].position.z = intersectionCache.position.z; newGreenscreen.payload.objects[0].rotation.y = poseCache.rotation.y; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newGreenscreen)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); } gsAddDiv.style.display = 'none'; movingGs = false; clearInterval(gsInterval); iframe.focus(); }); $(document).on('click', "#3JsGsSubmit", function() { var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var rotXinput = document.getElementById("RotXinput").value; if ((rotXinput >= 0 && rotXinput < 1.57) || (rotXinput <= -0.872 && rotXinput >= -3.142)) { var rotYinput = document.getElementById("RotYinput").value; } else { var rotYinput = document.getElementById("RotYinput").value * -1 } var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var alIinput = ""; var dlOpacityinput = ""; var EdlInput = ""; var dlIntensityInput = ""; var dlXinput = ""; var dlYinput = ""; var dlZinput = ""; var sl1Input = ""; var sl2Input = ""; var sl1ConeIinput = ""; var sl2ConeIinput = ""; var srcinput = document.getElementById("srcinput").value; var transcriptinput = document.getElementById("transcriptinput").value; var radiusinput = document.getElementById("radiusinput").value; var chromainput = document.getElementById("chromainput").value; var vidNameInput = document.getElementById("vidNameInput").value; var threeJsAddformData = new FormData(); threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "greenscreen"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', ""); threeJsAddformData.append('objroty', ""); threeJsAddformData.append('objrotz', ""); threeJsAddformData.append('rotx', rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', ""); threeJsAddformData.append('ali', ""); threeJsAddformData.append('dlo', ""); threeJsAddformData.append('dlti', ""); threeJsAddformData.append('dlts', ""); threeJsAddformData.append('dls', ""); threeJsAddformData.append('dli', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('sensor', ""); threeJsAddformData.append('dlt', ""); threeJsAddformData.append('dlb', ""); threeJsAddformData.append('dll', ""); threeJsAddformData.append('dlr', ""); threeJsAddformData.append('dln', ""); threeJsAddformData.append('dlf', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl1a', ""); threeJsAddformData.append('sl1r', ""); threeJsAddformData.append('sl1d', ""); threeJsAddformData.append('sl1h', ""); threeJsAddformData.append('sl2a', ""); threeJsAddformData.append('sl2r', ""); threeJsAddformData.append('sl2d', ""); threeJsAddformData.append('sl2h', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('imgx', ""); threeJsAddformData.append('imgy', ""); threeJsAddformData.append('src', srcinput); threeJsAddformData.append('transcript', transcriptinput); threeJsAddformData.append('dest', ""); threeJsAddformData.append('tagtitle', ""); threeJsAddformData.append('tagdesc', ""); threeJsAddformData.append('tagmedia', ""); threeJsAddformData.append('tagicon', ""); threeJsAddformData.append('tagfg', ""); threeJsAddformData.append('tagbg', ""); threeJsAddformData.append('taganim', ""); threeJsAddformData.append('radius', radiusinput); threeJsAddformData.append('chromakey', chromainput); threeJsAddformData.append('animation', ""); threeJsAddformData.append('videoMute', ""); threeJsAddformData.append('horiz', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); //planeRootNode[0].video.muted = true; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); var vidAddDiv = document.getElementById("vidDynDiv"); document.getElementById("add3JsVideoButton").addEventListener("click", async function() { movingVid = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); vidAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; vidInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { vidAddDiv.style.left = `${coord.x - 5}px` vidAddDiv.style.top = `${coord.y - 5}px`; vidAddDiv.style.position = "absolute"; vidAddDiv.style.backgroundColor = "red"; vidAddDiv.style.borderRadius = "50%"; vidAddDiv.style.width = "10px"; vidAddDiv.style.height = "10px"; vidAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); vidAddDiv.addEventListener('click', async function() { newVideo.payload.objects[0].position.x = intersectionCache.position.x; if (intersectionCache.position.y < 0.1) { intersectionCache.position.y = intersectionCache.position.y + 0.5; } newVideo.payload.objects[0].position.y = intersectionCache.position.y; newVideo.payload.objects[0].position.z = intersectionCache.position.z; console.log(poseCache.rotation.y); newVideo.payload.objects[0].rotation.y = poseCache.rotation.y; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newVideo)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); //node.components[1].inputs.localRotation.y = newVideo.payload.objects[0].rotation.y } vidAddDiv.style.display = 'none'; movingVid = false; clearInterval(vidInterval); iframe.focus(); }); $(document).on('click', "#3JsVidSubmit", function() { var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var rotXinput = document.getElementById("RotXinput").value; if ((rotXinput >= 0 && rotXinput < 1.57) || (rotXinput <= -0.872 && rotXinput >= -3.142)) { var rotYinput = document.getElementById("RotYinput").value; } else { var rotYinput = document.getElementById("RotYinput").value * -1 } var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var alIinput = ""; var dlOpacityinput = ""; var EdlInput = ""; var dlIntensityInput = ""; var dlXinput = ""; var dlYinput = ""; var dlZinput = ""; var sl1Input = ""; var sl2Input = ""; var sl1ConeIinput = ""; var sl2ConeIinput = ""; var srcinput = document.getElementById("srcinput").value; var transcriptinput = document.getElementById("transcriptinput").value; var vidNameInput = document.getElementById("vidNameInput").value; if (document.getElementById("muteinput").checked) { var isVidMuted = 1; } else { var isVidMuted = 0; } var threeJsAddformData = new FormData(); threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "video"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('videoMute', isVidMuted); threeJsAddformData.append('horiz', ""); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', ""); threeJsAddformData.append('objroty', ""); threeJsAddformData.append('objrotz', ""); threeJsAddformData.append('rotx', 0 - rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', ""); threeJsAddformData.append('ali', ""); threeJsAddformData.append('dlo', ""); threeJsAddformData.append('dlti', ""); threeJsAddformData.append('dlts', ""); threeJsAddformData.append('dls', ""); threeJsAddformData.append('dli', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('sensor', ""); threeJsAddformData.append('dlt', ""); threeJsAddformData.append('dlb', ""); threeJsAddformData.append('dll', ""); threeJsAddformData.append('dlr', ""); threeJsAddformData.append('dln', ""); threeJsAddformData.append('dlf', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl1a', ""); threeJsAddformData.append('sl1r', ""); threeJsAddformData.append('sl1d', ""); threeJsAddformData.append('sl1h', ""); threeJsAddformData.append('sl2a', ""); threeJsAddformData.append('sl2r', ""); threeJsAddformData.append('sl2d', ""); threeJsAddformData.append('sl2h', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('radius', ""); threeJsAddformData.append('imgx', ""); threeJsAddformData.append('imgy', ""); threeJsAddformData.append('src', srcinput); threeJsAddformData.append('transcript', transcriptinput); threeJsAddformData.append('dest', ""); threeJsAddformData.append('tagtitle', ""); threeJsAddformData.append('tagdesc', ""); threeJsAddformData.append('tagmedia', ""); threeJsAddformData.append('tagicon', ""); threeJsAddformData.append('tagfg', ""); threeJsAddformData.append('tagbg', ""); threeJsAddformData.append('taganim', ""); threeJsAddformData.append('chromakey', ""); threeJsAddformData.append('animation', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); //planeRootNode[0].video.muted = true; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); var aTagAddDiv = document.getElementById("aTagDynDiv"); document.getElementById("add_animtag").addEventListener("click", async function() { console.log("clicked") movingTag = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); aTagAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; tagInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { aTagAddDiv.style.left = `${coord.x - 5}px` aTagAddDiv.style.top = `${coord.y - 5}px`; aTagAddDiv.style.position = "absolute"; aTagAddDiv.style.backgroundColor = "red"; aTagAddDiv.style.borderRadius = "50%"; aTagAddDiv.style.width = "10px"; aTagAddDiv.style.height = "10px"; aTagAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); aTagAddDiv.addEventListener('click', async function() { console.log("aaa"); newSvg.payload.objects[0].position.x = intersectionCache.position.x; intersectionCache.position.y = intersectionCache.position.y + 0.5; newSvg.payload.objects[0].position.y = intersectionCache.position.y; newSvg.payload.objects[0].position.z = intersectionCache.position.z; newSvg.payload.objects[0].rotation.y = poseCache.rotation.y; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newSvg)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); } aTagAddDiv.style.display = 'none'; movingTag = false; clearInterval(tagInterval); iframe.focus(); }); $(document).on('click', "#3JsAtagSubmit", function() { var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var rotXinput = document.getElementById("RotXinput").value; if ((rotXinput >= 0 && rotXinput < 1.57) || (rotXinput <= -0.872 && rotXinput < -3.142)) { var rotYinput = document.getElementById("RotYinput").value; } else { var rotYinput = document.getElementById("RotYinput").value * -1 } var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var alIinput = ""; var dlOpacityinput = ""; var EdlInput = ""; var dlIntensityInput = ""; var dlXinput = ""; var dlYinput = ""; var dlZinput = ""; var sl1Input = ""; var sl2Input = ""; var sl1ConeIinput = ""; var sl2ConeIinput = ""; var srcinput = ""; if (document.getElementById("destInput").checked) { var destinput = 1; } else { var destinput = 0; } var tagtitleinput = document.getElementById("tagtitleinput").value; var tagdescinput = document.getElementById("tagdescinput").value; var tagmediainput = document.getElementById("tagmediainput").value; var vidNameInput = document.getElementById("vidNameInput").value; var tagIconInput = document.getElementById("tagType").value; var tagFgInput = document.getElementById("colorInput").value; if (tagFgInput.charAt(0) == "#") { var adaptedtagcolor = tagFgInput.substring(1, tagFgInput.length); } else { var adaptedtagcolor = tagFgInput; } var tagBgInput = document.getElementById("bgInput").value; if (tagBgInput.charAt(0) == "#") { var adaptedtagbg = tagBgInput.substring(1, tagBgInput.length); } else { var adaptedtagbg = tagBgInput; } var tagAnimInput = document.getElementById("animInput").value; var threeJsAddformData = new FormData(); threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "atag"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', ""); threeJsAddformData.append('objroty', ""); threeJsAddformData.append('objrotz', ""); threeJsAddformData.append('rotx', rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', ""); threeJsAddformData.append('ali', ""); threeJsAddformData.append('dlo', ""); threeJsAddformData.append('dlti', ""); threeJsAddformData.append('dlts', ""); threeJsAddformData.append('dls', ""); threeJsAddformData.append('dli', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('sensor', ""); threeJsAddformData.append('dlt', ""); threeJsAddformData.append('dlb', ""); threeJsAddformData.append('dll', ""); threeJsAddformData.append('dlr', ""); threeJsAddformData.append('dln', ""); threeJsAddformData.append('dlf', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl1a', ""); threeJsAddformData.append('sl1r', ""); threeJsAddformData.append('sl1d', ""); threeJsAddformData.append('sl1h', ""); threeJsAddformData.append('sl2a', ""); threeJsAddformData.append('sl2r', ""); threeJsAddformData.append('sl2d', ""); threeJsAddformData.append('sl2h', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('imgx', ""); threeJsAddformData.append('imgy', ""); threeJsAddformData.append('src', ""); threeJsAddformData.append('transcript', ""); threeJsAddformData.append('dest', destinput); threeJsAddformData.append('tagtitle', tagtitleinput); threeJsAddformData.append('tagdesc', tagdescinput); threeJsAddformData.append('tagmedia', tagmediainput); threeJsAddformData.append('tagicon', tagIconInput); threeJsAddformData.append('tagfg', adaptedtagcolor); threeJsAddformData.append('tagbg', adaptedtagbg); threeJsAddformData.append('taganim', tagAnimInput); threeJsAddformData.append('chromakey', ""); threeJsAddformData.append('animation', ""); threeJsAddformData.append('radius', ""); threeJsAddformData.append('videoMute', ""); threeJsAddformData.append('horiz', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); var imgAddDiv = document.getElementById("imgDynDiv"); document.getElementById("add3JsImageButton").addEventListener("click", async function() { movingImg = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); imgAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; imgInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { imgAddDiv.style.left = `${coord.x - 5}px` imgAddDiv.style.top = `${coord.y - 5}px`; imgAddDiv.style.position = "absolute"; imgAddDiv.style.backgroundColor = "red"; imgAddDiv.style.borderRadius = "50%"; imgAddDiv.style.width = "10px"; imgAddDiv.style.height = "10px"; imgAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); imgAddDiv.addEventListener('click', async function() { newImage.payload.objects[0].position.x = intersectionCache.position.x; if (intersectionCache.position.y < 0.1) { intersectionCache.position.y = intersectionCache.position.y + 0.5; } newImage.payload.objects[0].position.y = intersectionCache.position.y; newImage.payload.objects[0].position.z = intersectionCache.position.z; newImage.payload.objects[0].rotation.y = poseCache.rotation.y; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newImage)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { node.start(); //node.components[0].inputs.localRotation.y = newImage.payload.objects[0].rotation.y; } imgAddDiv.style.display = 'none'; movingImg = false; clearInterval(imgInterval); iframe.focus(); }); $(document).on('click', "#3JsImgSubmit", function() { var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var rotXinput = document.getElementById("RotXinput").value; if ((rotXinput >= 0 && rotXinput < 1.57) || (rotXinput < -0.872 && rotXinput >= -3.142)) { var rotYinput = document.getElementById("RotYinput").value; } else { var rotYinput = document.getElementById("RotYinput").value * -1 } var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var imgXinput = document.getElementById("imgXinput").value; var imgYinput = document.getElementById("imgYinput").value; var alIinput = ""; var dlOpacityinput = ""; var EdlInput = ""; var dlIntensityInput = ""; var dlXinput = ""; var dlYinput = ""; var dlZinput = ""; var sl1Input = ""; var sl2Input = ""; var sl1ConeIinput = ""; var sl2ConeIinput = ""; var srcinput = document.getElementById("srcinput").value; if (document.getElementById("destInput").checked) { var destinput = 1; } else { var destinput = 0; } var tagtitleinput = document.getElementById("tagtitleinput").value; var tagdescinput = document.getElementById("tagdescinput").value; var tagmediainput = document.getElementById("tagmediainput").value; var vidNameInput = document.getElementById("vidNameInput").value; var threeJsAddformData = new FormData(); threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "image"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', ""); threeJsAddformData.append('objroty', ""); threeJsAddformData.append('objrotz', ""); threeJsAddformData.append('rotx', rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', ""); threeJsAddformData.append('ali', ""); threeJsAddformData.append('dlo', ""); threeJsAddformData.append('dlti', ""); threeJsAddformData.append('dlts', ""); threeJsAddformData.append('dls', ""); threeJsAddformData.append('dli', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('sensor', ""); threeJsAddformData.append('dlt', ""); threeJsAddformData.append('dlb', ""); threeJsAddformData.append('dll', ""); threeJsAddformData.append('dlr', ""); threeJsAddformData.append('dln', ""); threeJsAddformData.append('dlf', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl1a', ""); threeJsAddformData.append('sl1r', ""); threeJsAddformData.append('sl1d', ""); threeJsAddformData.append('sl1h', ""); threeJsAddformData.append('sl2a', ""); threeJsAddformData.append('sl2r', ""); threeJsAddformData.append('sl2d', ""); threeJsAddformData.append('sl2h', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('imgx', imgXinput); threeJsAddformData.append('imgy', imgYinput); threeJsAddformData.append('src', srcinput); threeJsAddformData.append('transcript', ""); threeJsAddformData.append('dest', destinput); threeJsAddformData.append('tagtitle', tagtitleinput); threeJsAddformData.append('tagdesc', tagdescinput); threeJsAddformData.append('tagmedia', tagmediainput); threeJsAddformData.append('tagicon', ""); threeJsAddformData.append('tagfg', ""); threeJsAddformData.append('tagbg', ""); threeJsAddformData.append('taganim', ""); threeJsAddformData.append('chromakey', ""); threeJsAddformData.append('animation', ""); threeJsAddformData.append('radius', ""); threeJsAddformData.append('videoMute', ""); threeJsAddformData.append('horiz', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); if (document.getElementById("add3JsCurvedVideoButton")) { var curvedvidAddDiv = document.getElementById("curvedVidDynDiv"); document.getElementById("add3JsCurvedVideoButton").addEventListener("click", async function() { movingCurvedVid = true; try { mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(function(intersection) { intersectionCache = intersection; intersectionCache.time = new Date().getTime(); curvedvidAddDiv.style.display = 'none'; buttonDisplayed = false; }); var delayBeforeShow = 1000; var buttonDisplayed = false; vidInterval = setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { curvedvidAddDiv.style.left = `${coord.x - 5}px` curvedvidAddDiv.style.top = `${coord.y - 5}px`; curvedvidAddDiv.style.position = "absolute"; curvedvidAddDiv.style.backgroundColor = "red"; curvedvidAddDiv.style.borderRadius = "50%"; curvedvidAddDiv.style.width = "10px"; curvedvidAddDiv.style.height = "10px"; curvedvidAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 100); } catch (e) { console.error(e); } }); curvedvidAddDiv.addEventListener('click', async function() { newcurvedVideo.payload.objects[0].position.x = intersectionCache.position.x - 1.01; if (intersectionCache.position.y < 0.1) { intersectionCache.position.y = intersectionCache.position.y + 0.5; } newcurvedVideo.payload.objects[0].position.y = intersectionCache.position.y; newcurvedVideo.payload.objects[0].position.z = intersectionCache.position.z - 1.01; newcurvedVideo.payload.objects[0].rotation.y = poseCache.rotation.y; nodesToStartInit = await mpSdk.Scene.deserialize(JSON.stringify(newcurvedVideo)); newSer = await mpSdk.Scene.serialize(nodesToStartInit); nodesToStartDeser = await mpSdk.Scene.deserialize(newSer); nodesToStart = [...nodesToStartDeser.nodeIterator()]; for (const node of nodesToStart) { console.log(node); node.start(); } curvedvidAddDiv.style.display = 'none'; movingVid = false; clearInterval(vidInterval); iframe.focus(); }); $(document).on('click', "#3JsCurvedVidSubmit", function() { var horiz = document.getElementById("horizinput").checked; var posXinput = document.getElementById("PosXinput").value; var posYinput = document.getElementById("PosYinput").value; var posZinput = document.getElementById("PosZinput").value; var rotXinput = document.getElementById("RotXinput").value; console.log(rotXinput); if (((rotXinput >= 0 && rotXinput < 1.57)||horiz) || ((rotXinput < -0.872 && rotXinput >= -3.142)||horiz)) { var rotYinput = document.getElementById("RotYinput").value; console.log("not changed") } else { var rotYinput = document.getElementById("RotYinput").value * -1 console.log("changed") } var rotZinput = document.getElementById("RotZinput").value; var scaXinput = document.getElementById("ScaXinput").value; var scaYinput = document.getElementById("ScaYinput").value; var scaZinput = document.getElementById("ScaZinput").value; var alIinput = ""; var dlOpacityinput = ""; var EdlInput = ""; var dlIntensityInput = ""; var dlXinput = ""; var dlYinput = ""; var dlZinput = ""; var sl1Input = ""; var sl2Input = ""; var sl1ConeIinput = ""; var sl2ConeIinput = ""; var curveinput = document.getElementById("curveinput").value; var srcinput = document.getElementById("srcinput").value; var transcriptinput = document.getElementById("transcriptinput").value; var vidNameInput = document.getElementById("vidNameInput").value; var threeJsAddformData = new FormData(); if (document.getElementById("horizinput").checked) { var isHoriz = 1; } else { var isHoriz = 0; } if (document.getElementById("muteinput").checked) { var isVidMuted = 1; } else { var isVidMuted = 0; } threeJsAddformData.append('editmodel', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('type', "curvedvideo"); threeJsAddformData.append('name', vidNameInput); threeJsAddformData.append('videoMute', isVidMuted); threeJsAddformData.append('horiz', isHoriz); threeJsAddformData.append('posx', posXinput); threeJsAddformData.append('posy', posYinput); threeJsAddformData.append('posz', posZinput); threeJsAddformData.append('objrotx', ""); threeJsAddformData.append('objroty', ""); threeJsAddformData.append('objrotz', ""); threeJsAddformData.append('rotx', rotXinput); threeJsAddformData.append('roty', rotYinput); threeJsAddformData.append('rotz', rotZinput); threeJsAddformData.append('scax', scaXinput); threeJsAddformData.append('scay', scaYinput); threeJsAddformData.append('scaz', scaZinput); threeJsAddformData.append('curve', curveinput); threeJsAddformData.append('ali', ""); threeJsAddformData.append('dlo', ""); threeJsAddformData.append('dlti', ""); threeJsAddformData.append('dlts', ""); threeJsAddformData.append('dls', ""); threeJsAddformData.append('dli', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('sensor', ""); threeJsAddformData.append('dlt', ""); threeJsAddformData.append('dlb', ""); threeJsAddformData.append('dll', ""); threeJsAddformData.append('dlr', ""); threeJsAddformData.append('dln', ""); threeJsAddformData.append('dlf', ""); threeJsAddformData.append('dlx', ""); threeJsAddformData.append('dly', ""); threeJsAddformData.append('dlz', ""); threeJsAddformData.append('sl1i', ""); threeJsAddformData.append('sl1c', ""); threeJsAddformData.append('sl1a', ""); threeJsAddformData.append('sl1r', ""); threeJsAddformData.append('sl1d', ""); threeJsAddformData.append('sl1h', ""); threeJsAddformData.append('sl2a', ""); threeJsAddformData.append('sl2r', ""); threeJsAddformData.append('sl2d', ""); threeJsAddformData.append('sl2h', ""); threeJsAddformData.append('sl2i', ""); threeJsAddformData.append('sl2c', ""); threeJsAddformData.append('radius', ""); threeJsAddformData.append('imgx', ""); threeJsAddformData.append('imgy', ""); threeJsAddformData.append('src', srcinput); threeJsAddformData.append('transcript', transcriptinput); threeJsAddformData.append('dest', ""); threeJsAddformData.append('chromakey', ""); threeJsAddformData.append('animation', ""); threeJsAddformData.append('tagtitle', ""); threeJsAddformData.append('tagdesc', ""); threeJsAddformData.append('tagmedia', ""); threeJsAddformData.append('tagicon', ""); threeJsAddformData.append('tagfg', ""); threeJsAddformData.append('tagbg', ""); threeJsAddformData.append('taganim', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideoadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); var maincontrols = document.getElementById("3JsControls"); remove3JsInputs(); iframe.style.width = "100%"; maincontrols.style.display = "none"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); clickedObjParent[0].video.muted = true; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); } $(document).on("click", "#3JsDelete", function() { var vidNameInput = document.getElementById("vidNameInput").value; if (vidNameInput.substring(0, 3) != "new") { var threeJsAddformData = new FormData(); threeJsAddformData.append('model', document.getElementById('editmodel').value); threeJsAddformData.append('version', document.getElementById('version').value); threeJsAddformData.append('name', vidNameInput); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tjsvideodelete.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(threeJsAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); remove3JsInputs(); } } } } document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); }); } window.navShowing = 1; $(document).on('click', ".movetoSweep, .movetoMediaSweep, .movetoVideoSweep, .movetoCodeSweep", function() { var sweep = ($(this).attr('data-val')); var sweepId = sweepLookupArray[sweepLookupArray.indexOf(sweep) + 1]; try { var rotationId = JSON.parse(($(this).attr('data-rot'))); } catch (error) { console.error(error); }; if (typeof rotationId != "undefined") { var isListened = listened.includes(sweepId); if (!isListened) { var sweepPos = listened.indexOf(sweepId); listened.splice(sweepPos, 1); } mpSdk.Sweep.moveTo(sweepId, { rotation: rotationId, transition: transition }).then(function() { iframe.focus(); }); } }); $(document).on('click', ".movetoNavSweep", function() { var sweepId = ($(this).attr('data-val')); var sweepSid = sweepLookupArray[sweepLookupArray.indexOf(sweepId) + 1]; var tagPos = navArray.indexOf(sweepId); var whereTo = navArray[tagPos + 3]; try { var rotationId = JSON.parse(($(this).attr('data-rot'))); } catch (error) { console.error(error); }; if (typeof rotationId != "undefined") { var isListened = listened.includes(sweepId); if (!isListened) { var sweepPos = listened.indexOf(sweepId); listened.splice(sweepPos, 1); } mpSdk.Sweep.moveTo(sweepSid, { rotation: rotationId, transition: transition }).then(function() { if (whereTo != "") { setTimeout(function() { //executeNav(null, sweepId); }, 500); } else { iframe.focus(); } }); } }); $(document).on('click', ".movetoTag, .movetoMediaTag, .movetoVideoTag, .movetoNavTag, movetoCodeTag", function() { var sweepId = ($(this).attr('data-val')); if (typeof tArray != "undefined" && tArray != null) { var referenceTag = lookup.indexOf(sweepId); var referenceValue = lookup[referenceTag - 1]; mytag = referenceValue; if (referenceTag == -1) { mytag = sweepId; } try { mpSdk.Mattertag.navigateToTag(mytag, mpSdk.Mattertag.Transition.INSTANT);; } catch (error) { console.error(error) } } }); mpSdk.on(mpSdk.Camera.Event.MOVE, function() { try { if (document.getElementById("tDiv")) { document.getElementById("tDiv").parentNode.removeChild(document.getElementById("tDiv")); } } catch (error) { console.error(error); } }); mpSdk.on(mpSdk.Sweep.Event.EXIT, function(from, to) { submitAnalyticData(from, "sweeptime", window.sweepseconds); clearInterval(window.sweepcounter); window.sweepcounter = null; }); mpSdk.on(mpSdk.Sweep.Event.ENTER, function(from, to) { window.sweepseconds = 0; function incrementSeconds() { window.sweepseconds += 0.5; } window.sweepcounter = setInterval(incrementSeconds, 500); if (from != to) { var thisUUID = sweepLookupArray[sweepLookupArray.indexOf(to) - 1]; submitAnalyticData(thisUUID, "sweepenter", 1); if (initialVar != 0) { if (typeof tArray != "undefined" && tArray != null) { console.log(thisUUID); var thistagPos = tArray.indexOf(thisUUID); console.log(thistagPos) thistag = tArray[thistagPos]; if (thistagPos != -1) { var thisaction = tArray[thistagPos + 4]; var thistype = tArray[thistagPos + 1]; var hasAudio = tArray[thistagPos + 6]; if (thisaction == "b3daudio" || hasAudio == "YES") { console.log("AUDIO SWEEP"); audioplay(thistype, thistag); } if (thisaction == "b3dvideo") { videoplay(thistype, thistag); } if (thisaction == "b3dnav") { executeNav(thistype, thistag); } if (thisaction == "b3dext") { mediaplay(thistype, thistag); } if (thisaction == "b3dcode") { executeCode(thistag); } if (thisaction == "b3dimage") { mediaplay(thistype, thistag); } if (thisaction == "b3dgallery") { galleryplay(thistype, thistag); } } } } } }); mpSdk.Mattertag.data.subscribe({ onAdded: function(index, item, collection) { var referenceTag = lookup.indexOf(index); var referenceValue = lookup[referenceTag + 1]; if (navArray.indexOf(referenceValue) != -1) { mpSdk.Mattertag.preventAction(index), { navigating: true, opening: true }; } } }); mpSdk.on(mpSdk.Mattertag.Event.CLICK, function(tag) { if (typeof tArray != "undefined" && tArray != null) { var referenceTag = lookup.indexOf(tag); var referenceValue = lookup[referenceTag + 1]; var thistagPos = tArray.indexOf(referenceValue); console.log(referenceValue); thistag = tArray[thistagPos]; console.log(thistag) if (thistagPos != -1) { var thisaction = tArray[thistagPos + 4]; var hasAudio = tArray[thistagPos + 6]; if (thisaction == "b3daudio" || hasAudio == "YES") { audioplay(null, thistag); } if (thisaction == "b3dvideo") { videoplay(null, thistag); } if (thisaction == "b3dnav") { if (startButton) { setTimeout(function() { executeNav(null, thistag); }, 1000); } } if (thisaction == "b3dext") { mediaplay(null, thistag); } if (thisaction == "b3dcode") { executeCode(thistag); } if (thisaction == "b3dimage") { mediaplay(null, thistag); } if (thisaction == "b3dgallery") { galleryplay(null, thistag); } if (thisaction == "default") {} } } }); mpSdk.Settings.get("highlight_reel").then(function(data) { hrExists = data; }).catch(function(error) { // Setting retrieval error. }); function tagAcceptReject() { //setTimeout(function() { activeControl = $("#tagAddControls"); controlsOpen(activeControl); try { $("#myXstemRange").val(window.xstemInitial.toFixed(3)); $("#myYstemRange").val(window.ystemInitial.toFixed(3)); $("#myZstemRange").val(window.zstemInitial.toFixed(3)); } catch (error) { console.error(error); } //}, 1000); var tagAddReject = document.getElementById("tagAddReject"); var tagAddAccept = document.getElementById("tagAddAccept"); tagAddReject.addEventListener('click', tagReject); tagAddAccept.addEventListener('click', tagAccept); } $(document).on('click', "#editPosition", function() { //setTimeout(function() { var tag = $("#editPosition").attr("data-tag"); var referencePosition = lookup.indexOf(tag); var realcheckTag = lookup[referencePosition + 1]; if (realcheckTag == tag) { var referenceTag = tag; } else { var referenceTag = lookup[referencePosition - 1]; } window.ExistingTag = referenceTag; window.formTag = tag; var tagArray = Object.values(tagcollection); var x = tagArray.length; for (i = 0; i < x; i++) { if (tagArray[i].sid == referenceTag) { window.newTagx = tagArray[i].anchorPosition.x; window.newTagy = tagArray[i].anchorPosition.y; window.newTagz = tagArray[i].anchorPosition.z; window.existingSVx = tagArray[i].stemVector.x; window.existingSVy = tagArray[i].stemVector.y; window.existingSVz = tagArray[i].stemVector.z } } activeControl = $("#existingtagEditControls"); controlsOpen(activeControl); try { $("#myeXstemRange").val(existingSVx.toFixed(3)); $("#myeYstemRange").val(existingSVy.toFixed(3)); $("#myeZstemRange").val(existingSVz.toFixed(3)); } catch (error) { console.error(error); } //}, 1000); var etagAddReject = document.getElementById("etagAddReject"); var etagAddAccept = document.getElementById("etagAddAccept"); etagAddReject.addEventListener('click', etagReject); etagAddAccept.addEventListener('click', etagAccept); }) function tagReject() { tag = window.newTag; mpSdk.Mattertag.remove(tag); document.getElementById("myXstemRange").value = 0; document.getElementById("myZstemRange").value = 0; document.getElementById("myYstemRange").value = 0.3; $("#controlWrapper").attr("hidden", true); $("#tagAddControls").attr("hidden", true); iframe.style.width = "100%"; tagAddReject.removeEventListener('click', tagReject); window.newTag = null; } function etagReject() { tag = window.ExistingTag; document.getElementById("myXstemRange").value = 0; document.getElementById("myZstemRange").value = 0; document.getElementById("myYstemRange").value = 0.3; $("#controlWrapper").attr("hidden", true); $("#tagAddControls").attr("hidden", true); iframe.style.width = "100%"; tagAddReject.removeEventListener('click', tagReject); window.ExistingTag = null; } function sweepAccept() { var tagAddformData = new FormData(); tagAddformData.append('master_type', window.type); tagAddformData.append('tagid', window.tag); tagAddformData.append('tagx', "unused_sweep"); tagAddformData.append('tagy', "unused_sweep"); tagAddformData.append('tagz', "unused_sweep"); tagAddformData.append('stem', "unused_sweep"); tagAddformData.append('editmodel', document.getElementById('editmodel').value); tagAddformData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/sweepadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(tagAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $("#tagControls").load(baseLoc + "/tagcontrols.php?model=" + editmodel + "&version=" + version + "&tag=" + window.tag + "&master_type=sweep"); $("#controlWrapper").removeAttr("hidden"); remove3JsInputs(); activeControl = $("#tagControls"); controlsOpen(activeControl); } } } } function tagAccept() { var tagAddformData = new FormData(); tagAddformData.append('tagid', window.newTag); tagAddformData.append('tagx', window.newTagx); tagAddformData.append('tagy', window.newTagy); tagAddformData.append('tagz', window.newTagz); if (typeof window.xstemValue != "undefined") { tagAddformData.append('stemx', window.xstemValue); } else { tagAddformData.append('stemx', window.xstemInitial); } if (typeof window.ystemValue != "undefined") { tagAddformData.append('stemy', window.ystemValue); } else { tagAddformData.append('stemy', window.ystemInitial); } if (typeof window.zstemValue != "undefined") { tagAddformData.append('stemz', window.zstemValue); } else { tagAddformData.append('stemz', window.zstemInitial); } tagAddformData.append('editmodel', document.getElementById('editmodel').value); tagAddformData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(tagAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; var thistag = window.newTag window.tag = thistag console.log("TAG ADDED"); $("#tagControls").load(baseLoc + "/tagcontrols.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=tag&newtag=newtag"); activeControl = $("#tagControls"); controlsOpen(activeControl); window.newTag = null; }, 2000); } } } document.getElementById("myXstemRange").value = 0; document.getElementById("myZstemRange").value = 0; document.getElementById("myYstemRange").value = 0.3; window.xstemValue = void 0; window.ystemValue = void 0; window.zstemValue = void 0; iframe.style.width = "100%"; remove3JsInputs(); $("#tagAddControls").attr("hidden", true); //$("#controlWrapper").attr("hidden", true); tagAddAccept.removeEventListener('click', tagAccept); } function etagAccept() { var etagAddformData = new FormData(); etagAddformData.append('tagid', window.formTag); etagAddformData.append('tagx', window.newTagx); etagAddformData.append('tagy', window.newTagy); etagAddformData.append('tagz', window.newTagz); etagAddformData.append('stemx', window.xstemValue); etagAddformData.append('stemy', window.ystemValue); etagAddformData.append('stemz', window.zstemValue); etagAddformData.append('editmodel', document.getElementById('editmodel').value); etagAddformData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(etagAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } document.getElementById("myXstemRange").value = 0; document.getElementById("myZstemRange").value = 0; document.getElementById("myYstemRange").value = 0.3; window.xstemValue = void 0; window.ystemValue = void 0; window.zstemValue = void 0; remove3JsInputs(); iframe.style.width = "100%"; $("#existingtagEditControls").attr("hidden", true); $("#controlWrapper").attr("hidden", true); tagAddAccept.removeEventListener('click', tagAccept); window.newTag = null; } function checkPlacement() { if (document.activeElement === iframe) { placeTag(); //function you want to call on click setTimeout(function() { window.focus(); }, 0); } window.removeEventListener('blur', checkPlacement); } function placeTag() { console.log(tag) try{ mpSdk.Mattertag.navigateToTag(tag, mpSdk.Mattertag.Transition.FLY); } catch (error) { console.error(error); } window.newTag = tag; tag = null; movingTag = false; tagAcceptReject(); } if (sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { mpSdk.Camera.pose.subscribe(function(pose) { window.pose = pose; }) /* sweepConfigBtn = document.getElementById('configure_sweeps'); sweepConfigBtn.addEventListener('click', () => { var sweepConfigDiv =$('
', { id: 'sweepConfigDiv', class: 'windowmodal', }).appendTo('#iframecontainer'); sweepConfigDiv.css("width","60%"); sweepConfigDiv.css("height","60%"); sweepConfigDiv.css("position","absolute"); sweepConfigDiv.css("top","20%"); sweepConfigDiv.css("left","20%"); sweepConfigDiv.css("background-color","hsl(0,0%,28%)"); sweepConfigDiv.css("border","5px solid black"); sweepConfigDiv.css("z-index","20"); sweepConfigDiv.css("overflow","auto"); console.log(sweepCollection); var shtml = ['
']; for (var i = 0; i < sweepCollection.length; i++) { shtml.push(''); } shtml.push('
NO.IDHIDE TAG
' + (i+1) + '.' + sweepCollection[i].sid + '
'); $('#myTable').append(shtml.join('')); sweepConfigDiv.append(shtml); }); */ addSweepBtn = document.getElementById('add_sweep'); addSweepBtn.addEventListener('click', () => { window.type = "sweep"; var sweepId = window.pose.sweep; window.tag = sweepLookupArray[sweepLookupArray.indexOf(sweepId) - 1]; console.log(window.tag); //window.tag = window.pose.sweep; window.rotation = JSON.stringify(window.pose.rotation); sweepAccept(); }); addTagBtn = document.getElementById('add_tag'); var tagAddDiv = document.getElementById("tagDynDiv"); addTagBtn.addEventListener('click', () => { window.tag = null; window.type = "tag"; movingTag = true; if (!addingTag && !tag) { addingTag = true; mpSdk.Mattertag.add([{ label: "Tag added by C3D", description: "Click to edit", anchorPosition: { x: 0, y: 0, z: 0 }, stemVector: { x: 0, y: 0.3, z: 0 }, color: { r: 1, g: 0, b: 0 }, }]).then((sid) => { tag = sid[0]; lookup.push(tag); lookup.push(tag); }).then((tag) => { if (addingTag == true) { window.addEventListener('blur', checkPlacement); } addingTag = false; }).catch((e) => { console.error(e); addingTag = false; }) } }); mpSdk.Camera.pose.subscribe(function(pose) { poseCache = pose; }); mpSdk.Pointer.intersection.subscribe(intersectionData => { intersectionCache = intersectionData; intersectionCache.time = new Date().getTime(); tagAddDiv.style.display = 'none'; buttonDisplayed = false; if (tag && movingTag) { let scale = 1; window.newTagx = intersectionData.position.x; window.newTagy = intersectionData.position.y; window.newTagz = intersectionData.position.z; window.xstemInitial = scale * intersectionData.normal.x; window.ystemInitial = scale * intersectionData.normal.y; window.zstemInitial = scale * intersectionData.normal.z; mpSdk.Mattertag.editPosition(tag, { anchorPosition: intersectionData.position, stemVector: { x: scale * intersectionData.normal.x, y: scale * intersectionData.normal.y, z: scale * intersectionData.normal.z, } }).catch(e => { console.error(e); tag = null; movingTag = false; }); } }); $(document).on("change", "#myYstemRange, #myXstemRange, #myZstemRange", function() { var xstemValue = document.getElementById("myXstemRange").value; window.xstemValue = xstemValue; var ystemValue = document.getElementById("myYstemRange").value; var scale = ystemValue; window.ystemValue = ystemValue; var zstemValue = document.getElementById("myZstemRange").value; window.zstemValue = zstemValue; vhtag = window.newTag; mpSdk.Mattertag.editPosition(vhtag, { anchorPosition: { x: (+window.newTagx), y: (+window.newTagy), z: (+window.newTagz), }, stemVector: { x: Number(window.xstemValue), y: Number(window.ystemValue), z: Number(window.zstemValue), } }).catch(e => { console.error(e); }); }) $(document).on("change", "#myeYstemRange, #myeXstemRange, #myeZstemRange", function() { var xstemValue = document.getElementById("myeXstemRange").value; window.xstemValue = xstemValue; var ystemValue = document.getElementById("myeYstemRange").value; var scale = ystemValue; window.ystemValue = ystemValue; var zstemValue = document.getElementById("myeZstemRange").value; window.zstemValue = zstemValue; vhtag = window.ExistingTag; mpSdk.Mattertag.editPosition(vhtag, { anchorPosition: { x: (+window.newTagx), y: (+window.newTagy), z: (+window.newTagz), }, stemVector: { x: Number(xstemValue), y: Number(ystemValue), z: Number(zstemValue), } }).catch(e => { console.error(e); }); }) function pointToString(point) { var x = point.x.toFixed(3); var y = point.y.toFixed(3); var z = point.z.toFixed(3); return `{ x: ${x}, y: ${y}, z: ${z} }`; } try { mpSdk.on(mpSdk.Mattertag.Event.CLICK, function(tag) { window.type = "tag"; remove3JsInputs(); var realtagPos = lookup.indexOf(tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } $("#tagControls").load(baseLoc + "/tagcontrols.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=tag"); activeControl = $("#tagControls"); controlsOpen(activeControl); window.tag = tag; }); if (hasTouch && !hasMouse) { document.getElementById('add_tag').style.display = "none"; var tagAddDiv = document.getElementById("tagDynDiv"); var delayBeforeShow = 1000; var buttonDisplayed = false; try { setInterval(() => { if (!intersectionCache || !poseCache) { return; } const nextShow = intersectionCache.time + delayBeforeShow; if (new Date().getTime() > nextShow) { if (buttonDisplayed) { return; } var size = { w: iframe.clientWidth, h: iframe.clientHeight, }; var coord = mpSdk.Conversion.worldToScreen(intersectionCache.position, poseCache, size); if (coord.x < 0) { coord.x = coord.x + (coord.x * -2); } if (coord.y < 0) { coord.y = coord.y + (coord.y * -2); } if (intersectionCache.object != "intersectedobject.tag") { tagAddDiv.style.left = `${coord.x - 25}px` tagAddDiv.style.top = `${coord.y - 25}px`; tagAddDiv.style.position = "absolute"; tagAddDiv.style.backgroundColor = "red"; tagAddDiv.style.borderRadius = "50%"; tagAddDiv.style.width = "50px"; tagAddDiv.style.height = "50px"; document.getElementById("iframecontainer").appendChild(tagAddDiv); tagAddDiv.style.display = 'block'; buttonDisplayed = true; } } }, 2000); } catch (error) { console.error(error); } tagAddDiv.addEventListener('click', function() { movingTag = true; if (!addingTag && !tag) { addingTag = true; mpSdk.Mattertag.add([{ label: "Tag added by C3D", description: "Click to edit", anchorPosition: { x: intersectionCache.position.x, y: intersectionCache.position.y, z: intersectionCache.position.z }, stemVector: { x: 0, y: 0.1, z: 0 }, color: { r: 1, g: 0, b: 0 }, }]).then((sid) => { tag = sid[0]; }).then((tag) => { if (addingTag == true) { var aTag = document.createElement("BUTTON"); aTag.setAttribute("id", "myPlaceTag"); aTag.style.backgroundColor = "red"; aTag.style.width = "100px"; aTag.style.position = "absolute"; aTag.style.bottom = "10px" aTag.style.left = "calc(100vw/2 - 50px"; aTag.style.zIndex = "10"; aTag.innerHTML = "PLACE TAG"; document.getElementById("iframecontainer").appendChild(aTag); document.getElementById("myPlaceTag").addEventListener('click', function() { window.addEventListener('blur', checkPlacement); iframe.focus(); document.getElementById("myPlaceTag").parentNode.removeChild(document.getElementById("myPlaceTag")); }); } addingTag = false; }).catch((e) => { console.error(e); addingTag = false; }) } tagAddDiv.style.display = 'none'; }); } $(document).on('click', "#tagCancel", function() { $("#tagControls").attr("hidden", true); $("#controlWrapper").attr("hidden", true); iframe.style.width = "100%"; closeFrame(); }) $(document).on('click', "#tagDelete", function() { var formData = new FormData(); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('tagid', lookup[realtagPos + 1]); } else { formData.append('tagid', window.tag); } var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagdelete.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); mpSdk.Mattertag.remove(window.tag) $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); $("#tagControls").attr("hidden", true); $("#controlWrapper").attr("hidden", true); iframe.style.width = "100%"; } } } }); $(document).on('click', ".iconSelect", function() { try { icon = $(this).attr("data-type"); $("#tagType").val(icon).trigger('change'); //$("#tagType").trigger("change"); $("#iconPage").css("display", "none"); console.log("iconchanged") } catch (error) { console.error(error); } }); $(document).on('click', "#chooseIcon", function() { $("#iconPage").css("display", "block"); content = baseLoc + "/assets/icons/chooseicon.php" $("#iconPage").load(content); }); $(document).on('click', "#tagSubmit", function() { var tagAction = document.getElementById("tagAction"); if (tagAction.value == "none") { alert("You must select a Tag Action"); return false; } var formData = new FormData(); if (window.type == "tag") { var defact = document.getElementById('defact').checked; if (document.getElementById('tagAction').value != "default") { /* mpSdk.Mattertag.preventAction(window.newTag, { opening: true, navigating: true }); */ } formData.append('master_type', window.type); var tagtype = document.getElementById('tagType').value; formData.append('tagimage', document.getElementById('tagType').value); var tagcolor = document.getElementById("tagColor").value; if (tagcolor.charAt(0) == "#") { var adaptedtagcolor = tagcolor.substring(1, tagcolor.length); } else { var adaptedtagcolor = tagcolor; } formData.append('tagcolor', adaptedtagcolor); var tagbg = document.getElementById("tagBackground").value; if (tagbg.charAt(0) == "#") { var adaptedtagbg = tagbg.substring(1, tagbg.length); } else { var adaptedtagbg = tagbg; } formData.append('tagbackground', adaptedtagbg); formData.append('tagaction', document.getElementById('tagAction').value); var checkAct = document.getElementById("defact").checked; console.log(checkAct); if (checkAct == true) { var showTitle = 1; console.log(checkAct); formData.append('defact', "c"); } else { console.log("FALSE"); var showTitle = 0; formData.append('defact', "default"); } var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var tagid = lookup[realtagPos + 1]; } else { var tagid = window.tag; } formData.append('tagid', tagid); } else { var defact = false; formData.append('master_type', window.type); formData.append('tagimage', ""); formData.append('tagcolor', ""); formData.append('tagbackground', ""); formData.append('tagaction', document.getElementById('tagAction').value); formData.append('tagid', window.tag); } formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); if (window.type == "tag") { if (document.getElementById('tagAction').value != "default") { /* mpSdk.Mattertag.preventAction(tagid, { opening: true, navigating: true }); */ } mpSdk.Mattertag.registerIcon(tagtype, baseLoc + '/assets/icons/autogenerate.php?icon=' + tagtype + '&fill=' + adaptedtagcolor + '&background=' + adaptedtagbg); mpSdk.Mattertag.editIcon(window.tag, tagtype); } $("#tagControls").attr("hidden", true); } } } var tagAction = document.getElementById('tagAction').value; if (tagAction == "b3daudio") { $("#noChangeAudio").removeAttr('hidden'); $("#linkAudio").removeAttr('hidden'); $(".hPara").removeAttr('hidden'); remove3JsInputs(); activeControl = $("#audiocontrols"); controlsOpen(activeControl); console.log("OPENED"); var realtagPos = lookup.indexOf(window.tag); console.log(lookup.indexOf(window.tag)) if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagaudio.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#audiocontrols").load(content); /* $.ajaxSetup({ cache: false }); $.get(content, function(data) { if (data != "") { var array = JSON.parse(data); console.log("GOT IT" + array) $("#buttonValue").val(array.buttonval); $("#title").val(array.title); $("#autranscription").val(array.transcription); if (array.buttonval != "") { $("#tagDescription").removeAttr("hidden"); $("#tagTitle").removeAttr("hidden"); $("#addToNav").attr("checked", true); } } else { $("#buttonValue").val(""); $("#title").val(""); $("#autranscription").val(""); } });*/ } if (tagAction == "b3dext") { remove3JsInputs(); activeControl = $("#mmControls"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagmm.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#mmControls").load(content); } if (tagAction == "b3dvideo") { remove3JsInputs(); activeControl = $("#videocontrols"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagvideo.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&showtitle=" + showTitle + "&master_type=" + window.type + "&defact=" + defact; $("#videocontrols").load(content); } if (tagAction == "b3dimage") { remove3JsInputs(); activeControl = $("#photoControls"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagimage.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#photoControls").load(content); } if (tagAction == "b3dnav") { remove3JsInputs(); activeControl = $("#navcontrols"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagnav.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#navcontrols").load(content); console.log("DONE"); } if (tagAction == "default") { if ((defact && window.type == "tag") || window.type == "sweep") { remove3JsInputs(); activeControl = $("#defaultcontrols"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagdefault.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#defaultcontrols").load(content); } else { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; window.tag = null; } } if (tagAction == "b3dcode") { remove3JsInputs(); $("#htmlcontrols").removeAttr("hidden"); activeControl = $("#htmlcontrols"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/tagscript.php?model=" + editmodel + "&version=" + version + "&tag=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#htmlcontrols").load(content); } if (tagAction == "b3dsweeptag") { remove3JsInputs(); $("#htmlcontrols").removeAttr("hidden"); activeControl = $("#htmlcontrols"); controlsOpen(activeControl); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { var thistag = lookup[realtagPos + 1]; } else { var thistag = window.tag; } var content = baseLoc + "/customsweep.php?model=" + editmodel + "&version=" + version + "&sweep=" + thistag + "&master_type=" + window.type + "&defact=" + defact; $("#htmlcontrols").load(content); } }) } catch (error) { console.error(error); } } $(document).on('click', "#htmlsubmit", function() { var formData = new FormData(); formData.append('tagcode', document.getElementById('scriptinput').value); formData.append('taghtml', document.getElementById('htmlinput').value); formData.append('title', document.getElementById('codeButton').value); formData.append('navtext', document.getElementById('codeTitle').value); formData.append('css', document.getElementById('scriptCss').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('tagid', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { formData.append('tagid', window.tag); var translatetag = window.tag; } formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagscriptupload.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { fetch(baseLoc + '/translatedelete.php?model=' + document.getElementById('editmodel').value + '&version=' + document.getElementById('version').value + '&tagid=' + translatetag) console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); $("#htmlcontrols").attr("hidden", true); $("#controlWrapper").attr("hidden", true); iframe.style.width = "100%"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); var refreshpoints = baseLoc + "/currentcodepoints.php?model=" + editmodel + "&version=" + version; //setTimeout(function() { $("#existingCodeRow").load(refreshpoints); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; //}, 2000); } var exformData = new FormData(); exformData.append('editmodel', document.getElementById('editmodel').value); exformData.append('version', document.getElementById('version').value); exformData.append('type', "code"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { exformData.append('sweep', lookup[realtagPos + 1]); } else { exformData.append('sweep', window.tag); } var exrequest = new XMLHttpRequest(); exrequest.open('POST', baseLoc + '/deleteexistingonchange.php'); exrequest.setRequestHeader("Cache-Control", "no-cache"); exrequest.send(exformData); exrequest.onreadystatechange = function() { if (exrequest.readyState === 4) { if (exrequest.status === 200) { console.log("Existing Media Deleted"); window.tag = null; } } } } } }); mpSdk.Model.getDetails().then(function(model) { modelData = model; modelId = model.sid; }); const transition = mpSdk.Sweep.Transition.INSTANT; var guidedTour = 0; var sweepNumber = 0; var rotNumber = 1; $("#guidedTour").on('click', function() { if (guidedTour == 0) { guidedtour = 1; if (typeof tArray != "undefined" && tArray != null) { var vtsweeps = vtArray; var vtsweepsLength = vtsweeps.length; $("#audio").on('ended', function() { if (sweepNumber < vtsweepsLength) { sweepNumber = sweepNumber + 2; rotNumber = rotNumber + 2; var sweepId = vtsweeps[sweepNumber]; var rotId = JSON.parse(vtsweeps[rotNumber]); mpSdk.Sweep.moveTo(sweepId, { rotation: rotId, transition: mpSdk.Sweep.Transition.FADE }); } }) } } else { guidedTour = 0; } }); function executeCode(tag) { mediatype = "code"; mediacss = ""; if (document.getElementById("mediaframe")) { closeFrame(); } else { if ($('#mediaTitleHolder').hasClass('minimal')) { $('#mediaTitleHolder').removeClass('minimal'); } if ($('#mediaTitleHolder').hasClass('pic')) { $('#mediaTitleHolder').removeClass('pic'); } if ($('#monitor').hasClass('monitor')) { $('#monitor').removeClass('monitor'); } if ($('#monitor').hasClass('min')) { $('#monitor').removeClass('min'); } if ($('#monitor').hasClass('picframe')) { $('#monitor').removeClass('picframe'); } $('#monitor').addClass('standard'); mediaframe = document.createElement('iframe'); mediaframe.setAttribute('id', 'mediaframe'); mediaframe.style.backgroundColor = 'white'; mediaframe.setAttribute('width', '100%'); mediaframe.setAttribute('height', '100%'); mediaframe.setAttribute("scrolling", "yes"); mediaframe.setAttribute("sandbox", "allow-same-origin allow-scripts allow-popups allow-forms allow-modals"); } if (audio.duration > 0 && !audio.paused) { audio.pause(); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); } embedlink = baseUrl + "/htmlembed?tag=" + tag; console.log(tag); mediaframe.setAttribute('src', embedlink); document.getElementById('mediaholder').prepend(mediaframe); if (typeof gainNode !== 'undefined') { if (os != "iOS" && os != "Mac OS") { gainNode.gain.setTargetAtTime(0.1, bgcontext.currentTime, 1); gainNode2.gain.setTargetAtTime(0.8, bgcontext.currentTime, 0.5); } } $('#popupframe').addClass('showing').removeClass('hidden'); $('#mediaholder').addClass('showing').removeClass('hidden'); if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } naturalWidth = null; updateCss(); } function tick(tickertime, sweepPos, thismedia, type) { var transcription = ""; if (jArray[sweepPos + 4] != "") { transcription = jArray[sweepPos + 4]; } else { transcription = jArray[sweepPos + 3]; } if (transcription != "") { var spanSelector = document.querySelector('.marquee span'); spanSelector.innerHTML = transcription; $("#apptranscription").removeAttr("hidden"); spanSelector.style.animationDuration = tickertime + 1 + "s"; $('.marquee span').css("animation-play-state", "running"); $('.marquee span').css("webkitAnimation-play-state", "running"); if (toggletranscripts == 1) { console.log("started"); $("#apptranscription").css("z-index", 0); }; } } function audioplay(type, to) { if (type != null) { window.typeofaudio = "SWEEP"; } if (typeof audio !== 'undefined') { var audiogen = 0; var audio1 = 0; var firstaudio = 0; if (typeof jArray !== 'undefined') { var sweeps = jArray; } var isListened = listened.includes(to); if (!isListened) { var isPresent = jArray.includes(to); if (isPresent) { if (startButton) { var elm = document.querySelector('.marquee span'); elm.innerHTML = ""; var newone = elm.cloneNode(true); elm.parentNode.replaceChild(newone, elm); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); } if (document.getElementById("mediaframe")) { closeFrame(); } var sweepPos = jArray.indexOf(to); var audiofile = jArray[sweepPos + 1]; if (audio1 == 0) { document.getElementById('audioplayer').appendChild(audio); } if (ppInMpControls == "0") { document.getElementById("audioPlayPause").innerHTML = ""; if (document.getElementById("audioPlayPause").style.display == "none") { document.getElementById("audioPlayPause").style.display = "block"; } } else { iframe.contentWindow.document.getElementById("audioPlayPause").innerHTML = ""; if (iframe.contentWindow.document.getElementById("audioPlayPause").style.display == "none") { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "block"; } } if (audiogen == 0) { audio.crossOrigin = "anonymous"; if (audiofile.includes(window.location.hostname)) { audio.src = audiofile; } else { audio.src = "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + audiofile; } audio.type = 'audio/mpeg'; audio.controls = false; audio.load(); if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } $(audio).on("loadedmetadata", getduration) function getduration() { var type = "audio" var tickertime = audio.duration; var thismedia = audio; tick(tickertime, sweepPos, thismedia, type); }; audio.onended = function() { if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.3, bgcontext.currentTime, 0.5); } gainNode2.gain.setTargetAtTime(0.1, bgcontext.currentTime, 0.5); console.log("ended"); if ($('.marquee span').length > 0) { //setTimeout(function() { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); //}, 500); } } } } else { audio.onended = function() { console.log("ENDED"); if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.1, bgcontext.currentTime, 1); } gainNode2.gain.setTargetAtTime(0.3, bgcontext.currentTime, 0.5); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } audio.src = ""; }; } //document.getElementById("audioPlayPause").style.display = "block"; if (annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && voiceControl == "1") { annyang.pause(); } } if (os != "iOS" && os != "Mac OS") { if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.05, bgcontext.currentTime, 1); } gainNode2.gain.setTargetAtTime(1, bgcontext.currentTime, 1); } setTimeout ( function () { var playPromise = audio.play(); if (playPromise !== undefined) { playPromise.then(_ => { // Automatic playback started! // Show playing UI. }).catch(error => { // Auto-play was prevented // Show paused UI. console.error(error); }); } },1000); if (modelExists) { if (window.audioOverride == 1) { audio1 = 0; audiogen = 0; } else { audio1 = 1; audiogen = 1; } window.audioOverride = 0; if (typeof type != "undefined") { if (persistantmedia != "1") { if (type == "sweep") { listened.push(to); } } } } } } } goAnnyang = "go"; } } function mediaplay(type, to) { if (typeof mArray !== 'undefined') { var mediasweeps = mArray; } var isListened = listened.includes(to); if (!isListened) { var isMediaPresent = mArray.includes(to); if (isMediaPresent) { if (annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && voiceControl == "1") { annyang.pause(); } } var sweepPos = mArray.indexOf(to); var mediafile = mArray[sweepPos + 1]; mediatype = mArray[sweepPos + 2]; var mediatitle = mArray[sweepPos + 4]; mediacss = mArray[sweepPos + 6]; var puf = document.getElementById("popupframe") var mon = document.getElementById("monitor"); var mt = document.getElementById("mediaTitle"); var eid = mArray[sweepPos + 3]; if (audio.duration > 0 && !audio.paused) { audio.pause(); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); } if (document.getElementById("mediadescclassic")) { document.getElementById("mediadescclassic").parentNode.removeChild(document.getElementById("mediadescclassic")); } if (document.getElementById("mediaframe")) { document.getElementById("mediaframe").parentNode.removeChild(document.getElementById("mediaframe")); } puf.removeAttribute('style'); if (mediatype == "stmedia" || mediatype == "360 IMAGE") { mediaframe = document.createElement('iframe'); if (mediacss != "classic") { $(".loading-ring").css("display", "block"); mediaframe.onload = function() { $(".loading-ring").css("display", "none"); } } else { if (!mobile) { var mediadesc = document.createElement("div"); mediadesc.id = "mediadescclassic"; mediadesc.style.clear = "both"; var mediaspan = document.createElement("span"); mediaspan.id = "mediaspanclassic" mediaspan.innerHTML = mArray[sweepPos + 5]; mediadesc.append(mediaspan); document.getElementById('monitor').insertBefore(mediadesc, document.getElementById('monitor').children[1]); } } mediaframe.setAttribute('id', 'mediaframe'); mediaframe.setAttribute("scrolling", "yes"); mediaframe.setAttribute("allow", "autoplay"); mediaframe.setAttribute("playsinline", true); mediaframe.setAttribute("allowfullscreen", true); mediaframe.setAttribute("mozallowfullscreen", true); mediaframe.setAttribute("webkitallowfullscreen", true); if (mediatype == "stmedia") { naturalWidth = null; mediaframe.loading = 'eager'; embedlink = mediafile; } if (mediatype == "360 IMAGE") { naturalWidth = null; embedlink = baseUrl + "/360imageembed?eid=" + mediafile; } mediaframe.setAttribute('src', embedlink); updateCss(); document.getElementById('mediaholder').prepend(mediaframe); if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } $('#popupframe').addClass('showing').removeClass('hidden'); $('#mediaholder').addClass('showing').removeClass('hidden'); } else { if (mediatype == "FLAT IMAGE PORTRAIT" || mediatype == "FLAT IMAGE LANDSCAPE" || mediatype == "FLAT IMAGE SQUARE") { mediaframe = document.createElement('img'); mediaframe.setAttribute('id', 'mediaframe'); mediaframe.setAttribute('width', '100%'); mediaframe.setAttribute('height', '100%'); embedlink = mediafile; mediaframe.setAttribute('src', embedlink); var poll = setInterval(function() { if (mediaframe.naturalWidth) { clearInterval(poll); naturalWidth = mediaframe.naturalWidth; naturalHeight = mediaframe.naturalHeight updateCss(); document.getElementById('mediaholder').appendChild(mediaframe); if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } $('#popupframe').addClass('showing').removeClass('hidden'); $('#mediaholder').addClass('showing').removeClass('hidden'); } }, 10); } } if (mobile && !iPad) { document.getElementById('mediaTitle').innerHTML = ""; } else { if (mediacss == "classic") { console.log("CLASSIC"); document.getElementById('mediaTitle').innerHTML = "

" + mediatitle + "

"; } else { document.getElementById('mediaTitle').innerHTML = mediatitle; } } if (typeof gainNode !== 'undefined') { if (os != "iOS" && os != "Mac OS") { gainNode.gain.setTargetAtTime(0.05, bgcontext.currentTime, 1); gainNode2.gain.setTargetAtTime(1, bgcontext.currentTime, 0.5); } } if (typeof type != "undefined") { if (persistantmedia != "1") { if (type == "sweep") { listened.push(to); } } } // Move successful. } } } function executeNav(from, to) { var whereTo = ""; var tagPos = 0; if ((sPath != "tagbuilder" && sPath != "tagbuilderdevnew") || from == "MENU") { console.log(from) if (to.substring(0, 5) != "https") { tagPos = navArray.indexOf(to); whereTo = navArray[tagPos + 3]; whereToInt = navArray[tagPos + 5]; } else { whereTo = to; } if (whereTo.substring(0, 5) != "https") { if (whereToInt != "" && whereToInt != "sweep unused") { var wtJson = JSON.parse(whereToInt); mpSdk.Sweep.moveTo(wtJson[0].sid, { rotation: JSON.parse(wtJson[0].rotation), transition: mpSdk.Sweep.Transition.FADE }); } return; } else { $("#tourlogoimage").fadeOut(1000); var goBack = document.createElement("div"); goBack.id = "goBack"; goBack.style.position = "absolute"; goBack.style.top = "20px"; goBack.style.right = "40px"; goBack.style.width = "35px"; goBack.style.height = "35px"; goBack.style.fontSize = "25px"; goBack.style.fontWeight = "700"; goBack.style.textAlign = "center"; goBack.style.lineHeight = "33px"; goBack.style.border = "3px solid #" + cssFg; goBack.style.borderRadius = "5px"; goBack.style.zIndex = 200; goBack.style.color = "#" + cssFg; goBack.style.background = "#" + cssBg; goBack.style.cursor = "pointer"; goBack.innerHTML = "
X
"; /*$(function() { var state = false; var int = setInterval(function() { if (state) { $("#goBack").animate({ color: "#" + cssFg, }, 1000); state = !state; } else { $("#goBack").animate({ color: "#" + cssBg, }, 1000); state = !state; } }, 1000); $('#goBack').hover(function() { clearInterval(int); int = null; }); }); */ if (os != "iOS" && os != "Mac OS") { if (typeof bgAudio != "undefined" && bgAudio != "") { if (audioBG.duration > 0 && !audioBG.paused) { audioBG.pause(); } } } if (audio.duration > 0 && !audio.paused) { if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } audio.pause(); isPaused = true; if (hearingimpaired == 1) { $("#apptranscription").css("z-index", -50); $(".marquee span").css("animation-play-state", "paused"); $(".marquee span").css("webkitAnimation-play-state", "paused"); } } } if (from == "MENU") { document.getElementById("iframecontainer").prepend(goBack); } else { document.getElementById("framecontainer").prepend(goBack); } goBack.addEventListener("click", backToMainTour); $("#audioContainer").fadeOut(1000); $(".controlbuttons").fadeOut(1000); $("#showcase_iframe").fadeOut(1000); var newframe = document.createElement("iframe"); newframe.id = "iframe2"; if (from == "MENU") { document.getElementById("iframecontainer").appendChild(newframe); } else { document.getElementById("framecontainer").appendChild(newframe); } newframe.style.width = "100%"; newframe.style.height = "100%"; newframe.style.position = "absolute"; newframe.style.top = "0px"; newframe.src = whereTo; $("#iframe2").fadeIn(1000); } }; function vidtick(tickertime, sweepPos, thismedia, type) { var transcription = vArray[sweepPos + 7]; var spanSelector = document.querySelector('.marquee span'); if (transcription.length > 0) { spanSelector.innerHTML = transcription; $("#apptranscription").removeAttr("hidden"); spanSelector.style.animationDuration = tickertime + 1 + "s"; $('.marquee span').css("animation-play-state", "running"); $('.marquee span').css("webkitAnimation-play-state", "running"); if (toggletranscripts == 1) { $("#apptranscription").css("z-index", 50); }; } } function videoplay(type, to) { if (typeof vArray !== 'undefined') { var videosweeps = vArray; } var isListened = listened.includes(to); if (!isListened) { var isVideoPresent = vArray.includes(to); if (isVideoPresent) { var sweepPos = vArray.indexOf(to); var videofile = vArray[sweepPos + 1]; embedlink = videofile; var videotitle = vArray[sweepPos + 2]; var videomute = vArray[sweepPos + 3]; var tsovid = vArray[sweepPos + 4]; mediatype = "video"; mediacss = vArray[sweepPos + 6]; var puf = document.getElementById("popupframe") var mon = document.getElementById("monitor"); var mt = document.getElementById("mediaTitle"); if (annyang) { if (os != "Mac OS" && os != "iOS" && os != 'Android' && voiceControl == "1") { annyang.pause(); } } if (audio.duration > 0 && !audio.paused) { audio.pause(); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").css("z-index", -50); } if (document.getElementById("mediadescclassic")) { document.getElementById("mediadescclassic").parentNode.removeChild(document.getElementById("mediadescclassic")); } if (document.getElementById("mediaframe")) { document.getElementById("mediaframe").parentNode.removeChild(document.getElementById("mediaframe")); } if (tsovid == "yes") { mediaframe = document.createElement('iframe'); mediaframe.setAttribute('id', 'mediaframe'); mediaframe.setAttribute("scrolling", "yes"); mediaframe.setAttribute("allow", "autoplay"); mediaframe.setAttribute("playsinline", true); if (videomute == "yes") { if (embedlink.includes(window.location.hostname)) { mediaframe.setAttribute('src', baseUrl + "/360videoembed?eid=" + embedlink + "?muted=true"); } else { mediaframe.setAttribute('src', baseUrl + "/360videoembed?eid=https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + embedlink + "?muted=true"); } mediaframe.muted = true; } else { if (embedlink.includes(window.location.hostname)) { mediaframe.setAttribute('src', baseUrl + "/360videoembed?eid=" + embedlink); } else { mediaframe.setAttribute('src', baseUrl + "/360videoembed?eid=https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + embedlink); } } } else { try { mediaframe = document.createElement('video'); mediaframe.setAttribute('id', 'mediaframe'); mediaframe.setAttribute('width', '100%'); mediaframe.setAttribute('height', '100%'); mediaframe.setAttribute("controls", true); mediaframe.setAttribute("controlsList", "nodownload"); mediaframe.setAttribute("oncontextmenu", "return false"); mediaframe.setAttribute("autoplay", true); mediaframe.setAttribute("playsinline", true); if (videomute == "yes" || sPath == "tagbuilder" || sPath == "tagbuilderdevnew") { if (embedlink.includes(window.location.hostname)) { mediaframe.setAttribute('src', embedlink + "?muted=true"); } else { mediaframe.setAttribute('src', "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + embedlink + "?muted=true"); } mediaframe.muted = true; if (os != "iOS" && os != "Mac OS") { if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.05, bgcontext.currentTime, 1); } gainNode2.gain.setTargetAtTime(1, bgcontext.currentTime, 1); } } else { if (embedlink.includes(window.location.hostname)) { mediaframe.setAttribute('src', embedlink); } else { mediaframe.setAttribute('src', "https://orange-glade-6ff7.boost3d.workers.dev/corsproxy/?apiurl=" + embedlink); } if (hearingimpaired == 1) { if (startButton) { var seconds = 0; function incrementSeconds() { seconds += 1; } $(mediaframe).on("loadedmetadata", getduration) function getduration() { var type = "video" var tickertime = mediaframe.duration; var thismedia = mediaframe; vidtick(tickertime, sweepPos, thismedia, type); }; mediaframe.onended = function() { if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.3, bgcontext.currentTime, 1); } gainNode2.gain.setTargetAtTime(0.1, bgcontext.currentTime, 0.5); console.log("hidden media"); if ($('.marquee span').length > 0) { setTimeout(function() { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } $("#apptranscription").attr("hidden", true); }, 500); } } } } else { mediaframe.onended = function() { if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.3, bgcontext.currentTime, 1); } gainNode2.gain.setTargetAtTime(0.1, bgcontext.currentTime, 0.5); mediaframe.src = ""; }; } //QUICKFIXED - NEEDS ATTENTION CF COOKIE mediaframe.setAttribute('src', baseUrl + "/videoembed?embedurl=" + embedlink); //if (os != "iOS" && os != "Mac OS"){ //gainNode3.gain.setValueAtTime(0.8, bgcontext.currentTime, 0.6); //} } } catch (error) { console.error(error); } } if (typeof gainNode !== 'undefined') { if (os != "iOS" && os != "Mac OS") { gainNode.gain.setTargetAtTime(0.1, bgcontext.currentTime, 1); } } document.getElementById('mediaholder').appendChild(mediaframe); if (mobile && !iPad) { document.getElementById('mediaTitle').innerHTML = ""; } else { if (mediacss != "classic") { $(".loading-ring").css("display", "block"); mediaframe.onload = function() { $(".loading-ring").css("display", "none"); } } else { if (!mobile) { var mediadesc = document.createElement("div"); mediadesc.id = "mediadescclassic"; mediadesc.style.clear = "both"; var mediaspan = document.createElement("span"); mediaspan.id = "mediaspanclassic" mediaspan.innerHTML = mArray[sweepPos + 5]; mediadesc.append(mediaspan); document.getElementById('monitor').insertBefore(mediadesc, document.getElementById('monitor').children[1]); } } } if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").addClass("blurry"); $("#showcase_iframe").addClass("blurry"); } $('#popupframe').addClass('showing').removeClass('hidden'); $('#mediaholder').addClass('showing').removeClass('hidden'); updateCss(); if (typeof type != "undefined") { if (persistantmedia != "1") { if (type == "sweep") { listened.push(to); } } } // Move successful. } } } } window.addEventListener('DOMContentLoaded', (event) => { //recordButton = document.getElementById("record"); //recordButton = $("#record"); //noChangeAudioButton = document.getElementById("noChangeAudio"); //linkButton = document.getElementById("linkAudio"); //list = document.getElementById('recordings'); //webkitURL is deprecated but nevertheless URL = window.URL || window.webkitURL; var gumStream; //stream from getUserMedia() var recorder; //WebAudioRecorder object var input; //MediaStreamAudioSourceNode we'll be recording var encodingType; //holds selected encoding for resulting audio (file) encodeAfterRecord = true; // when to encode // shim for AudioContext when it's not avb. var encodingTypeSelect = "mp3"; /*if (recordButton) { linkButton.getAttribute('hidden'); linkButton.removeAttribute('hidden'); linkButton.addEventListener("click", insertAudioLink); recordButton.getAttribute('hidden'); recordButton.removeAttribute('hidden'); recordButton.addEventListener("click", startRecording); }*/ }); $(document).on("click", "#audioLinkSubmit", linkUpload); $(document).on("click", "#record", startRecording); function insertAudioLink() { $("#noChangeAudio").attr('hidden', true); document.getElementById("audioLinkHolder").removeAttribute('hidden'); linkButton.setAttribute('hidden', true); recordButton.setAttribute('hidden', true); noChangeAudioButton.setAttribute('hidden', true); $(".hPara").attr("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; } $(document).on('click', "#noChangeAudio", function() { try { var formData = new FormData(); formData.append('title', document.getElementById('titleValue').value); formData.append('button', document.getElementById('buttonValue').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('dirpath', "nochange"); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('transcript', document.getElementById('autranscription').value); formData.append('audioSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('sweep', lookup[realtagPos + 1]); } else { formData.append('sweep', window.tag); } if (window.type == "tag") { formData.append('rotation', "tag_unused"); } else { formData.append('rotation', window.rotation); } var checkBox = document.getElementById('requirebutton'); formData.append('note', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/dbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; console.log("Database Updated"); window.tag = null; $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementById('audioLink').value = ''; // linkButton.removeAttribute('hidden'); // recordButton.removeAttribute('hidden'); // hPara.removeAttribute('hidden'); document.getElementById("audioLinkHolder").setAttribute('hidden', true); var refreshpoints = baseLoc + "/currentpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; $("#existingRow").load(refreshpoints); }, 2000); } } } } catch (error) { console.error(error); } }); function linkUpload() { /*var file = document.getElementById('audioLink').files[0]; // for (let i = 0; i < files.length; i++) { // let file = files[i]; $(".ssMsg").html("UPLOADING - PLEASE WAIT"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); fetch(baseLoc + `/blobhandle.php`, { method: "POST", body: file }).then(response => { if (response.ok) return response; }).then(response => { var blobData = new FormData(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', baseLoc + '/upload.php'); blobrequest.send(blobData); console.log("Audio Uploaded"); blobrequest.onreadystatechange = function() { if (blobrequest.readyState === 4) { if (blobrequest.status === 200) { */ var formData = new FormData(); formData.append('audio', document.getElementById('audioLink').value); formData.append('dirpath', document.getElementById('directoryName').value); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('title', document.getElementById('titleValue').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('transcript', document.getElementById('autranscription').value); formData.append('audioSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('sweep', lookup[realtagPos + 1]); } else { formData.append('sweep', window.tag); } if (window.type == "tag") { formData.append('rotation', "tag_unused"); } else { formData.append('rotation', window.rotation); } var checkBox = document.getElementById('requirebutton'); formData.append('button', document.getElementById('buttonValue').value); formData.append('note', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/dbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; console.log("Database Updated"); window.tag = null; $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById('audioLink').value = ''; //linkButton.removeAttribute('hidden'); //recordButton.removeAttribute('hidden'); //hPara.removeAttribute('hidden'); document.getElementById("audioLinkHolder").setAttribute('hidden', true); $("#audioLinkHolder").files = null; var refreshpoints = baseLoc + "/currentpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; $("#existingRow").load(refreshpoints); }, 2000); } } }; } // } // }; // }); // } //} function startRecording() { noChangeAudioButton = document.getElementById("noChangeAudio"); linkButton = document.getElementById("linkAudio"); list = document.getElementById('recordings'); console.log("RECORD"); $("#linkAudio").attr('hidden', true); $("#noChangeAudio").attr('hidden', true); $(".hPara").attr("hidden", true); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; recordButton = document.getElementById("record"); recordButton.innerText = 'Stop'; recordButton.removeEventListener("click", startRecording); recordButton.addEventListener("click", stopRecording); var constraints = { audio: { echoCancellation: true, noiseSurpression: true }, video: false }; navigator.mediaDevices.getUserMedia(constraints).then(function(stream) { var AudioContext = window.AudioContext || window.webkitAudioContext; var audioContext; //new audio context to help us record if (os === "iOS" || os === "Mac OS") { context = new AudioContext({ sampleRate: 48000 }); } else { context = new AudioContext({ sampleRate: 44100 }); } var timeLeft = 90; //assign to gumStream for later use gumStream = stream; /* use the stream */ input = context.createMediaStreamSource(gumStream); //get the encoding encodingType = encodingTypeSelect.value; //disable the encoding selector encodingTypeSelect.disabled = true; recorder = new WebAudioRecorder(input, { workerDir: "/js/", // must end with slash encoding: encodingType, numChannels: 2, //2 is the default, mp3 encoding supports only 2 onEncoderLoading: function(recorder, encoding) {}, onEncoderLoaded: function(recorder, encoding) {} }); if (os === "iOS" || os === "Mac OS") { var br = 96; } else { var br = 192; } recorder.setOptions({ timeLimit: 90, encodeAfterRecord: encodeAfterRecord, ogg: { quality: 0.5 }, mp3: { bitRate: br } }); recorder.startRecording(); console.log("Recording started"); var timeLeft = 90; clockelem = document.getElementById('countdown'); timerId = setInterval(countdown, 1000); clockelem.getAttribute("hidden"); clockelem.removeAttribute("hidden"); function countdown() { if (timeLeft == -1) { clearTimeout(timerId); timerId = null; recordButton.click(); clockelem.setAttribute("hidden", true); } else { if (recorder.state === 'inactive') { clearTimeout(timerId); clockelem.setAttribute("hidden", true); timerId = null; } else { clockelem.innerHTML = timeLeft + ' seconds remaining'; timeLeft--; } } } recorder.onComplete = function(recorder, blob) { console.log("encoding complete"); const blobUrl = URL.createObjectURL(blob); const li = document.createElement('li'); li.className = "inputListItem"; const audio1 = document.createElement('audio'); const upload = document.createElement('BUTTON'); upload.className = "inputListButton"; const deleteButton = document.createElement('BUTTON'); deleteButton.className = "inputListButton"; upload.innerHTML = "UPLOAD"; deleteButton.innerHTML = "DISCARD"; audio1.setAttribute('src', blobUrl); audio1.setAttribute('controls', 'controls'); li.appendChild(audio1); li.appendChild(upload); li.appendChild(deleteButton); list.appendChild(li); deleteButton.addEventListener('click', async () => { tbnavDiv.setAttribute('hidden', true); upload.setAttribute('hidden', true); deleteButton.setAttribute('hidden', true); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").innerHTML = "THE RECORDING HAS BEEN DELETED"; document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementById('audioLink').value = ''; linkButton.removeAttribute('hidden'); recordButton.removeAttribute('hidden'); $(".hPara").removeAttr('hidden'); noChangeAudioButton.removeAttribute('hidden'); document.getElementById("audioLinkHolder").setAttribute('hidden', true); audio1.setAttribute('hidden', true); clearTimeout(timerId); timerId = null; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; $("#existingRow").load(refreshpoints); }, 2000); }); upload.addEventListener('click', async () => { tbnavDiv.setAttribute('hidden', true); upload.setAttribute('hidden', true); deleteButton.setAttribute('hidden', true); recordButton.getAttribute('hidden'); recordButton.removeAttribute('hidden'); audio1.setAttribute('hidden', true); fetch(baseLoc + `/blobhandle.php`, { method: "POST", body: blob }).then(response => { if (response.ok) return response; console.log("Audio Handled in Memory"); }).then(response => { var blobData = new FormData(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', baseLoc + '/upload.php'); blobrequest.send(blobData); console.log("Audio Uploaded"); blobrequest.onreadystatechange = function() { if (blobrequest.readyState === 4) { if (blobrequest.status === 200) { var formData = new FormData(); formData.append('dirpath', document.getElementById('directoryName').value); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('title', document.getElementById('title').value); formData.append('transcript', document.getElementById('autranscription').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('audioSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('sweep', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { formData.append('sweep', window.tag); var translatetag = window.tag; } if (window.type == "tag") { formData.append('rotation', "tag_unused"); } else { formData.append('rotation', window.rotation); } var checkBox = document.getElementById('requirebutton'); formData.append('button', document.getElementById('buttonValue').value); formData.append('note', ""); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/dbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; fetch(baseLoc + '/translatedelete.php?model=' + document.getElementById('editmodel').value + '&version=' + document.getElementById('version').value + '&tagid=' + translatetag) console.log("Database Updated"); window.tag = null; $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("buttonValue").value = ''; linkButton.removeAttribute('hidden'); //hPara.removeAttribute('hidden'); gumStream.getTracks().forEach(function(track) { track.stop(); }); var refreshpoints = baseLoc + "/currentpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; $("#existingRow").load(refreshpoints); }, 2000); clearTimeout(timerId); timerId = null; } } }; } } }; }); }); }; console.log("Encoding complete"); }); } function renderError(message) { const main = document.querySelector('main'); main.innerHTML = `

${message}

`; } function renderError(message) { const main = document.querySelector('main'); main.innerHTML = `

${message}

`; } function stopRecording() { clearTimeout(timerId); timerId = null; recordButton.removeEventListener("click", stopRecording); recordButton.addEventListener("click", startRecording); recordButton.innerText = 'Record'; recordButton.setAttribute("hidden", true); clockelem.setAttribute("hidden", true); tbnavDiv.getAttribute('hidden'); tbnavDiv.removeAttribute('hidden'); //stop microphone access gumStream.getAudioTracks()[0].stop(); //tell the recorder to finish the recording (stop recording + encode the recorded audio) recorder.finishRecording(); console.log('Recording stopped'); } $(document).on('click', "#shareLink", function() { var model = $(this).attr('data-mod'); var version = $(this).attr('data-ver'); bPopup = $('#linkPopup').bPopup({ contentContainer: '.linkContent', loadUrl: baseLoc + "/sharelink.php?model=" + model + "&version=" + version //Uses jQuery.load() }); $(document).on('click', "#linkPopup .close", function() { bPopup.close(); }); }); $(document).on('click', "#shareEmbed", function() { var model = $(this).attr('data-mod'); var version = $(this).attr('data-ver'); bPopup2 = $('#embedPopup').bPopup({ contentContainer: '.embedContent', loadUrl: baseLoc + "/shareembed.php?model=" + model + "&version=" + version //Uses jQuery.load() }); $(document).on('click', "#embedPopup .close", function() { bPopup2.close(); }); }); $(document).on('click', "#linkAudio", function() { if (!$("#vidLinkHolder").attr("hidden")) { $("#vidLinkHolder").attr("hidden", true); } var src = "tagsweep"; var type = "audio"; openMediaLibrary(src, type); document.getElementById("linkAudio").setAttribute("hidden", true); document.getElementById("noChangeAudio").setAttribute("hidden", true); $(".hPara").attr("hidden", true); document.getElementById("linktoAudioUrl").setAttribute("hidden", true); //$("#vidtbnavDiv").removeAttr('hidden'); //$('#vidtbnavDiv').addClass("linkclass"); document.getElementById("audioLinkHolder").setAttribute("hidden", true); document.getElementById("record").setAttribute("hidden", true); }); $(document).on('click', "#linktoAudioUrl", function() { console.log($("#audioLinkSubmit").attr("hidden")); if ($("#audioLinkHolder").attr("hidden")) { $("#audioLinkHolder").removeAttr("hidden"); } $("#linktoAudioUrl").attr("hidden", true); $("#record").attr("hidden", true); $("#linkAudio").attr("hidden", true); $("#noChangeAudio").attr("hidden", true); $(".hPara").attr("hidden", true); if ($("#audioLinkSubmit").attr("hidden")) { $("#audioLinkSubmit").removeAttr("hidden"); } }); $(document).on('click', "#removeBgAudio", function() { var type = "bgm"; var formData = new FormData(); formData.append('requestType', type); formData.append('audiobg_file', ""); submitData(type, formData); }); $(document).on('click', ".linkMediaBtn", function() { $("#intro_background").attr("hidden", true) var src = $(this).attr("data-src"); var type = $(this).attr("data-type"); openMediaLibrary(src, type); }); $(document).on('click', ".linkMediaUrlBtn", function() { var src = $(this).attr("data-src"); if (src == "bgmedia") { $("#intro_background").removeAttr("hidden") } else { if (src == "clogo") { $("#clogoHolder").removeAttr("hidden") } else { if (src == "plogo") { $("#plogoHolder").removeAttr("hidden") } else { if (src == "csweep") { $("#customSweepUrl").removeAttr("hidden") } else { if (src == "nplogo") { $("#nplogoHolder").removeAttr("hidden") } } } } } }); $(document).on('click', "#linkBgAudio", function() { if (!$("#audioBgLinkHolder").attr("hidden")) { $("#audioBgLinkHolder").attr("hidden", true); } var src = "bg"; var type = "audio"; openMediaLibrary(src, type); document.getElementById("linkBgAudio").setAttribute("hidden", true); document.getElementById("removeBgAudio").setAttribute("hidden", true); $(".hPara").attr("hidden", true); document.getElementById("linktoBgAudioUrl").setAttribute("hidden", true); //$("#vidtbnavDiv").removeAttr('hidden'); //$('#vidtbnavDiv').addClass("linkclass"); document.getElementById("audioBgLinkHolder").setAttribute("hidden", true); $("#audioBgLinkSubmit").removeAttr("hidden"); }); $(document).on('click', "#linktoBgAudioUrl", function() { if ($("#audioBgLinkHolder").attr("hidden")) { $("#audioBgLinkHolder").removeAttr("hidden"); } $("#linktoBgAudioUrl").attr("hidden", true); $("#removeBgAudio").attr("hidden", true); $("#linkBgAudio").attr("hidden", true); $(".hPara").attr("hidden", true); $("#audioBgLinkSubmit").removeAttr("hidden"); }); $(document).on('click', "#linkImage", function() { if (!$("#mediaLinkHolder").attr("hidden")) { $("#mediaLinkHolder").attr("hidden", true); } var src = "tagsweep"; var type = "image"; openMediaLibrary(src, type); document.getElementById("linkImage").setAttribute("hidden", true); document.getElementById("mmLink").setAttribute("hidden", true); document.getElementById("noChangeImage").setAttribute("hidden", true); $(".hPara").attr("hidden", true); document.getElementById("linktoImageUrl").setAttribute("hidden", true); document.getElementById("mediaLinkHolder").setAttribute("hidden", true); document.getElementById("mmSubmit").removeAttribute("hidden"); }); $(document).on('click', "#linkVideo", function() { if (!$("#vidLinkHolder").attr("hidden")) { $("#vidLinkHolder").attr("hidden", true); } var src = "tagsweep"; var type = "video"; openMediaLibrary(src, type); document.getElementById("linkVideo").setAttribute("hidden", true); document.getElementById("noChangeVideo").setAttribute("hidden", true); $(".hPara").attr("hidden", true); document.getElementById("linktoVideoUrl").setAttribute("hidden", true); $("#vidtbnavDiv").removeAttr('hidden'); $('#vidtbnavDiv').addClass("linkclass"); document.getElementById("vidLinkHolder").setAttribute("hidden", true); document.getElementById("360VideoHolder").removeAttribute("hidden"); document.getElementById("vrecord").setAttribute("hidden", true); }); $(document).on('click', "#linktoImageUrl", function() { if ($("#mediaLinkHolder").attr("hidden")) { $("#mediaLinkHolder").removeAttr("hidden"); } $("#linktoImageUrl").attr("hidden", true); $("#linkImage").attr("hidden", true); $("#noChangeImage").attr("hidden", true); $(".hPara").attr("hidden", true); }); $(document).on('click', "#linktoVideoUrl", function() { if ($("#vidLinkHolder").attr("hidden")) { $("#vidLinkHolder").removeAttr("hidden"); } $("#vidtbnavDiv").removeAttr('hidden'); $('#vidtbnavDiv').addClass("linkclass"); $("#linktoVideoUrl").attr("hidden", true); $("#vrecord").attr("hidden", true); $("#linkVideo").attr("hidden", true); $("#noChangeVideo").attr("hidden", true); $(".hPara").attr("hidden", true); $("#360VideoHolder").removeAttr("hidden"); }); $(document).on('change', "#mmLink", function() { var url = $(this).val(); console.log(($(this).attr("data-image"))) if ($(this).attr("data-image")) { if (url != "") { $("#currentTagImg").remove(); $(".hPara").attr("hidden", true); $("#linkImage").attr("hidden", true) $("#noChangeImage").attr("hidden", true) $("#linktoImageUrl").attr("hidden", true) $("#rmImageBtn").removeAttr("hidden") $("#mmSubmit").removeAttr("hidden") var img = document.createElement("img"); img.id = "currentTagVid"; img.style.width = "90%"; img.src = url; $("#mediaLinkHolder").before(img); if ($("#mediaframe").length > 0) { mediaframe.src = $(this).val(); } } else { $("#currentTagImg").remove(); $(".hPara").removeAttr("hidden"); $("#linkImage").removeAttr("hidden"); $("#noChangeImage").removeAttr("hidden"); $("#linktoImageUrl").removeAttr("hidden"); $("#rmImageBtn").removeAttr("hidden"); $("#mmSubmit").attr("hidden", true) } } }) $(document).on('change', "#vidLink", function() { var url = $(this).val(); if (url != "") { $("#currentTagVid").remove(); $("#vrecord").attr("hidden", true); $(".hPara").attr("hidden", true); $("#linkVideo").attr("hidden", true) $("#noChangeVideo").attr("hidden", true) $("#linktoVideoUrl").attr("hidden", true) $("#rmMedBtn").removeAttr("hidden") $("#vidLinkSubmit").removeAttr("hidden") var img = document.createElement("video"); img.id = "currentTagVid"; img.muted = true; img.style.width = "90%"; img.src = url; img.play(); $("#vidLinkHolder").before(img); if ($("#mediaframe").length > 0) { mediaframe.src = $(this).val(); } } else { $("#currentTagVid").remove(); $("#vrecord").removeAttr("hidden"); $(".hPara").removeAttr("hidden"); $("#linkVideo").removeAttr("hidden"); $("#noChangeVideo").removeAttr("hidden"); $("#linktoVideoUrl").removeAttr("hidden"); $("#rmMedBtn").removeAttr("hidden"); $("#vidLinkSubmit").attr("hidden", true) } }) function isImgUrl(url) { return fetch(url, {method: 'HEAD'}).then(res => { return res.headers.get('Content-Type').startsWith('image') }) } $(document).on('change', "#intro_bg", async function() { $("#currentBgImg").remove(); $(".linkMediaBtn").attr("hidden", true); $(".hPara").attr("hidden", true); $(".linkMediaUrlBtn").attr("hidden", true) $(".removeMediaBtn").removeAttr("hidden") var url = $(this).val(); if (url != "") { const isImage = await isImgUrl(url) if (isImage) { var img = document.createElement("img"); img.id = "currentBgImg"; img.style.width = "90%"; img.src = url; $("#rmMedBtn").before(img); } else { var img = document.createElement("video"); img.id = "currentBgImg"; img.style.width = "90%"; img.muted=true; img.src = url; img.play(); $("#rmMedBtn").before(img); } } }); $(document).on('change', "#customSweepUrl", function() { var url = $(this).val(); $("#currentCsweepImg").remove(); $("#CsweepBtn").attr("hidden", true); $(".hPara").attr("hidden", true); $("#CsweepUrlBtn").attr("hidden", true) $("#rmCsweepBtn").removeAttr("hidden") var img = document.createElement("img"); img.id = "currentCsweepImg"; img.style.width = "90%"; img.src = url; $("#customSweepUrl").before(img); }); $(document).on('change', "#logo", function() { var url = $(this).val(); $("#currentcLogoImg").remove(); $("#ClogoBtn").attr("hidden", true); $(".hPara").attr("hidden", true); $("#ClogoUrlBtn").attr("hidden", true) $("#rmClogoBtn").removeAttr("hidden") var img = document.createElement("img"); img.id = "currentcLogoImg"; img.style.width = "90%"; img.src = url; $("#clogoHolder").before(img); }); $(document).on('change', "#providerlogo", function() { console.log("CHANGED"); var url = $(this).val(); $("#currentpLogoImg").remove(); $("#PlogoBtn").attr("hidden", true); $(".hPara").attr("hidden", true); $("#PlogoUrlBtn").attr("hidden", true) $("#rmPlogoBtn").removeAttr("hidden") var img = document.createElement("img"); img.id = "currentpLogoImg"; img.style.width = "90%"; img.src = url; $("#plogoHolder").before(img); }); $(document).on('click', "#noChangeVideo", function() { try { var vulformData = new FormData(); vulformData.append('dirpath', "nochange"); vulformData.append('editmodel', document.getElementById('editmodel').value); vulformData.append('version', document.getElementById('version').value); vulformData.append('title', document.getElementById('vidtitle').value); vulformData.append('css', document.getElementById('vidCss').value); var checkMute = document.getElementById("muteVideo").checked; if (checkMute == true) { vulformData.append('mutevid', "yes"); } else { vulformData.append('mutevid', "no"); } var is360 = document.getElementById("360Video").checked; if (is360 == true) { vulformData.append('360vid', "yes"); } else { vulformData.append('360vid', "no"); } vulformData.append('accessvid', "no"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { vulformData.append('sweep', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { vulformData.append('sweep', window.tag); var translatetag = window.tag; } if (window.type == "tag") { vulformData.append('rotation', "tag_unused"); } else { vulformData.append('rotation', window.rotation); } vulformData.append('button', document.getElementById('vidbuttonValue').value); vulformData.append('transcript', document.getElementById('vidtranscriptValue').value); var vulrequest = new XMLHttpRequest(); vulrequest.upload.addEventListener("progress", function(evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; //console.log("progress"); //Do something with upload progress //console.log(percentComplete); } }, false); vulrequest.open('POST', baseLoc + '/viddbupdate.php'); vulrequest.setRequestHeader("Cache-Control", "no-cache"); vulrequest.send(vulformData); vulrequest.onreadystatechange = function() { if (vulrequest.readyState === 4) { if (vulrequest.status === 200) { $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("vidbuttonValue").value = ''; document.getElementById("vidtranscriptValue").value = ''; document.getElementById('vidLink').value = ''; document.getElementById('vidtitle').value = ''; document.getElementById('muteVideo').checked = false; document.getElementById('360Video').checked = false; $(".hPara").attr("hidden", true); $("#vrecord").attr("hidden", true); $("#linktoVideoUrl").attr("hidden", true); $("#noChangeVideo").attr("hidden", true); $("#linkVideo").attr("hidden", true); document.getElementById("vidtbnavDiv").setAttribute("hidden", true); document.getElementById("linkVideoSubmit").setAttribute("hidden", true); document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; var editmodel = document.getElementById('editmodel').value; var version = document.getElementById('version').value; var refreshvidpoints = baseLoc + "/currentvidpoints.php?model=" + editmodel + "&version=" + version; var refreshavidpoints = baseLoc + "/currentavidpoints.php?model=" + editmodel + "&version=" + version; setTimeout(function() { $("#existingVidRow").load(refreshvidpoints); $("#existingaVidRow").load(refreshavidpoints); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); console.log("Links Refreshed"); } } } } catch (error) { console.error(error) } }); $(document).on('click', "#linkVideoSubmit", function() { try { $("#linkVideoSubmit").css("display", "none"); /*$(".ssMsg").html("UPLOADING - PLEASE WAIT"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); file = document.getElementById('vidLink').files[0]; var blobData = new FormData(); var uuid = uuidv4(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('filename', file.name); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); blobData.append('file', file); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', baseLoc + '/vidfileupload.php'); blobrequest.send(blobData); console.log("Video Uploaded"); blobrequest.onreadystatechange = function() { if (blobrequest.readyState === 4) { if (blobrequest.status === 200) { */ var vulformData = new FormData(); vulformData.append('video', document.getElementById('vidLink').value); vulformData.append('dirpath', document.getElementById('directoryName').value); vulformData.append('editmodel', document.getElementById('editmodel').value); vulformData.append('version', document.getElementById('version').value); vulformData.append('title', document.getElementById('vidtitle').value); vulformData.append('css', document.getElementById('vidCss').value); //vulformData.append('filename', file.name); var checkMute = document.getElementById("muteVideo").checked; if (checkMute == true) { vulformData.append('mutevid', "yes"); } else { vulformData.append('mutevid', "no"); } var is360 = document.getElementById("360Video").checked; if (is360 == true) { vulformData.append('360vid', "yes"); } else { vulformData.append('360vid', "no"); } vulformData.append('accessvid', "no"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { vulformData.append('sweep', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { vulformData.append('sweep', window.tag); var translatetag = window.tag; } if (window.type == "tag") { vulformData.append('rotation', "tag_unused"); } else { vulformData.append('rotation', window.rotation); } vulformData.append('button', document.getElementById('vidbuttonValue').value); vulformData.append('transcript', document.getElementById('vidtranscriptValue').value); var vulrequest = new XMLHttpRequest(); vulrequest.upload.addEventListener("progress", function(evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; //console.log("progress"); //Do something with upload progress //console.log(percentComplete); } }, false); vulrequest.open('POST', baseLoc + '/viddbupdate.php'); vulrequest.setRequestHeader("Cache-Control", "no-cache"); vulrequest.send(vulformData); vulrequest.onreadystatechange = function() { if (vulrequest.readyState === 4) { if (vulrequest.status === 200) { fetch(baseLoc + '/translatedelete.php?model=' + document.getElementById('editmodel').value + '&version=' + document.getElementById('version').value + '&tagid=' + translatetag) console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById('vidLink').value = ""; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("vidbuttonValue").value = ''; document.getElementById("vidtranscriptValue").value = ''; document.getElementById('vidLink').value = ''; document.getElementById('vidtitle').value = ''; document.getElementById('muteVideo').checked = false; document.getElementById('360Video').checked = false; $(".hPara").attr("hidden", true); $("#vrecord").attr("hidden", true); $("#linktoVideoUrl").attr("hidden", true); $("#noChangeVideo").attr("hidden", true); $("#linkVideo").attr("hidden", true); document.getElementById("vidtbnavDiv").setAttribute("hidden", true); document.getElementById("linkVideoSubmit").setAttribute("hidden", true); document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; var editmodel = document.getElementById('editmodel').value; var version = document.getElementById('version').value; var refreshvidpoints = baseLoc + "/currentvidpoints.php?model=" + editmodel + "&version=" + version; var refreshavidpoints = baseLoc + "/currentavidpoints.php?model=" + editmodel + "&version=" + version; $("#existingVidRow").load(refreshvidpoints); $("#existingaVidRow").load(refreshavidpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); console.log("Links Refreshed"); var exformData = new FormData(); exformData.append('editmodel', document.getElementById('editmodel').value); exformData.append('version', document.getElementById('version').value); exformData.append('type', "video"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { exformData.append('sweep', lookup[realtagPos + 1]); } else { exformData.append('sweep', window.tag); } var exrequest = new XMLHttpRequest(); exrequest.open('POST', baseLoc + '/deleteexistingonchange.php'); exrequest.setRequestHeader("Cache-Control", "no-cache"); exrequest.send(exformData); exrequest.onreadystatechange = function() { if (exrequest.readyState === 4) { if (exrequest.status === 200) { console.log("Existing Media Deleted"); window.tag = null; } } } } } }; // } // } // } } catch (error) { console.error(error); } }) $(document).on('click', "#closeIcon", function() { $("#iconPage").css("display", "none"); }) $(document).on('click', "#copyShare", function() { var copyText = document.getElementById("myShareLink"); copyText.select(); copyText.setSelectionRange(0, 99999); document.execCommand("copy"); alert("Link Copied"); bPopup.close(); }); $(document).on('click', "#embedCopyShare", function() { var copyText = document.getElementById("myShareEmbed"); copyText.select(); copyText.setSelectionRange(0, 99999); document.execCommand("copy"); alert("Embed Code Copied"); bPopup2.close(); }); $(document).on('click', ".deleteExisting", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', baseLoc + '/audiosweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function() { if (delrequest.readyState === 4) { if (delrequest.status === 200) { document.getElementById("excontrolWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); $(".ssMsg").load(baseLoc + "/smessage.php"); var refreshpoints = baseLoc + "/currentpoints.php?model=" + delModelId + "&version=" + delVersionId; $("#existingRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); $(document).on('click', ".editExisting", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); document.getElementById("excontrolWrapper").removeAttribute("hidden"); document.getElementById("controlWrapper").setAttribute("hidden", true); var refreshpoints = baseLoc + "/audiosweepedit.php?model=" + delModelId + "&version=" + delVersionId + "&sweep=" + delSweepId; $("#excontrolWrapper").load(refreshpoints); }); $(document).on('click', ".editExistingVid", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); document.getElementById("excontrolWrapper").removeAttribute("hidden"); document.getElementById("controlWrapper").setAttribute("hidden", true); var refreshpoints = baseLoc + "/videosweepedit.php?model=" + delModelId + "&version=" + delVersionId + "&sweep=" + delSweepId; $("#excontrolWrapper").load(refreshpoints); }); $(document).on('click', ".editExistingMedia", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); document.getElementById("excontrolWrapper").removeAttribute("hidden"); document.getElementById("controlWrapper").setAttribute("hidden", true); var refreshpoints = baseLoc + "/mediasweepedit.php?model=" + delModelId + "&version=" + delVersionId + "&sweep=" + delSweepId; $("#excontrolWrapper").load(refreshpoints); }); $(document).on('click', ".editExistingCode", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); document.getElementById("excontrolWrapper").removeAttribute("hidden"); document.getElementById("controlWrapper").setAttribute("hidden", true); var refreshpoints = baseLoc + "/codesweepedit.php?model=" + delModelId + "&version=" + delVersionId + "&sweep=" + delSweepId; $("#excontrolWrapper").load(refreshpoints); }); $(document).on('click', ".editExistingNav", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); document.getElementById("excontrolWrapper").removeAttribute("hidden"); document.getElementById("controlWrapper").setAttribute("hidden", true); var refreshpoints = baseLoc + "/navsweepedit.php?model=" + delModelId + "&version=" + delVersionId + "&sweep=" + delSweepId; $("#excontrolWrapper").load(refreshpoints); }); $(document).on('click', ".deleteExistingMedia", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', baseLoc + '/mediasweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function() { if (delrequest.readyState === 4) { if (delrequest.status === 200) { document.getElementById("excontrolWrapper").setAttribute("hidden", true); document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); $(".ssMsg").load(baseLoc + "/smessage.php"); var refreshpoints = baseLoc + "/currentmediapoints.php?model=" + delModelId + "&version=" + delVersionId; $("#existingMediaRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); $(document).on('click', ".deleteExistingCode", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', baseLoc + '/codesweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function() { if (delrequest.readyState === 4) { if (delrequest.status === 200) { document.getElementById("excontrolWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); $(".ssMsg").load(baseLoc + "/smessage.php"); var refreshpoints = baseLoc + "/currentcodepoints.php?model=" + delModelId + "&version=" + delVersionId; $("#existingCodeRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); $(document).on('click', ".deleteExistingVid", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', baseLoc + '/videosweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function() { if (delrequest.readyState === 4) { if (delrequest.status === 200) { document.getElementById("excontrolWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); $(".ssMsg").load(baseLoc + "/smessage.php"); var refreshpoints = baseLoc + "/currentvidpoints.php?model=" + delModelId + "&version=" + delVersionId; setTimeout(function() { $("#existingVidRow").load(refreshpoints); document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); $(document).on('click', ".deleteExistingNav", function() { var delSweepId = ($(this).attr('data-swe')); var delModelId = ($(this).attr('data-mod')); var delVersionId = ($(this).attr('data-ver')); var delData = new FormData(); delData.append('sweep', delSweepId); delData.append('model', delModelId); delData.append('version', delVersionId); var delrequest = new XMLHttpRequest(); delrequest.open('POST', baseLoc + '/navsweepdelete.php'); delrequest.send(delData); delrequest.onreadystatechange = function() { if (delrequest.readyState === 4) { if (delrequest.status === 200) { document.getElementById("excontrolWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); $(".ssMsg").load(baseLoc + "/smessage.php"); var refreshpoints = baseLoc + "/currentnavpoints.php?model=" + delModelId + "&version=" + delVersionId; $("#existingNavRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); $(document).on('click', "#navSubmit", function() { var formData = new FormData(); formData.append('navtext', document.getElementById('navTagTxt').value); formData.append('navval', document.getElementById('navTagValue').value); formData.append('navdesc', document.getElementById('navDesc').value); formData.append('navext', document.getElementById('navExt').checked); formData.append('model', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('sweep', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { formData.append('sweep', window.tag); } if (window.type == "tag") { formData.append('rotation', "tag_unused"); console.log("VAL" + document.getElementById('navSwId').value); if (document.getElementById('navSwId').value == "") { formData.append('tagsweepval', JSON.stringify(currentSweepArray)); } else { formData.append('tagsweepval', document.getElementById('navSwId').value); } var translatetag = window.tag; } else { formData.append('rotation', window.rotation); formData.append('tagsweepval', "sweep unused"); } var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagnavupload.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; fetch(baseLoc + '/translatedelete.php?model=' + document.getElementById('editmodel').value + '&version=' + document.getElementById('version').value + '&tagid=' + translatetag) console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); var refreshpoints = baseLoc + "/currentnavpoints.php?model=" + editmodel + "&version=" + version; $("#existingNavRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); var exformData = new FormData(); exformData.append('editmodel', document.getElementById('editmodel').value); exformData.append('version', document.getElementById('version').value); exformData.append('type', "nav"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { exformData.append('sweep', lookup[realtagPos + 1]); } else { exformData.append('sweep', window.tag); } var exrequest = new XMLHttpRequest(); exrequest.open('POST', baseLoc + '/deleteexistingonchange.php'); exrequest.setRequestHeader("Cache-Control", "no-cache"); exrequest.send(exformData); exrequest.onreadystatechange = function() { if (exrequest.readyState === 4) { if (exrequest.status === 200) { console.log("Existing Media Deleted"); window.tag = null; } } } } } }; }); $(document).on('click', "#mmSubmit", function() { var mmformData = new FormData(); mmformData.append('mmLink', document.getElementById('mmLink').value); mmformData.append('mmTitle', document.getElementById('mmTitle').value); mmformData.append('mmType', document.getElementById("360Image").value); mmformData.append('mmButton', document.getElementById('mmButton').value); mmformData.append('css', document.getElementById('mmCss').value); mmformData.append('model', document.getElementById('editmodel').value); mmformData.append('version', document.getElementById('version').value); mmformData.append('title', document.getElementById('title').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { mmformData.append('sweep', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { mmformData.append('sweep', window.tag); var translatetag = window.tag; } if (window.type == "tag") { mmformData.append('rotation', "tag_unused"); } else { mmformData.append('rotation', window.rotation); } var mmrequest = new XMLHttpRequest(); mmrequest.open('POST', baseLoc + '/eminsert.php'); mmrequest.setRequestHeader("Cache-Control", "no-cache"); mmrequest.send(mmformData); mmrequest.onreadystatechange = function() { if (mmrequest.readyState === 4) { if (mmrequest.status === 200) { console.log("Database Updated"); fetch(baseLoc + '/translatedelete.php?model=' + document.getElementById('editmodel').value + '&version=' + document.getElementById('version').value + '&tagid=' + translatetag) $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementById('mmTitle').value = ''; document.getElementById('mmButton').value = ''; document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; var refreshpoints = baseLoc + "/currentmediapoints.php?model=" + editmodel + "&version=" + version; $("#existingMediaRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); var exformData = new FormData(); exformData.append('editmodel', document.getElementById('editmodel').value); exformData.append('version', document.getElementById('version').value); exformData.append('type', "media"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { exformData.append('sweep', lookup[realtagPos + 1]); } else { exformData.append('sweep', window.tag); } var exrequest = new XMLHttpRequest(); exrequest.open('POST', baseLoc + '/deleteexistingonchange.php'); exrequest.setRequestHeader("Cache-Control", "no-cache"); exrequest.send(exformData); exrequest.onreadystatechange = function() { if (exrequest.readyState === 4) { if (exrequest.status === 200) { console.log("Existing Media Deleted"); window.tag = null; } } } } } }; }); $(document).on('click', "#defaultSubmit", function() { var dfformData = new FormData(); dfformData.append('mmLink', document.getElementById('dfLink').value); dfformData.append('mmTitle', document.getElementById('dfTitle').value); dfformData.append('mmType', document.getElementById("dfType").value); dfformData.append('mmButton', document.getElementById('dfButton').value); dfformData.append('css', ""); dfformData.append('model', document.getElementById('editmodel').value); dfformData.append('version', document.getElementById('version').value); dfformData.append('title', document.getElementById('title').value); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { dfformData.append('sweep', lookup[realtagPos + 1]); var translatetag = lookup[realtagPos + 1]; } else { dfformData.append('sweep', window.tag); var translatetag = window.tag; } if (window.type == "tag") { dfformData.append('rotation', "tag_unused"); } else { dfformData.append('rotation', window.rotation); } var dfrequest = new XMLHttpRequest(); dfrequest.open('POST', baseLoc + '/eminsert.php'); dfrequest.setRequestHeader("Cache-Control", "no-cache"); dfrequest.send(dfformData); dfrequest.onreadystatechange = function() { if (dfrequest.readyState === 4) { if (dfrequest.status === 200) { fetch(baseLoc + '/translatedelete.php?model=' + document.getElementById('editmodel').value + '&version=' + document.getElementById('version').value + '&tagid=' + translatetag) console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementById('dfTitle').value = ''; document.getElementById('dfButton').value = ''; document.getElementById('dfLink').value = ''; document.getElementById('dfType').value = ''; document.getElementById("defaultcontrols").setAttribute("hidden", true); document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; var refreshpoints = baseLoc + "/currentmediapoints.php?model=" + editmodel + "&version=" + version; $("#existingMediaRow").load(refreshpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); var exformData = new FormData(); exformData.append('editmodel', document.getElementById('editmodel').value); exformData.append('version', document.getElementById('version').value); exformData.append('type', "media"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { exformData.append('sweep', lookup[realtagPos + 1]); } else { exformData.append('sweep', window.tag); } var exrequest = new XMLHttpRequest(); exrequest.open('POST', baseLoc + '/deleteexistingonchange.php'); exrequest.setRequestHeader("Cache-Control", "no-cache"); exrequest.send(exformData); exrequest.onreadystatechange = function() { if (exrequest.readyState === 4) { if (exrequest.status === 200) { console.log("Existing Media Deleted"); window.tag = null; } } } } } }; }); $(document).on('change', "#custom_intro", function() { var checkbox = document.getElementById("custom_intro") if (checkbox.checked == true) { document.getElementById("intro_bgDiv").removeAttribute("hidden"); document.getElementById("intro_subtitle").removeAttribute("hidden"); document.getElementById("remove_line").removeAttribute("hidden"); document.getElementById("delay_background").removeAttribute("hidden"); } else { document.getElementById("intro_bgDiv").setAttribute("hidden", true); document.getElementById("intro_subtitle").setAttribute("hidden", true); document.getElementById("remove_line").setAttribute("hidden", true); document.getElementById("delay_background").setAttribute("hidden", true); } }); $(document).on('change', "#prox_tags", function() { var checkbox = document.getElementById("prox_tags") if (checkbox.checked == true) { document.getElementById("pRadius").removeAttribute("hidden"); } else { document.getElementById("pRadius").setAttribute("hidden", true); } }); $(document).on('click', "#tagimport", function() { const input = document.createElement('input'); input.type = 'file'; let file; input.onchange = e => { file = e.target.files[0]; importTagFile(file); } setTimeout(() => { input.click(); }, 100); }) function importSuccess() { alert("IMPORT COMPLETE - REFRESH PAGE TO VIEW"); } function importTagFile(file) { var items = 0; if (file.type === "application/json") { const reader = new FileReader(); reader.readAsText(file); reader.addEventListener('load', e => { const content = e.target.result; tags = JSON.parse(content); tags.forEach(tag => { var tagAddformData = new FormData(); tagAddformData.append('tagid', tag.sid); tagAddformData.append('tagx', tag.anchorPosition.x); tagAddformData.append('tagy', tag.anchorPosition.y); tagAddformData.append('tagz', tag.anchorPosition.z); tagAddformData.append('stemx', tag.stemVector.x); tagAddformData.append('stemy', tag.stemVector.y); tagAddformData.append('stemz', tag.stemVector.z); tagAddformData.append('editmodel', document.getElementById('editmodel').value); tagAddformData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tagadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(tagAddformData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Tag Positions Imported"); } } } var formData = new FormData(); formData.append('master_type', "tag"); var tagcolor = cssFg; if (tagcolor.charAt(0) == "#") { var adaptedtagcolor = tagcolor.substring(1, tagcolor.length); } else { var adaptedtagcolor = tagcolor; } formData.append('tagcolor', adaptedtagcolor); var tagbg = cssBg; if (tagbg.charAt(0) == "#") { var adaptedtagbg = tagbg.substring(1, tagbg.length); } else { var adaptedtagbg = tagbg; } formData.append('tagbackground', adaptedtagbg); formData.append('tagimage', 'info'); formData.append('tagaction', "default"); formData.append('defact', "default"); formData.append('tagid', tag.sid); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var request2 = new XMLHttpRequest(); request2.open('POST', baseLoc + '/tagupdate.php'); request2.setRequestHeader("Cache-Control", "no-cache"); request2.send(formData); request2.onreadystatechange = function() { if (request2.readyState === 4) { if (request2.status === 200) { console.log("Tag Secondary Info Imported"); } } } var dfformData = new FormData(); dfformData.append('mmLink', tag.mediaSrc); dfformData.append('mmTitle', tag.label); var tagType = ""; if (tag.mediaType == "mattertag.media.video") { tagType = "VIDEO" } if (tag.mediaType == "mattertag.media.photo") { tagType = "PHOTO" } if (tag.mediaType == "mattertag.media.rich") { tagType = "RICH" } if (tag.mediaType == "mattertag.media.none") { tagType = "NONE" } dfformData.append('mmType', tagType); dfformData.append('mmButton', tag.description); dfformData.append('css', ""); dfformData.append('model', document.getElementById('editmodel').value); dfformData.append('version', document.getElementById('version').value); dfformData.append('title', document.getElementById('title').value); dfformData.append('sweep', tag.sid); dfformData.append('rotation', "tag_unused"); var dfrequest = new XMLHttpRequest(); dfrequest.open('POST', baseLoc + '/eminsert.php'); dfrequest.setRequestHeader("Cache-Control", "no-cache"); dfrequest.send(dfformData); dfrequest.onreadystatechange = function() { if (dfrequest.readyState === 4) { if (dfrequest.status === 200) { items++; console.log("Tag Import Completed"); } } }; if (items === tags.length) { importSuccess(); } }) }); } else { window.alert("Please select a .json filetype"); } } $(document).on('click', "#tagexport", function() {}) $(document).on('click', "#cfSubmit", function() { var formData = new FormData(); formData.append('model', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var enableCf = document.getElementById("cf_init").checked; if (enableCf == true) { formData.append('cf_init', "1"); } else { formData.append('cf_init', "0"); } formData.append('cf_delay', document.getElementById('cf_delay').value); formData.append('cf_email', document.getElementById('cf_email').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/dbupdatecontactform.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); function submitData(submitType, formData) { if (submitType == "bgm" || submitType == "css" || submitType == "access" || submitType == "launch" || submitType == "security" || submitType == "theme" || submitType == "tag" || submitType == "sweep") { formData.append('model', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/dbupdatelogo.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } } }; function submitUrlData(submitType, urlParamFormData) { if (submitType == "access" || submitType == "launch" || submitType == "ui" || submitType == "hlgt") { var urlrequest = new XMLHttpRequest(); console.log("URLPARAMINIT") urlParamFormData.append('model', document.getElementById('editmodel').value); urlParamFormData.append('version', document.getElementById('version').value); urlrequest.open('POST', baseLoc + '/dbupdateurls.php'); urlrequest.setRequestHeader("Cache-Control", "no-cache"); urlrequest.send(urlParamFormData); if (submitType == "ui" || submitType == "hlgt") { urlrequest.onreadystatechange = function() { if (urlrequest.readyState === 4) { if (urlrequest.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } } } }; $(document).on('click', "#cssSubmit", function() { var type = "css"; var formData = new FormData(); formData.append('requestType', type); formData.append('logo', document.getElementById("logo").value); formData.append('logolink', document.getElementById("logolink").value); formData.append('providerlogo', document.getElementById("providerlogo").value); formData.append('providerlogolink', document.getElementById("providerlogolink").value); var hlInput = document.getElementById("hl_accent").checked; if (hlInput == true) { formData.append('hl_accent', "1"); } else { formData.append('hl_accent', "0"); } var npInput = document.getElementById("npenable").checked; if (npInput == true) { formData.append('nadirpatch', "1"); } else { formData.append('nadirpatch', "0"); } var npImg = document.getElementById("nplogo").value; formData.append('nadirpatchimg', npImg); var dhbgInput = document.getElementById("dhbgenable").checked; if (dhbgInput == true) { formData.append('dhbg', "1"); } else { formData.append('dhbg', "0"); } var dhbgc1 = document.getElementById("dhbgc1").value; if (dhbgc1.charAt(0) == "#") { var adapteddh1color = dhbgc1.substring(1, dhbgc1.length); } else { var adapteddh1color = dhbgc1; } formData.append('dhbgc1', adapteddh1color); var dhbgc2 = document.getElementById("dhbgc2").value; if (dhbgc2.charAt(0) == "#") { var adapteddh2color = dhbgc2.substring(1, dhbgc2.length); } else { var adapteddh2color = dhbgc2; } formData.append('dhbgc2', adapteddh2color); var hlcolor = document.getElementById("cssHlReel").value; if (hlcolor.charAt(0) == "#") { var adaptedhlcolor = hlcolor.substring(1, hlcolor.length); } else { var adaptedhlcolor = hlcolor; } formData.append('css_hl', adaptedhlcolor); var cssbcolor = document.getElementById("cssBackground").value; if (cssbcolor.charAt(0) == "#") { var adaptedcssbcolor = cssbcolor.substring(1, cssbcolor.length); } else { var adaptedcssbcolor = cssbcolor; } formData.append('cssb', adaptedcssbcolor); var cssfcolor = document.getElementById("cssForeground").value; if (cssfcolor.charAt(0) == "#") { var adaptedcssfcolor = cssfcolor.substring(1, cssfcolor.length); } else { var adaptedcssfcolor = cssfcolor; } formData.append('cssf', adaptedcssfcolor); var csstcolor = document.getElementById("cssTxt").value; if (csstcolor.charAt(0) == "#") { var adaptedcsstcolor = csstcolor.substring(1, csstcolor.length); } else { var adaptedcsstcolor = csstcolor } formData.append('csst', adaptedcsstcolor); submitData(type, formData); }); $(document).on('click', "#secSubmit", function() { var type = "security"; var formData = new FormData(); formData.append('requestType', type); formData.append('embedWhiteList', document.getElementById("embedWhiteList").value); var slInput = document.getElementById("selflimit").checked; if (slInput == true) { formData.append('selflimit', "1"); } else { formData.append('selflimit', "0"); } submitData(type, formData); }); $(document).on('click', "#audioBgLinkSubmit", function() { var type = "bgm"; var formData = new FormData(); formData.append('requestType', type); formData.append('audiobg_file', document.getElementById("audioBgmLink").value); submitData(type, formData); }); $(document).on('click', "#accessibilitySubmit", function() { var type = "access"; var formData = new FormData(); formData.append('requestType', type); formData.append('baselanguage', document.getElementById("baselanguage").value); var tInput = document.getElementById("translation").checked; if (tInput == true) { formData.append('translation', "1"); } else { formData.append('translation', "0"); } var vcInput = document.getElementById("voiceControl").checked; if (vcInput == true) { formData.append('voiceControl', "1"); } else { formData.append('voiceControl', "0"); } var hiInput = document.getElementById("hearingImpairedSelect").checked; if (hiInput == true) { formData.append('hearingimpaired', "1"); } else { formData.append('hearingimpaired', "0"); } var urlParamFormData = new FormData(); urlParamFormData.append('requestType', type); urlParamFormData.append('mpbaselanguage', document.getElementById("mpbaselanguage").value); submitData(type, formData); submitUrlData(type, urlParamFormData); }); $(document).on('click', "#fpSubmit", function() { var type = "frontpage"; var formData = new FormData(); formData.append('requestType', type); formData.append('embedWhiteList', document.getElementById("embedWhiteList").value); var slInput = document.getElementById("selflimit").checked; if (slInput == true) { formData.append('selflimit', "1"); } else { formData.append('selflimit', "0"); } submitData(type, formData); }); $(document).on('click', "#tagGlobalSubmit", function() { var type = "tag"; var tagradioversion = ""; var tagversion = document.getElementById("tagsVersion").value; var formData = new FormData(); formData.append("requestType", "tag"); if ($('input[name="tagChoice"]:checked').length > 0) { console.log("HELLO" + document.querySelector('input[name="tagChoice"]:checked').value); if(document.querySelector('input[name="tagChoice"]:checked').value == "0") { tagradioversion = "0"; } else { tagradioversion = "1"; } } else { tagradioversion = "1"; } console.log(tagradioversion) formData.append("tagversion", tagradioversion); var ptInput = document.getElementById("prox_tags").checked; if (ptInput == true) { formData.append('prox_tags', "1"); } else { formData.append('prox_tags', "0"); } var tagsdhInput = document.getElementById("tagsdh").checked; if (tagsdhInput == true) { formData.append('tagsdh', "1"); } else { formData.append('tagsdh', "0"); } var tagstemInput = document.getElementById("tagStems").checked; if (tagstemInput == true) { formData.append('stems', "1"); } else { formData.append('stems', "0"); } var tdInput = document.getElementById("tagsdisable").checked; if (tdInput == true) { formData.append('tagsdisable', "1"); } else { formData.append('tagsdisable', "0"); } var atdInput = document.getElementById("c3dtagsdisable").checked; if (atdInput == true) { formData.append('addedtagsdisable', "1"); } else { formData.append('addedtagsdisable', "0"); } formData.append('prox_radius', document.getElementById("prox_radius").value); submitData(type, formData); }) $(document).on('click', "#sweepGlobalSubmit", function() { var type = "sweep"; var formData = new FormData(); formData.append("requestType", "sweep"); console.log(colorOrUrl); if (typeof colorOrUrl != "undefined") { var puckcolor = document.getElementById("customSweepColor").value; if (puckcolor.charAt(0) == "#") { var adaptedpuckcolor = puckcolor.substring(1, puckcolor.length); } else { var adaptedpuckcolor = puckcolor; } if (colorOrUrl == "color") { formData.append('custompuck', adaptedpuckcolor); } else { formData.append('custompuck', document.getElementById("customSweepUrl").value); } } else { formData.append('custompuck', ""); } var mediaPuckInput = document.getElementById("mediaPucks").checked; if (mediaPuckInput == true) { formData.append('mediapuck', "1"); } else { formData.append('mediapuck', "0"); } var pmInput = document.getElementById("persistant_media").checked; if (pmInput == true) { formData.append('persistantmedia', "1"); } else { formData.append('persistantmedia', "0"); } var puckInput = document.getElementById("pucks").checked; if (puckInput == true) { formData.append('pucks', "1"); } else { formData.append('pucks', "0"); } submitData(type, formData); }) $(document).on('click', "#launchSubmit", function() { var type = "launch"; var themeformData = new FormData(); themeformData.append('requestType', type); themeformData.append('version', document.getElementById('version').value); var fsInput = document.getElementById("goFs").checked; if (fsInput == true) { themeformData.append('fs', "1"); } else { themeformData.append('fs', "0"); } var urlParamFormData = new FormData(); urlParamFormData.append('requestType', type); var ciInput = document.getElementById("apSel").checked; if (ciInput == true) { urlParamFormData.append('play', "1"); } else { urlParamFormData.append('play', ""); } var cidInput = document.getElementById("qsSel").checked; if (cidInput == true) { urlParamFormData.append('qs', "1"); } else { urlParamFormData.append('qs', "0"); } urlParamFormData.append("help", $("#shSel").val()); urlParamFormData.append("sr", $("#srSel").val()); urlParamFormData.append("ss", $("#ssSel").val()); submitData(type, themeformData); submitUrlData(type, urlParamFormData); }); $(document).on('click', "#themeSubmit", function() { var type = "theme"; var themeformData = new FormData(); themeformData.append('requestType', type); themeformData.append('version', document.getElementById('version').value); themeformData.append('title', document.getElementById('mytitle').value); var ciInput = document.getElementById("custom_intro").checked; if (ciInput == true) { themeformData.append('custom_intro', "1"); } else { themeformData.append('custom_intro', "0"); } var cidInput = document.getElementById("bg_delay").checked; if (cidInput == true) { console.log("DELAY TRUE") themeformData.append('bg_delay', "1"); } else { console.log("DELAY FALSE") themeformData.append('bg_delay', "0"); } var lrInput = document.getElementById("line_remove").checked; if (lrInput == true) { themeformData.append('line_remove', "1"); } else { themeformData.append('line_remove', "0"); } themeformData.append('intro_sub', document.getElementById("intro_sub").value); themeformData.append('intro_bg', document.getElementById("intro_bg").value); submitData(type, themeformData); }); $(document).on('click', "#gthrSubmit", function() { var type = "hlgt"; var themeformData = null; var urlParamFormData = new FormData(); urlParamFormData.append('requestType', type); var gtInput = document.getElementById("gtSel").checked; if (gtInput == true) { urlParamFormData.append('gt', "0"); } else { urlParamFormData.append('gt', ""); } urlParamFormData.append('ts', document.getElementById("tsSel").value); urlParamFormData.append('tourcta', document.getElementById("tourctaSel").value); var kbInput = document.getElementById("kbSel").checked; if (kbInput == true) { urlParamFormData.append('fp', "0"); } else { urlParamFormData.append('fp', ""); } var lpInput = document.getElementById("lpSel").checked; if (lpInput == true) { urlParamFormData.append('lp', "1"); } else { urlParamFormData.append('lp', ""); } var hrInput = document.getElementById("hrSel").checked; if (hrInput == true) { urlParamFormData.append('hr', "0"); } else { urlParamFormData.append('hr', ""); } urlParamFormData.append('hl', document.getElementById("hlSel").value); submitData(type, themeformData); submitUrlData(type, urlParamFormData); }); $(document).on('click', "#uiSubmit", function() { var type = "ui"; var themeformData = null; var urlParamFormData = new FormData(); urlParamFormData.append('requestType', type); var dhInput = document.getElementById("dhSel").checked; if (dhInput == true) { urlParamFormData.append('dh', "0"); } else { urlParamFormData.append('dh', ""); } var fpInput = document.getElementById("fpSel").checked; if (fpInput == true) { urlParamFormData.append('fp', "0"); } else { urlParamFormData.append('fp', ""); } var fInput = document.getElementById("fSel").checked; if (fInput == true) { urlParamFormData.append('f', "0"); } else { urlParamFormData.append('f', ""); } var sdInput = document.getElementById("searchdisable").checked; if (sdInput == true) { urlParamFormData.append('search', "1"); } else { urlParamFormData.append('search', "0"); } urlParamFormData.append('sh', document.getElementById("shSel").value); var brandInput = document.getElementById("brandSel").checked; if (brandInput == true) { urlParamFormData.append('brand', "0"); } else { urlParamFormData.append('brand', ""); } var vrInput = document.getElementById("vrSel").checked; if (vrInput == true) { urlParamFormData.append('vr', "0"); } else { urlParamFormData.append('vr', ""); } var whInput = document.getElementById("whSel").checked; if (whInput == true) { urlParamFormData.append('wh', "0"); } else { urlParamFormData.append('wh', ""); } var nozoomInput = document.getElementById("nozoomSel").checked; if (brandInput == true) { urlParamFormData.append('nozoom', "1"); } else { urlParamFormData.append('nozoom', ""); } submitData(type, themeformData); submitUrlData(type, urlParamFormData); }); $(document).on('click', "#customsweepsubmit", function() { var sweepFormData = new FormData(); sweepFormData.append('model', document.getElementById('editmodel').value); sweepFormData.append('version', document.getElementById('version').value); sweepFormData.append('sweep', document.getElementById("sweep_id").value); if (typeof colorOrUrl != "undefined") { var puckcolor = document.getElementById("customSweepColor").value; if (puckcolor.charAt(0) == "#") { var adaptedpuckcolor = puckcolor.substring(1, puckcolor.length); } else { var adaptedpuckcolor = puckcolor; } var bgcolor = document.getElementById("iconBackground").value; if (bgcolor.charAt(0) == "#") { var adaptedbgcolor = bgcolor.substring(1, bgcolor.length); } else { var adaptedbgcolor = bgcolor; } var fgcolor = document.getElementById("iconColor").value; if (fgcolor.charAt(0) == "#") { var adaptedfgcolor = fgcolor.substring(1, fgcolor.length); } else { var adaptedfgcolor = fgcolor; } if (colorOrUrl == "color") { sweepFormData.append('iconbg', ""); sweepFormData.append('iconfg', ""); sweepFormData.append('custompuck', adaptedpuckcolor); } else { sweepFormData.append('iconbg', adaptedbgcolor); sweepFormData.append('iconfg', adaptedfgcolor); var typeVal = document.getElementById("tagType").value if (typeVal.substring(0, 5) == "icon_") { typeVal = document.getElementById("tagType").value } else { typeVal = "icon_" + document.getElementById("tagType").value } sweepFormData.append('custompuck', typeVal); } } else { sweepFormData.append('custompuck', ""); } var sweepHasTag = document.getElementById("sweepHasTag").checked; if (sweepHasTag == true) { sweepFormData.append('sweepHasTag', "1"); } else { sweepFormData.append('sweepHasTag', "0"); } var sweepIsCustom = document.getElementById("sweepIsCustom").checked; if (sweepIsCustom == true) { sweepFormData.append('sweepIsCustom', "1"); } else { sweepFormData.append('sweepIsCustom', "0"); } sweepFormData.append('title', document.getElementById("sweepTagTitle").value); sweepFormData.append('desc', document.getElementById("sweepTagDesc").value); sweepFormData.append('media', document.getElementById("sweepTagMedia").value); var sweeprequest = new XMLHttpRequest(); sweeprequest.open('POST', baseLoc + '/dbupdatecustomsweep.php'); sweeprequest.setRequestHeader("Cache-Control", "no-cache"); sweeprequest.send(sweepFormData); sweeprequest.onreadystatechange = function() { if (sweeprequest.readyState === 4) { if (sweeprequest.status === 200) { document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } }; }); $(document).on("click", ".mediaLibDeleteButton", function() { var fullpath = $(this).attr("data-media"); var source = $(this).attr("data-src"); var formData = new FormData(); formData.append('file', fullpath); var ext = fullpath.substring(fullpath.length -3, fullpath.length); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/indexnewmymediadelete.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); setTimeout(function () { if (ext == "glb") { $("#mymodels").load(baseLoc + "/indexnewmymedia3d.php?pagesrc=modelpage&type=all"); } else { if (source == "freq") { $("#mymodels").load(baseLoc + "/indexnewmymediafreq.php?pagesrc=modelpage&type=all"); } if (source == "this") { $("#mymodels").load(baseLoc + "/indexnewmymediatm.php?model=" + editmodel + "&version=" + version + "&pagesrc=modelpage&type=all"); } if (source == "all") { $("#mymodels").load(baseLoc + "/indexnewmymediaam.php?pagesrc=modelpage&type=all"); } } },500); } } } }); function closeFrame() { if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { $("#audioContainer").removeClass("blurry"); $("#showcase_iframe").removeClass("blurry"); if ($('.marquee span').length > 0) { setTimeout(function() { $('.marquee span').html(""); $('.marquee span').css("animation-play-state", "paused"); $('.marquee span').css("webkitAnimation-play-state", "paused"); if (ppInMpControls == "0") { document.getElementById("audioPlayPause").style.display = "none"; } else { iframe.contentWindow.document.getElementById("audioPlayPause").style.display = "none"; } console.log("HIDDEN CLOSEFRAME") $("#apptranscription").attr("hidden", true); }, 500); } } if (window.typeofaudio != "SWEEP") { if (typeof gainNode2 !== 'undefined') { gainNode2.gain.setTargetAtTime(0.001, bgcontext.currentTime, 0.6); } if (typeof gainNode3 !== 'undefined') { gainNode3.gain.setTargetAtTime(0.001, bgcontext.currentTime, 0.6); } if (typeof gainNode !== 'undefined') { gainNode.gain.setTargetAtTime(0.3, bgcontext.currentTime, 1); } } if ($("#mediaframe")) { document.getElementById("mediaframe").parentNode.removeChild(document.getElementById("mediaframe")); } $('#mediaholder').addClass('hidden').removeClass('showing'); $('#popupframe').addClass('hidden').removeClass('showing'); if ($('#popupframe').hasClass('portrait')) { $('#popupframe').removeClass("portrait"); } if ($('#mediaholder').hasClass('portrait')) { $('#mediaholder').removeClass("portrait"); } if ($('#mediaholder').hasClass('square')) { $('#mediaholder').removeClass("square"); } if ($('#popupframe').hasClass('hidden')) { if (typeof audio !== "undefined" && window.typeofaudio != "SWEEP") { audio.pause(); } } if (annyang) { if (os != "Mac OS" && os != "iOS" && os != "Android" && document.getElementById('voiceControl').value == "1") { annyang.start(); } } } try { if ($("#vidrecord").length > 0) { console.log($("#vidrecord")); const mediaSource = new MediaSource(); mediaSource.addEventListener('sourceopen', handleSourceOpen, false); } let videoRecorder; let recordedBlobs; let sourceBuffer; const errorMsgElement = document.querySelector('span#errorMsg'); const recordedVideo = document.querySelector('video#recorded'); if ($("#vidrecord")) { $(document).on('click', "#vidrecord", function() { vidRecordButton = document.getElementById("vidrecord"); if (vidRecordButton.innerText === 'RECORD') { startVidRecording(); } else { if (vidRecordButton.innerText === 'STOP') { stopVidRecording(); } } }); } function buildBlob(recordedBlobs) { var blob = new Blob(recordedBlobs, { type: 'video/webm' }); var blobUrl = URL.createObjectURL(blob); const vidlist = document.getElementById('vidrecordings'); const li = document.createElement('li'); vidRecordButton.setAttribute('hidden', true); const vidUpload = document.createElement('BUTTON'); vidUpload.className = "inputListButton"; vidUpload.innerHTML = "UPLOAD"; vidUpload.style.marginLeft = "-10px"; vidUpload.style.marginRight = "5px"; const vidDeleteButton = document.createElement('BUTTON'); vidDeleteButton.className = "inputListButton"; vidDeleteButton.innerHTML = "DISCARD"; vidDeleteButton.style.marginLeft = "5px"; li.appendChild(vidUpload); li.appendChild(vidDeleteButton); vidlist.appendChild(li); vidDeleteButton.addEventListener('click', async () => { blob = null; vidtbnavDiv.setAttribute('hidden', true); vidUpload.setAttribute('hidden', true); vidDeleteButton.setAttribute('hidden', true); document.getElementById("getCam").getAttribute('hidden'); document.getElementById("getCam").removeAttribute('hidden'); document.getElementById("getScreen").getAttribute('hidden'); document.getElementById("getScreen").removeAttribute('hidden'); document.getElementById("vrecord").removeAttribute("hidden"); document.getElementById("linkVideo").removeAttribute("hidden"); document.getElementById("noChangeVideo").removeAttribute("hidden"); $(".hPara").removeAttr("hidden"); document.getElementById("linktoVideoUrl").removeAttribute("hidden"); clearTimeout(vidtimerId); vidtimerId = null; }); vidUpload.addEventListener('click', async () => { vidtbnavDiv.setAttribute('hidden', true); vidDeleteButton.setAttribute('hidden', true); vidUpload.innerText = 'UPLOADING'; fetch(baseLoc + '/blobhandle.php', { method: "POST", body: blob }).then(response => { if (response.ok) return response; console.log("Video Handled in Memory"); }).then(response => { var blobData = new FormData(); blobData.append('dirpath', document.getElementById('directoryName').value); blobData.append('editmodel', document.getElementById('editmodel').value); blobData.append('version', document.getElementById('version').value); blobData.append('blobUrl', blobUrl); var blobrequest = new XMLHttpRequest(); blobrequest.open('POST', baseLoc + '/vidupload.php'); blobrequest.send(blobData); console.log("Video Uploaded"); blobrequest.onreadystatechange = function() { if (blobrequest.readyState === 4) { if (blobrequest.status === 200) { vidUpload.setAttribute('hidden', true); vidRecordButton.getAttribute('hidden'); vidRecordButton.removeAttribute('hidden'); var formData = new FormData(); formData.append('dirpath', document.getElementById('directoryName').value); formData.append('editmodel', document.getElementById('editmodel').value); formData.append('version', document.getElementById('version').value); formData.append('title', document.getElementById('title').value); formData.append('video_title', document.getElementById('vidtitle').value); formData.append('subSelect', document.getElementById('subSelect').value); formData.append('videoSelect', document.getElementById('audioSelect').value); formData.append('voiceControl', document.getElementById('voiceControl').value); formData.append('css', document.getElementById('vidCss').value); var checkMute = document.getElementById("muteVideo").checked; if (checkMute == true) { formData.append('mutevid', "yes"); } else { formData.append('mutevid', "no"); } formData.append('accessvid', "no"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { formData.append('sweep', lookup[realtagPos + 1]); } else { formData.append('sweep', window.tag); } if (window.type == "tag") { formData.append('rotation', "tag_unused"); } else { formData.append('rotation', window.rotation); } var checkBox = document.getElementById('requirebutton'); formData.append('button', document.getElementById('vidbuttonValue').value); formData.append('transcript', document.getElementById('vidtranscriptValue').value); formData.append('note', ""); var request = new XMLHttpRequest(); request.upload.addEventListener("progress", function(evt) { if (evt.lengthComputable) { var percentComplete = evt.loaded / evt.total; console.log(percentComplete); } }, false); request.open('POST', baseLoc + '/viddbupdate.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $(".ssMsg").load(baseLoc + "/smessage.php"); document.getElementById("ssMsg").getAttribute("hidden"); document.getElementById("ssMsg").removeAttribute("hidden"); document.getElementsByTagName("li").innerHTML = ""; document.getElementById("vidbuttonValue").value = ''; document.getElementById("vidtranscriptValue").value = ''; document.getElementById('vidtitle').value = ''; $(".hPara").attr("hidden", true); $("#vrecord").attr("hidden", true); $("#linktoVideoUrl").attr("hidden", true); $("#noChangeVideo").attr("hidden", true); $("#linkVideo").attr("hidden", true); document.getElementById("gum").setAttribute("hidden", true); document.getElementById("getCam").setAttribute("hidden", true); document.getElementById("getScreen").setAttribute("hidden", true); document.getElementById("vidrecord").setAttribute("hidden", true); document.getElementById("controlWrapper").setAttribute("hidden", true); iframe.style.width = "100%"; var editmodel = document.getElementById('editmodel').value; var version = document.getElementById('version').value; stream.getTracks().forEach(function(track) { track.stop(); }); var refreshvidpoints = baseLoc + "/currentvidpoints.php?model=" + editmodel + "&version=" + version; var refreshavidpoints = baseLoc + "/currentavidpoints.php?model=" + editmodel + "&version=" + version; $("#existingaVidRow").load(refreshavidpoints); $("#existingVidRow").load(refreshvidpoints); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); console.log("Links Refreshed"); vidRecordButton.disabled = false; vidRecordButton.innerText = "RECORD"; setTimeout(() => {}, 100); var exformData = new FormData(); exformData.append('editmodel', document.getElementById('editmodel').value); exformData.append('version', document.getElementById('version').value); exformData.append('type', "video"); var realtagPos = lookup.indexOf(window.tag); if (realtagPos != -1) { exformData.append('sweep', lookup[realtagPos + 1]); } else { exformData.append('sweep', window.tag); } var exrequest = new XMLHttpRequest(); exrequest.open('POST', baseLoc + '/deleteexistingonchange.php'); exrequest.setRequestHeader("Cache-Control", "no-cache"); exrequest.send(exformData); exrequest.onreadystatechange = function() { if (exrequest.readyState === 4) { if (exrequest.status === 200) { console.log("Existing Media Deleted"); window.tag = null; } } } } } }; } } }; }); }); console.log("Encoding complete"); } function handleSourceOpen(event) { // sourceBuffer = mediaSource.addSourceBuffer('video/webm; codecs="vp9"'); } function handleDataAvailable(event) { if (event.data && event.data.size > 0) { recordedBlobs.push(event.data); } } $(document).on('click', "#takephoto", function() { console.log("PHOTOMODE"); navigator.mediaDevices.getUserMedia({ video: { facingMode: { exact: 'environment' } } }).then(mediaStream => { const gumVideoP = document.querySelector('video#gumP'); gumVideoP.removeAttribute("hidden"); gumVideoP.srcObject = mediaStream; gumVideoP.muted = true; gumVideoP.play(); window.phototrack = mediaStream.getVideoTracks()[0]; let zoom = document.querySelector('#zoom'); const capabilities = phototrack.getCapabilities(); // Check whether zoom is supported or not. if (!capabilities.zoom) { return; } phototrack.applyConstraints({ advanced: [{ zoom: zoom.value }] }); }).catch(function(error) { console.log('takePhoto() error: ', error); }); }); $(document).on('click', "#snapshot", function() { imageCapture = new ImageCapture(phototrack); imageCapture.takePhoto().then(function(blob) { $("#gumP").attr("hidden", "true"); $("#photoFrame").removeAttr("hidden"); console.log('Took photo:', blob); photoFrame.classList.remove('hidden'); photoFrame.src = URL.createObjectURL(blob); myPhoto = URL.createObjectURL(blob); }) }) function startVidRecording() { vidRecordButton.innerText = 'STOP'; console.log("recording"); recordedBlobs = []; let options = { mimeType: 'video/webm; codecs=vp9' }; try { videoRecorder = new MediaRecorder(window.stream, options); } catch (e) { console.error('Exception while creating MediaRecorder:', e); errorMsgElement.innerHTML = `Exception while creating MediaRecorder: ${JSON.stringify(e)}`; return; } videoRecorder.onstop = (event) => { vidRecordButton.disabled = true; vidtbnavDiv.removeAttribute("hidden"); console.log('Recorder stopped: ', event); buildBlob(recordedBlobs); }; videoRecorder.ondataavailable = handleDataAvailable; videoRecorder.start(10); // collect 10ms of data var vidtimeLeft = 90; clockelem = document.getElementById('vidcountdown'); vidtimerId = setInterval(countdown, 1000); clockelem.getAttribute("hidden"); clockelem.removeAttribute("hidden"); function countdown() { if (vidtimeLeft == -1) { clearTimeout(vidtimerId); vidtimerId = null; vidRecordButton.click(); clockelem.setAttribute("hidden", true);; } else { if (videoRecorder.state === 'inactive') { clearTimeout(vidtimerId); clockelem.setAttribute("hidden", true); vidtimerId = null; } else { clockelem.innerHTML = vidtimeLeft + ' seconds remaining'; vidtimeLeft--; } } } console.log('MediaRecorder started', videoRecorder); } function stopVidRecording() { videoRecorder.stop(); } function handleSuccess(stream) { vidRecordButton.disabled = false; window.stream = stream; const gumVideo = document.querySelector('video#gum'); gumVideo.srcObject = stream; gumVideo.muted = true; gumVideo.play(); } async function init(constraints) { try { vidRecordButton.textContext = 'RECORD'; vidRecordButton.innerText = 'RECORD'; if (recType === "camera") { stream = await navigator.mediaDevices.getUserMedia(constraints); } if (recType === "screen") { stream = await navigator.mediaDevices.getDisplayMedia(screenconstraints); } handleSuccess(stream); } catch (e) { console.error('navigator.getUserMedia error:', e); errorMsgElement.innerHTML = `navigator.getUserMedia error:${e.toString()}`; } } if ($('#getCam')) { $(document).on('click', "#getCam", async function() { document.getElementById('getCam').setAttribute("hidden", true); document.getElementById('getScreen').setAttribute("hidden", true); recType = "camera"; $(vidrecord).removeAttr("hidden"); constraints = { audio: { echoCancellation: true, noiseSurpression: true }, video: { width: 1280, height: 720 } }; await init(constraints); }); $(document).on('click', "#getScreen", async function() { document.getElementById('getCam').setAttribute("hidden", true); document.getElementById('getScreen').setAttribute("hidden", true); recType = "screen"; $(vidrecord).removeAttr("hidden"); screenconstraints = { cursor: { exact: "none" }, video: true, audio: { echoCancellation: true, noiseSurpression: true } }; await init(screenconstraints); }); } } catch (error) { console.error(error); } $('.fullscreenreplace').on('click', function(e) { var doc = window.document; var docEl = doc.documentElement; var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen; var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen; if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) { requestFullScreen.call(docEl); } else { cancelFullScreen.call(doc); } }); $('.fullscreenreplacebottom').on('click', function(e) { var doc = window.document; var docEl = doc.documentElement; var requestFullScreen = docEl.requestFullscreen || docEl.mozRequestFullScreen || docEl.webkitRequestFullScreen || docEl.msRequestFullscreen; var cancelFullScreen = doc.exitFullscreen || doc.mozCancelFullScreen || doc.webkitExitFullscreen || doc.msExitFullscreen; if (!doc.fullscreenElement && !doc.mozFullScreenElement && !doc.webkitFullscreenElement && !doc.msFullscreenElement) { requestFullScreen.call(docEl); } else { cancelFullScreen.call(doc); } }); $('i.fas.fa-envelope').click(function() { var title = document.title; location.href = 'mailto:?subject=' + encodeURIComponent(title) + '&body=' + encodeURIComponent(title + '\n\n') + encodeURIComponent(window.location.href) + '%26utm_source%3D3'; }); $('i.fab.fa-pinterest-p').click(function() { var title = document.title; var vars = {}; window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { vars[key] = value; }); var thumb = 'https://my.matterport.com/api/v1/player/models/' + vars.m + '/thumb'; window.open('https://www.pinterest.com/pin/create/link/?url=' + encodeURIComponent(window.location.href) + '%26utm_source%3D5' + '&description=' + encodeURIComponent(title) + '&media=' + encodeURIComponent(thumb), 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fab.fa-linkedin-in').click(function() { window.open('https://www.linkedin.com/sharing/share-offsite/?url=' + encodeURIComponent(window.location.href) + '%26utm_source%3D6', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fab.fa-twitter').click(function() { var title = document.title; window.open('https://twitter.com/intent/tweet?text=Explore%20' + encodeURIComponent(title) + ' at ' + encodeURIComponent(window.location.href) + '%26utm_source%3D2', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fab.fa-facebook-f').click(function() { window.open('https://www.facebook.com/sharer.php?u=' + encodeURIComponent(window.location.href) + '%26utm_source%3D1', 'sharer', 'toolbar=0,status=0,width=640,height=480'); }); $('i.fas.fa-link').click(function() { var el = document.createElement('textarea'); el.value = window.location.href; el.setAttribute('readonly', ''); el.style.position = 'absolute'; el.style.left = '-9999px'; document.body.appendChild(el); el.select(); document.execCommand('copy'); document.body.removeChild(el); $('#share-slider div').attr('data-balloon', 'Copied!'); setTimeout(function() { $('#share-slider div').attr('data-balloon', 'Copy URL'); }, 3000); }); $(document).on('click', "#vrecord", function() { $('#getCam').removeAttr("hidden"); $('#getScreen').removeAttr("hidden"); document.getElementById("linkVideo").setAttribute("hidden", true); document.getElementById("vrecord").setAttribute("hidden", true); $(".hPara").attr("hidden", true); document.getElementById("noChangeVideo").setAttribute("hidden", true); document.getElementById("linktoVideoUrl").setAttribute("hidden", true); $('#gum').removeAttr("hidden"); }); $(document).on('click', ".tlNavDeleteButton", function() { var areyousure = confirm("Any submenu items associated with this item will be orphaned. Click 'OK' to continue or 'Cancel' to manually reassign submenu items using the 'EDIT NAV ORDER' menu item"); if (areyousure == true) { var dbIndex = $(this).parent().children()[1].innerHTML; var formData = new FormData(); formData.append('dbIndex', dbIndex); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tlnavdelete.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $("#tlNavControls").load(baseLoc + "/tlnavcontrol.php?model=" + editmodel + "&version=" + version); $(".ssMsg").load(baseLoc + "/smessage.php"); $(".ssMsg").removeAttr("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } } else {} }); $(document).on('blur', ".tlNavOrderdescription", function() { var position = $(this).parent().children()[0].innerHTML; var dbIndex = $(this).parent().children()[1].innerHTML; var description = $(this).parent().children()[2].innerHTML; var formData = new FormData(); formData.append('dbIndex', dbIndex); formData.append('position', position); formData.append('description', description); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tlnaveditorder.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $("#tlNavControls").load(baseLoc + "/tlnavcontrol.php?model=" + editmodel + "&version=" + version); $(".ssMsg").load(baseLoc + "/smessage.php"); $(".ssMsg").removeAttr("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); $(document).on('click', "#newNavSubmit", function() { var position = $("#newNavPos").val(); var description = $("#newNavDesc").val();; var formData = new FormData();; formData.append('model', editmodel); formData.append('version', version); formData.append('position', position); formData.append('description', description); var request = new XMLHttpRequest(); request.open('POST', baseLoc + '/tlnavadd.php'); request.setRequestHeader("Cache-Control", "no-cache"); request.send(formData); request.onreadystatechange = function() { if (request.readyState === 4) { if (request.status === 200) { console.log("Database Updated"); $("#tlNavControls").load(baseLoc + "/tlnavcontrol.php?model=" + editmodel + "&version=" + version); $(".ssMsg").load(baseLoc + "/smessage.php"); $(".ssMsg").removeAttr("hidden"); setTimeout(function() { document.getElementById("ssMsg").setAttribute("hidden", true); document.getElementById("ssMsg").innerHTML = ""; }, 2000); } } } }); $('.sharereplace').click(function() { if ($('#share-slider').hasClass('isOpen')) { $('#share-slider').removeClass('isOpen'); $('#share-button').removeClass('hidetooltip'); } else { $('#share-slider').addClass('isOpen'); $('#share-button').addClass('hidetooltip'); } }); $('.sharereplacebottom').click(function() { if ($('#share-slider').hasClass('isOpen')) { $('#share-slider').removeClass('isOpen'); $('#share-button').removeClass('hidetooltip'); } else { $('#share-slider').addClass('isOpen'); $('#share-button').addClass('hidetooltip'); } }); $('#menutitlecurrent').click(function() {}); $('#currentmediapages').click(function() { $("#tbvflex").removeAttr("hidden"); }); window.onload = function exit(status) { if (typeof limitSelf !== 'undefined') { if (user === 'null') { if (window.location === window.parent.location && limitSelf === "1") { alert("THIS VIRTUAL TOUR CANNOT BE VIEWED DIRECTLY"); var i; if (typeof status === 'string') { alert(status); } window.addEventListener('error', function(e) { e.preventDefault(); e.stopPropagation(); }, false); var handlers = ['copy', 'cut', 'paste', 'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll', 'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput', 'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload']; function stopPropagation(e) { e.stopPropagation(); } for (i = 0; i < handlers.length; i++) { window.addEventListener(handlers[i], function(e) { stopPropagation(e); }, true); } if (window.stop) { window.stop(); } throw ''; } } } } $('#videoframe').hover(function toggleControls() { if (this.hasAttribute("controls")) { this.removeAttribute("controls") } else { this.setAttribute("controls", "controls") } }) $('#accessvideoframe').hover(function toggleControls() { if (this.hasAttribute("controls")) { this.removeAttribute("controls") } else { this.setAttribute("controls", "controls") } }) $(".circmenu-toggle").click(function() { $(".circmenu-toggle").toggleClass('open'); $(".circmenu-round").toggleClass('open'); $(".circmenu-line").toggleClass('open'); }); $(".gtp").on('change', function() { var toursweep = ($(this).attr('data-sweep')); var model = ($(this).attr('data-model')); var version = ($(this).attr('data-version')); var rotation = ($(this).attr('data-rotation')); var position = ($(this).val()); var formData = new FormData(); formData.append('sweep_id', toursweep); formData.append('model', model); formData.append('version', version); formData.append('position', position); if (window.type == "tag") { formData.append('rotation', "tag_unused"); } else { formData.append('rotation', window.rotation); } var gtprequest = new XMLHttpRequest(); gtprequest.open('POST', baseLoc + '/gtupdatedb.php'); gtprequest.setRequestHeader("Cache-Control", "no-cache"); gtprequest.send(formData); gtprequest.onreadystatechange = function() { if (gtprequest.readyState === 4) { if (gtprequest.status === 200) { console.log("Database Updated"); } } } }); this.fullScreenMode = document.fullScreen || document.mozFullScreen || document.webkitIsFullScreen; $(document).on('mozfullscreenchange webkitfullscreenchange fullscreenchange', function() { this.fullScreenMode = !this.fullScreenMode; var fsMode = this.fullScreenMode; fsCss(fsMode); }); function updateCss() { if (mobile && !iPad) { if (document.body.clientWidth > document.body.clientHeight) { $("#loading-subheader").html("PLEASE SWITCH TO PORTRAIT MODE TO START YOUR EXPERIENCE"); } else { $("#loading-subheader").html(subheader); } } var sid = $("#sweepInfoDiv"); var siTop = (iframe.clientHeight / 2) - (sid.height() / 2); var siLeft = (iframe.clientWidth / 2) - (sid.width() / 2); sid.css("top", siTop); sid.css("left", siLeft); var puHeight = 0; var puWidth = 0; var puTop = 0; var puLeft = 0; if ($('#mediaTitleHolder').hasClass('minimal')) { $('#mediaTitleHolder').removeClass('minimal'); } if ($('#mediaTitleHolder').hasClass('pic')) { $('#mediaTitleHolder').removeClass('pic'); } if ($('#monitor').hasClass('monitor')) { $('#monitor').removeClass('monitor'); $('#mediaTitleHolder').removeClass('monitor'); $('#mediaTitle').removeClass('monitor') $('#mediaholder').removeClass('monitor') $('.fsElement').removeClass('monitor') $('#mediaClose').removeClass('monitor') $('#mediaframe').removeClass('monitor') } if ($('#monitor').hasClass('min')) { $('#monitor').removeClass('min'); $('#mediaTitleHolder').removeClass('minimal'); $('#mediaTitle').removeClass('minimal') $('#mediaholder').removeClass('minimal') $('.fsElement').removeClass('minimal') $('#mediaClose').removeClass('minimal') $('#mediaframe').removeClass('minimal') } if ($('#monitor').hasClass('picframe')) { $('#monitor').removeClass('picframe'); $('#mediaTitleHolder').removeClass('picframe'); $('#mediaTitle').removeClass('picframe') $('#mediaholder').removeClass('picframe') $('.fsElement').removeClass('picframe') $('#mediaClose').removeClass('picframe') $('#mediaframe').removeClass('picframe') } if ($('#monitor').hasClass('classic')) { $('#monitor').removeClass('classic'); $('#mediaTitleHolder').removeClass('classic'); $('#mediaTitle').removeClass('classic') $('#mediaholder').removeClass('classic') $('.fsElement').removeClass('classic') $('#mediaClose').removeClass('classic') $('#mediaframe').removeClass('classic') } if ($('#monitor').hasClass('standard')) { $('#monitor').removeClass('standard'); $('#mediaTitleHolder').removeClass('standard'); $('#mediaTitle').removeClass('standard') $('#mediaholder').removeClass('standard') $('.fsElement').removeClass('standard') $('#mediaClose').removeClass('standard') $('#mediaframe').removeClass('standard') } if (mediacss == "monitor") { $('#monitor').addClass('monitor'); $('#mediaTitleHolder').addClass('monitor'); $('#mediaTitle').addClass('monitor'); $('#mediaholder').addClass('monitor'); $('.fsElement').addClass('monitor'); $('#mediaClose').addClass('monitor'); var domCheck = setInterval(function() { if (typeof document.getElementById("mediaframe") != "undefined") { $('#mediaframe').addClass('monitor'); clearInterval(domCheck); } }, 25); $('.fsElement').css('margin-top', "-7px"); $('#mediaClose').css('margin-top', "-5px"); $('.fsElement').css('right', "20px"); $('#mediaClose').css('right', "0px"); } else { if (mediacss == "frame") { $('#monitor').addClass('picframe'); $('#mediaholder').addClass('picframe'); $('#mediaTitleHolder').addClass('pic'); $('#mediaTitle').addClass('picframe'); $('.fsElement').addClass('picframe'); $('#mediaClose').addClass('picframe'); var domCheck = setInterval(function() { if (typeof document.getElementById("mediaframe") != "undefined") { $('#mediaframe').addClass('picframe'); clearInterval(domCheck); } }, 25); $('.fsElement').css('margin-top', "-100px"); $('#mediaClose').css('margin-top', "-98px"); $('.fsElement').css('right', "-20px"); $('#mediaClose').css('right', "-40px"); } else { if (mediacss == "standard") { $('#monitor').addClass('standard'); $('#mediaTitleHolder').addClass('standard'); $('#mediaTitle').addClass('standard') $('#mediaholder').addClass('standard') $('.fsElement').addClass('standard') $('#mediaClose').addClass('standard') var domCheck = setInterval(function() { if (typeof document.getElementById("mediaframe") != "undefined") { $('#mediaframe').addClass('standard') clearInterval(domCheck); } }, 25); $('.fsElement').css('margin-top', "-7px"); $('#mediaClose').css('margin-top', "-5px"); $('.fsElement').css('right', "20px"); $('#mediaClose').css('right', "0px"); } else { if (mediacss == "classic") { $('#monitor').addClass('classic'); $('#mediaTitleHolder').addClass('classic'); $('#mediaTitle').addClass('classic') $('#mediaholder').addClass('classic') $('.fsElement').addClass('classic') $('#mediaClose').addClass('classic') var domCheck = setInterval(function() { if (typeof document.getElementById("mediaframe") != "undefined") { $('#mediaframe').addClass('classic') clearInterval(domCheck); } }, 25); $('#fsElement').prepend("

"); $('#fsElement').append("

"); $('.fsElement').css('right', "20px"); $('#mediaClose').css('right', "0px"); } else { $('#monitor').addClass('min'); $('#mediaTitleHolder').addClass('minimal'); $('#mediaTitle').addClass('minimal') $('#mediaholder').addClass('minimal') $('.fsElement').addClass('minimal') $('#mediaClose').addClass('minimal') var domCheck = setInterval(function() { if (typeof document.getElementById("mediaframe") != "undefined") { $('#mediaframe').addClass('minimal'); clearInterval(domCheck); } }, 25); $('.fsElement').css('margin-top', "-30px"); $('#mediaClose').css('margin-top', "-28px"); $('.fsElement').css('right', "20px"); $('#mediaClose').css('right', "0px"); } } } } var puf = document.getElementById("popupframe"); if (mediacss != "classic") { if (isFinite(naturalHeight / naturalWidth)) { if (iframe.clientWidth / iframe.clientHeight > 1) { var puHeight = iframe.clientHeight * 0.8; var puWidth = puHeight / (naturalHeight / naturalWidth); if (puWidth > iframe.clientWidth) { puWidth = iframe.clientWidth * 0.8; puHeight = puWidth * (naturalHeight / naturalWidth); } } else { var puWidth = iframe.clientWidth * 0.8; var puHeight = puWidth * (naturalHeight / naturalWidth); if (puHeight > iframe.clientHeight) { puHeight = iframe.clientHeight * 0.8; puWidth = puWidth / (naturalHeight / naturalWidth); } } if ($('#monitor').hasClass('monitor')) { var heightAdjust = 70; } else { if ($('#monitor').hasClass('standard')) { var heightAdjust = 50; } else { if ($('#monitor').hasClass('picframe')) { var heightAdjust = iframe.clientHeight * 0.1; } else { var heightAdjust = 30; } } } $("#monitor").css("height", puHeight + heightAdjust); $("#monitor").css("width", puWidth); if ($('#monitor').hasClass('picframe')) { $("#mediaholder").css("height", puHeight + heightAdjust); } else { $("#mediaholder").css("height", puHeight); } $("#mediaframe").css("height", puHeight); var puTop = (iframe.clientHeight / 2) - ((puHeight + heightAdjust) / 2); var puLeft = (iframe.clientWidth / 2) - (puWidth / 2); puf.setAttribute("style", "position: absolute; z-index:101; width: " + puWidth + "px; height: " + (puHeight + heightAdjust) + "px; top: " + puTop + "px; left: " + puLeft + "px; margin-right: auto; transition: opacity 2s ease, background 2s ease;"); } else { if (iframe.clientWidth / iframe.clientHeight > 1) { var puHeight = iframe.clientHeight * 0.8; var puWidth = puHeight / 0.5625; if (puWidth > iframe.clientWidth) { puWidth = iframe.clientWidth * 0.8; puHeight = puWidth * 0.5625; } } else { var puWidth = iframe.clientWidth * 0.8; var puHeight = puWidth * 0.5625; if (puHeight > iframe.clientHeight) { puHeight = iframe.clientHeight * 0.8; puWidth = puWidth / 0.5625; } } if ($('#monitor').hasClass('monitor')) { $("#monitor").css("height", puHeight + 70); } else { if ($('#monitor').hasClass('standard')) { $("#monitor").css("height", puHeight + 50); } else { $("#monitor").css("height", puHeight + 30); } } $("#monitor").css("width", puWidth); $("#mediaholder").css("height", puHeight); if (!$('#monitor').hasClass('picframe')) { $("#mediaframe").css("height", puHeight); } if ($('#monitor').hasClass('monitor')) { var puTop = (iframe.clientHeight / 2) - ((puHeight + 70) / 2); } else { if ($('#monitor').hasClass('standard')) { var puTop = (iframe.clientHeight / 2) - ((puHeight + 50) / 2); } else { var puTop = (iframe.clientHeight / 2) - ((puHeight + 30) / 2); } } var puLeft = (iframe.clientWidth / 2) - (puWidth / 2); puf.setAttribute("style", "position: absolute; z-index:101; width: " + puWidth + "px; height: " + (puHeight + 70) + "px; top: " + puTop + "px; left: " + puLeft + "px; margin-right: auto; transition: opacity 2s ease, background 2s ease;"); } } else { var domTest = setInterval(function() { if ($("#monitor").width() > 0) { puf.setAttribute("style", "position: absolute; z-index:101; top: " + ((iframe.clientHeight / 2) - ($("#monitor").height() / 2)) + "px; left: " + ((iframe.clientWidth / 2) - ($("#monitor").width() / 2)) + "px; margin-right: auto; transition: opacity 2s ease, background 2s ease;"); clearInterval(domTest); } }, 25); } if (document.fullscreenElement || document.mozFullScreenElement || document.webkitCurrentFullScreenElement || document.msFullscreenElement) { var fsMode = true; fsCss(fsMode); } } function fade(element) { var op = 1; // initial opacity var timer = setInterval(function() { if (op <= 0.1) { clearInterval(timer); element.style.display = 'none'; } element.style.opacity = op; element.style.filter = 'alpha(opacity=' + op * 100 + ")"; op -= op * 0.1; }, 50); }; function unfade(element) { var op = element.style.backg element.style.display = 'block'; var timer = setInterval(function() { if (op >= 1) { clearInterval(timer); } element.style.opacity = op; element.style.filter = 'alpha(opacity=' + op * 100 + ")"; op += op * 0.1; }, 10); } function fsCss(fsMode) { var puf = document.getElementById("popupframe"); $("#monitor").css("margin-left", "auto"); $("#monitor").css("margin-right", "auto"); } function closeMediaDiv() { console.log("CLOSING"); $("#audioContainer").fadeIn(1000); $(".controlbuttons").fadeIn(1000); $("#tourlogoimage").fadeIn(1000); $("#showcase_iframe").fadeIn(1000); $("#libDiv").fadeOut(1000); setTimeout(function() { document.getElementById("iframecontainer").removeChild(document.getElementById("libDiv")); document.getElementById("iframecontainer").removeChild(document.getElementById("goBack")); }, 500); } function backToMainTour() { $("#audioContainer").fadeIn(1000); $(".controlbuttons").fadeIn(1000); $("#tourlogoimage").fadeIn(1000); $("#showcase_iframe").fadeIn(1000); $("#iframe2").fadeOut(1000); setTimeout(function() { if (sPath != "tagbuilder" && sPath != "tagbuilderdevnew") { document.getElementById("framecontainer").removeChild(document.getElementById("iframe2")); document.getElementById("framecontainer").removeChild(document.getElementById("goBack")); } else { document.getElementById("iframecontainer").removeChild(document.getElementById("iframe2")); document.getElementById("iframecontainer").removeChild(document.getElementById("goBack")); } }, 1000); if (iframe.contentWindow.document.getElementById("musicDiv")) { if (iframe.contentWindow.document.getElementById("musicDiv").style.paddingLeft == "6px") { if (os != "iOS" && os != "Mac OS") { audioBG.play(); } } } } function openFullscreen() { var fselem = document.getElementById("popupframe"); if (document.fullscreenElement || document.mozFullScreenElement || document.webkitCurrentFullScreenElement || document.msFullscreenElement) { document.exitFullscreen(); setTimeout(function() { updateCss(); }, 250); } else { if (fselem.requestFullscreen) { fselem.requestFullscreen(); } else if (fselem.mozRequestFullScreen) { /* Firefox */ fselem.mozRequestFullScreen(); } else if (fselem.webkitRequestFullscreen) { /* Chrome, Safari and Opera */ fselem.webkitRequestFullscreen(); } else if (fselem.msRequestFullscreen) { /* IE/Edge */ fselem.msRequestFullscreen(); } setTimeout(function() { updateCss(); }, 250); } }; window.onresize = updateCss; iframeWin.addEventListener('resize', updateCss);