// Garden Gnome Software - VR - Skin // Pano2VR 7.0 beta 4a/19550 // Filename: feather_vr.ggsk // Generated 2022-10-04T16:06:54 function pano2vrVrSkin(player,base) { player.addVariable('node_cloner_hasUp', 2, false, { ignoreInState: 0 }); player.addVariable('node_cloner_hasDown', 2, false, { ignoreInState: 0 }); player.addVariable('open_image_hs', 0, "", { ignoreInState: 0 }); player.addVariable('open_info_hs', 0, "", { ignoreInState: 0 }); player.addVariable('open_video_hs', 0, "", { ignoreInState: 0 }); var me=this; var skin=this; var flag=false; var hotspotTemplates={}; var skinKeyPressed = 0; this.player=player; this.player.vrSkinObj=this; this.ggUserdata=player.userdata; this.lastSize={ w: -1,h: -1 }; var basePath=""; // auto detect base path if (base=='?') { var scripts = document.getElementsByTagName('script'); for(var i=0;i=0) { var p=src.lastIndexOf('/'); if (p>=0) { basePath=src.substr(0,p+1); } } } } else if (base) { basePath=base; } this.elementMouseDown={}; this.elementMouseOver={}; var i; var hs,el,els,elo,ela,geometry,material; player.setMargins(0,0,0,0); this.findElements=function(id,regex) { var r=[]; var stack=[]; var pat=new RegExp(id,''); stack.push(me.skinGroup); while(stack.length>0) { var e=stack.pop(); if (regex) { if (pat.test(e.userData.ggId)) r.push(e); } else { if (e.userData.ggId==id) r.push(e); } if (e.children.length > 0) { for(var i=0;i0) { var e=stack.pop(); if (e.userData && e.userData.ggUpdateText) { e.userData.ggUpdateText(); } for(var i=0;i0 && me._thumbnails.userData.visible); } el.userData.isVisible = function() { let vis = me._thumbnails.visible let parentEl = me._thumbnails.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._thumbnails.userData.opacity = v; v = v * me._thumbnails.userData.parentOpacity; me._thumbnails.userData.setOpacityInternal(v); for (let i = 0; i < me._thumbnails.children.length; i++) { let child = me._thumbnails.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._thumbnails.userData.parentOpacity = v; v = v * me._thumbnails.userData.opacity me._thumbnails.userData.setOpacityInternal(v); for (let i = 0; i < me._thumbnails.children.length; i++) { let child = me._thumbnails.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._thumbnails = el; el.userData.ggId="thumbnails"; me._thumbnails.userData.ggUpdatePosition=function (useTransition) { } el = new THREE.Group(); el.userData.setOpacityInternal = function(v) {}; el.translateX(-2.45); el.translateY(0.075); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 150; el.userData.height = 100; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'node_cloner'; el.userData.x = -2.45; el.userData.y = 0.075; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._node_cloner.material.opacity = v; me._node_cloner.visible = (v>0 && me._node_cloner.userData.visible); } el.userData.isVisible = function() { let vis = me._node_cloner.visible let parentEl = me._node_cloner.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._node_cloner.userData.opacity = v; v = v * me._node_cloner.userData.parentOpacity; me._node_cloner.userData.setOpacityInternal(v); for (let i = 0; i < me._node_cloner.children.length; i++) { let child = me._node_cloner.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._node_cloner.userData.parentOpacity = v; v = v * me._node_cloner.userData.opacity me._node_cloner.userData.setOpacityInternal(v); for (let i = 0; i < me._node_cloner.children.length; i++) { let child = me._node_cloner.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._node_cloner = el; el.userData.ggNumRepeat = 100; el.userData.ggCloneOffset = 0; el.userData.ggNumRows = 0; el.userData.ggNumCols = 0; el.userData.ggUpdating = false; el.userData.ggFilter = []; el.userData.ggInstances = []; el.userData.ggGoUp = function() { if (me._node_cloner.userData.ggCloneOffset + me._node_cloner.userData.ggNumCols <= me._node_cloner.userData.ggNumFilterPassed) { me._node_cloner.userData.ggCloneOffset += me._node_cloner.userData.ggNumCols; me._node_cloner.userData.ggCloneOffsetChanged = true; me._node_cloner.userData.ggUpdate(); } } el.userData.ggGoDown = function() { if (me._node_cloner.userData.ggCloneOffset > 0) { me._node_cloner.userData.ggCloneOffset -= me._node_cloner.userData.ggNumCols; me._node_cloner.userData.ggCloneOffset = Math.max(me._node_cloner.userData.ggCloneOffset, 0); me._node_cloner.userData.ggCloneOffsetChanged = true; me._node_cloner.userData.ggUpdate(); } } el.getFilteredNodes = function(tourNodes, filter) { var filteredNodes = []; for (var i = 0; i < tourNodes.length; i++) { var nodeId = tourNodes[i]; var passed = true; var nodeData = player.getNodeUserdata(nodeId); if (filter.length > 0) { for (var j=0; j < filter.length; j++) { if (nodeData['tags'].indexOf(filter[j].trim()) == -1) passed = false; } } if (passed) { filteredNodes.push(nodeId); } } return filteredNodes; } el.userData.ggUpdate = function(filter) { if(me._node_cloner.userData.ggUpdating == true) return; me._node_cloner.userData.ggUpdating = true; var el=me._node_cloner; var curNumCols = 0; var parentWidth = me._node_cloner.parent.userData.width; me._node_cloner.userData.offsetLeft = (me._node_cloner.parent.userData.width / 200.0) + me._node_cloner.userData.x - (me._node_cloner.userData.width / 200.0); curNumCols = Math.floor(((parentWidth - me._node_cloner.userData.offsetLeft) * me._node_cloner.userData.ggNumRepeat / 100.0) / me._node_cloner.userData.width); if (curNumCols < 1) curNumCols = 1; if (typeof filter=='object') { el.userData.ggFilter = filter; } else { filter = el.userData.ggFilter; }; if (me.ggTag) filter.push(me.ggTag); filter=filter.sort(); if ((el.userData.ggNumCols == curNumCols) && (el.userData.ggInstances.length > 0) && (filter.length === el.userData.ggCurrentFilter.length) && (filter.every(function(value, index) { return value === el.userData.ggCurrentFilter[index] }) ) && false) { me._node_cloner.userData.ggUpdating = false; return; } else { el.userData.ggNumRows = 1; el.userData.ggNumCols = curNumCols; var centerOffsetHor = 0; var centerOffsetVert = 0; centerOffsetHor = ((parentWidth - (me._node_cloner.userData.offsetLeft * 100.0)) % me._node_cloner.userData.width) / 2; me._node_cloner.userData.ggCloneOffsetChanged = false; } el.userData.ggCurrentFilter = filter; el.userData.ggInstances = []; el.remove(...el.children); var tourNodes = player.getNodeIds(); var row = 0; var column = 0; var currentIndex = 0; var keepCloning = true; me._node_cloner.userData.ggNumFilterPassed = 0; numNodes = me._node_cloner.getFilteredNodes(tourNodes, filter).length; if ((parentWidth - (me._node_cloner.userData.offsetLeft * 100.0)) > (me._node_cloner.userData.width * numNodes)) { centerOffsetHor = ((parentWidth - (me._node_cloner.userData.offsetLeft * 100.0)) - (me._node_cloner.userData.width * numNodes)) / 2; } tourNodes = me._node_cloner.getFilteredNodes(tourNodes, filter); me._node_cloner.userData.ggNumFilterPassed = tourNodes.length; for (var i = 0; i < tourNodes.length; i++) { var nodeId = tourNodes[i]; var nodeData = player.getNodeUserdata(nodeId); if (!keepCloning || i < me._node_cloner.userData.ggCloneOffset) continue; var parameter={}; parameter.top = -(centerOffsetVert / 100.0) - (row * me._node_cloner.userData.height) / 100.0; parameter.left = (centerOffsetHor / 100.0) + (column * me._node_cloner.userData.width) / 100.0; parameter.index=currentIndex; parameter.title=nodeData['title']; var inst = new SkinCloner_node_cloner_Class(nodeId, me, el, parameter); currentIndex++; el.userData.ggInstances.push(inst); var bbox = new THREE.Box3().setFromObject(inst.__obj); var clonerPosInSkin = skin.posInSkin(me._node_cloner, me.ggParent); if (bbox.min.x + clonerPosInSkin.x >= -4 && bbox.max.x + clonerPosInSkin.x <= 4 && bbox.min.y + clonerPosInSkin.y >= -3 && bbox.max.y + clonerPosInSkin.y <= 3) el.add(inst.__obj); column++; if (column >= el.userData.ggNumCols) { keepCloning = false; } } player.setVariableValue('node_cloner_hasDown', me._node_cloner.userData.ggCloneOffset > 0); player.setVariableValue('node_cloner_hasUp', me._node_cloner.userData.ggCloneOffset + me._node_cloner.userData.ggNumCols < me._node_cloner.userData.ggNumFilterPassed); me._node_cloner.userData.ggNodeCount = me._node_cloner.userData.ggNumFilterPassed; me._node_cloner.userData.ggUpdating = false; player.triggerEvent('clonerchanged'); } el.userData.ggFilter = []; el.userData.ggId="node_cloner"; me._node_cloner.userData.ggUpdatePosition=function (useTransition) { } me._thumbnails.add(me._node_cloner); width = 0.42; height = 0.42; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'page_up_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'page_up_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._page_up_bg.material.opacity = v * me._page_up_bg.userData.backgroundColorAlpha; if (me._page_up_bg.userData.ggSubElement) { me._page_up_bg.userData.ggSubElement.material.opacity = v me._page_up_bg.userData.ggSubElement.visible = (v>0 && me._page_up_bg.userData.visible); } me._page_up_bg.visible = (v>0 && me._page_up_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._page_up_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._page_up_bg.userData.backgroundColorAlpha = v; me._page_up_bg.userData.setOpacity(me._page_up_bg.userData.opacity); } el.translateX(3.34); el.translateY(0.065); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 42; el.userData.height = 42; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'page_up_bg'; el.userData.x = 3.34; el.userData.y = 0.065; el.userData.hanchor = 2; el.userData.vanchor = 0; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._page_up_bg.visible let parentEl = me._page_up_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._page_up_bg.userData.opacity = v; v = v * me._page_up_bg.userData.parentOpacity; me._page_up_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._page_up_bg.children.length; i++) { let child = me._page_up_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._page_up_bg.userData.parentOpacity = v; v = v * me._page_up_bg.userData.opacity me._page_up_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._page_up_bg.children.length; i++) { let child = me._page_up_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = false; el.userData.visible = false; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._page_up_bg = el; el.userData.ggId="page_up_bg"; me._page_up_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['page_up_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._page_up_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._page_up_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._page_up_bg.ggCurrentLogicStateScaling == 0) { me._page_up_bg.userData.transitionValue_scale = {x: 1.2, y: 1.2, z: 1.0}; for (var i = 0; i < me._page_up_bg.userData.transitions.length; i++) { if (me._page_up_bg.userData.transitions[i].property == 'scale') { clearInterval(me._page_up_bg.userData.transitions[i].interval); me._page_up_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._page_up_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._page_up_bg.scale.set(transition_scale.startScale.x + (me._page_up_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._page_up_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._page_up_bg.position.x = (me._page_up_bg.position.x - me._page_up_bg.userData.curScaleOffX) + scaleOffX; me._page_up_bg.userData.curScaleOffX = scaleOffX; me._page_up_bg.position.y = (me._page_up_bg.position.y - me._page_up_bg.userData.curScaleOffY) + scaleOffY; me._page_up_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._page_up_bg.userData.transitions.splice(me._page_up_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._page_up_bg.userData.transitions.push(transition_scale); } else { me._page_up_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._page_up_bg.userData.transitions.length; i++) { if (me._page_up_bg.userData.transitions[i].property == 'scale') { clearInterval(me._page_up_bg.userData.transitions[i].interval); me._page_up_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._page_up_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._page_up_bg.scale.set(transition_scale.startScale.x + (me._page_up_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._page_up_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._page_up_bg.position.x = (me._page_up_bg.position.x - me._page_up_bg.userData.curScaleOffX) + scaleOffX; me._page_up_bg.userData.curScaleOffX = scaleOffX; me._page_up_bg.position.y = (me._page_up_bg.position.y - me._page_up_bg.userData.curScaleOffY) + scaleOffY; me._page_up_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._page_up_bg.userData.transitions.splice(me._page_up_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._page_up_bg.userData.transitions.push(transition_scale); } } } me._page_up_bg.logicBlock_visible = function() { var newLogicStateVisible; if ( ((player.getVariableValue('node_cloner_hasUp') == true)) ) { newLogicStateVisible = 0; } else { newLogicStateVisible = -1; } if (me._page_up_bg.ggCurrentLogicStateVisible != newLogicStateVisible) { me._page_up_bg.ggCurrentLogicStateVisible = newLogicStateVisible; if (me._page_up_bg.ggCurrentLogicStateVisible == 0) { me._page_up_bg.visible=((!me._page_up_bg.material && Number(me._page_up_bg.userData.opacity>0)) || Number(me._page_up_bg.material.opacity)>0)?true:false; me._page_up_bg.userData.visible=true; } else { me._page_up_bg.visible=false; me._page_up_bg.userData.visible=false; } } } me._page_up_bg.userData.onclick=function (e) { skin.findElements('node_cloner')[0].userData.ggGoUp(); } me._page_up_bg.userData.onmouseover=function (e) { me.elementMouseOver['page_up_bg']=true; me._page_up_bg.logicBlock_scaling(); } me._page_up_bg.userData.ontouchend=function (e) { me._page_up_bg.logicBlock_scaling(); } me._page_up_bg.userData.onmouseout=function (e) { me.elementMouseOver['page_up_bg']=false; me._page_up_bg.logicBlock_scaling(); } me._page_up_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.42, 0.42, 5, 5 ); geometry.name = 'page_up_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAABnElEQVR4nO3bIW5CQRSF4X/mdQFNKkgw1ayhgmBrMGys+6ipqSWIiq4AXUOCIOkCykwNrACSe8/k/G7U3Hx5b8xkwDnnnHPOOeecc84555xzbrhK1MZfh8fnVqd1beePl/nvT9Qc965GbXyu9bPT3/5q/d4dnhZRc9y7MNBrBWbUvh0FNQy0t7LpcISxUMPOUIDd4WlB7dsCM4AOR1pZLeenfeRctxQKCuOhhoPCWKgpQGEc1DSgMAZqKlDQR00HCtqoKUFBFzUtKGiipgYFPdT0oKCFKgEKOqgyoKCBKgUK+VHlQCE3qiQo5EWVBYWcqNKgkA81/E7p1pbz055WVtd1gVmp/T1qHnnQbD1ED3Br11/+ur788puoeaTP0GznJwiDZsQEUdCsmCAImh'+ 'kTxECzY4IQqAImiICqYIIAqBImJAdVw4TEoIqYkBRUFRMSgipjQjJQdUxIBDoCJiQBHQUTEoCOhAl+tHD3wkBHxITAK5DLRdpQmJDgkm4kTAj8QqfWXlud1tNgj2edc84555xzzjnnnHPOOecG7B9nTICvqHrUaQAAAABJRU5ErkJggg=='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'page_up_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 42; el.userData.height = 42; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'page_up'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._page_up.material.opacity = v; me._page_up.visible = (v>0 && me._page_up.userData.visible); } el.userData.isVisible = function() { let vis = me._page_up.visible let parentEl = me._page_up.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._page_up.userData.opacity = v; v = v * me._page_up.userData.parentOpacity; me._page_up.userData.setOpacityInternal(v); for (let i = 0; i < me._page_up.children.length; i++) { let child = me._page_up.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._page_up.userData.parentOpacity = v; v = v * me._page_up.userData.opacity me._page_up.userData.setOpacityInternal(v); for (let i = 0; i < me._page_up.children.length; i++) { let child = me._page_up.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._page_up = el; el.userData.ggId="page_up"; me._page_up.userData.ggUpdatePosition=function (useTransition) { } me._page_up_bg.add(me._page_up); me._thumbnails.add(me._page_up_bg); width = 0.42; height = 0.42; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'page_down_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'page_down_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._page_down_bg.material.opacity = v * me._page_down_bg.userData.backgroundColorAlpha; if (me._page_down_bg.userData.ggSubElement) { me._page_down_bg.userData.ggSubElement.material.opacity = v me._page_down_bg.userData.ggSubElement.visible = (v>0 && me._page_down_bg.userData.visible); } me._page_down_bg.visible = (v>0 && me._page_down_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._page_down_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._page_down_bg.userData.backgroundColorAlpha = v; me._page_down_bg.userData.setOpacity(me._page_down_bg.userData.opacity); } el.translateX(-3.34); el.translateY(0.065); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 42; el.userData.height = 42; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'page_down_bg'; el.userData.x = -3.34; el.userData.y = 0.065; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._page_down_bg.visible let parentEl = me._page_down_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._page_down_bg.userData.opacity = v; v = v * me._page_down_bg.userData.parentOpacity; me._page_down_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._page_down_bg.children.length; i++) { let child = me._page_down_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._page_down_bg.userData.parentOpacity = v; v = v * me._page_down_bg.userData.opacity me._page_down_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._page_down_bg.children.length; i++) { let child = me._page_down_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = false; el.userData.visible = false; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._page_down_bg = el; el.userData.ggId="page_down_bg"; me._page_down_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['page_down_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._page_down_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._page_down_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._page_down_bg.ggCurrentLogicStateScaling == 0) { me._page_down_bg.userData.transitionValue_scale = {x: 1.2, y: 1.2, z: 1.0}; for (var i = 0; i < me._page_down_bg.userData.transitions.length; i++) { if (me._page_down_bg.userData.transitions[i].property == 'scale') { clearInterval(me._page_down_bg.userData.transitions[i].interval); me._page_down_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._page_down_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._page_down_bg.scale.set(transition_scale.startScale.x + (me._page_down_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._page_down_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._page_down_bg.position.x = (me._page_down_bg.position.x - me._page_down_bg.userData.curScaleOffX) + scaleOffX; me._page_down_bg.userData.curScaleOffX = scaleOffX; me._page_down_bg.position.y = (me._page_down_bg.position.y - me._page_down_bg.userData.curScaleOffY) + scaleOffY; me._page_down_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._page_down_bg.userData.transitions.splice(me._page_down_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._page_down_bg.userData.transitions.push(transition_scale); } else { me._page_down_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._page_down_bg.userData.transitions.length; i++) { if (me._page_down_bg.userData.transitions[i].property == 'scale') { clearInterval(me._page_down_bg.userData.transitions[i].interval); me._page_down_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._page_down_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._page_down_bg.scale.set(transition_scale.startScale.x + (me._page_down_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._page_down_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._page_down_bg.position.x = (me._page_down_bg.position.x - me._page_down_bg.userData.curScaleOffX) + scaleOffX; me._page_down_bg.userData.curScaleOffX = scaleOffX; me._page_down_bg.position.y = (me._page_down_bg.position.y - me._page_down_bg.userData.curScaleOffY) + scaleOffY; me._page_down_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._page_down_bg.userData.transitions.splice(me._page_down_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._page_down_bg.userData.transitions.push(transition_scale); } } } me._page_down_bg.logicBlock_visible = function() { var newLogicStateVisible; if ( ((player.getVariableValue('node_cloner_hasDown') == true)) ) { newLogicStateVisible = 0; } else { newLogicStateVisible = -1; } if (me._page_down_bg.ggCurrentLogicStateVisible != newLogicStateVisible) { me._page_down_bg.ggCurrentLogicStateVisible = newLogicStateVisible; if (me._page_down_bg.ggCurrentLogicStateVisible == 0) { me._page_down_bg.visible=((!me._page_down_bg.material && Number(me._page_down_bg.userData.opacity>0)) || Number(me._page_down_bg.material.opacity)>0)?true:false; me._page_down_bg.userData.visible=true; } else { me._page_down_bg.visible=false; me._page_down_bg.userData.visible=false; } } } me._page_down_bg.userData.onclick=function (e) { skin.findElements('node_cloner')[0].userData.ggGoDown(); } me._page_down_bg.userData.onmouseover=function (e) { me.elementMouseOver['page_down_bg']=true; me._page_down_bg.logicBlock_scaling(); } me._page_down_bg.userData.ontouchend=function (e) { me._page_down_bg.logicBlock_scaling(); } me._page_down_bg.userData.onmouseout=function (e) { me.elementMouseOver['page_down_bg']=false; me._page_down_bg.logicBlock_scaling(); } me._page_down_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.42, 0.42, 5, 5 ); geometry.name = 'page_down_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFQAAABUCAYAAAAcaxDBAAABoUlEQVR4nO3ZMUoDURSF4f+9ZAFCikAa6+ACLCwkrY1N9mDpxmxcQUjhGlLbBFIEXIB5Y6GiKHYj957H+Tcwh48wE7jgnHPOOeecc84555xzzjnXXSV6wJg97c/OW53c1nZ6vFq8PEdsmEY89D/a7mfL1zpsCsP8VOsdcBGxo0Y8dOy2+9mSOmwKzKO3yP9Cf2IOcKCVddQe6XfoH5ir68VxF7VJFjQjJoiCZsUEQdDMmCAGmh0ThEAVMEEEVAUTBECVMCE5qBomJAZVxISkoKqYkBBUGROSgapjQiLQHjAhCWgvmJAAtCdMCAbtDRMCQXvEhMATSKnDA99vQB1gQidHukyFgQ6trAc4fC0ZNtv9bBm1Z6z8URo5/20auXBQ6As1BSj0g5oGFPpATQ'+ 'UK+qjpQEEbNSUo6KKmBQVN1NSgoIeaHhS0UCVAQQdVBhQ0UKVAIT+qHCjkRpUEhbyosqCQE1UaFPKhyt+UrhfHHa2sPs8pBeYfB8CQ5EHhN2pkXYDCO+q0tctCuZ+0dhO9xznnnHPOOeecc84555xzrqPeAKyvfqSsyBfkAAAAAElFTkSuQmCC'); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'page_down_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 42; el.userData.height = 42; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'page_down'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.050); el.renderOrder = 5; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._page_down.material.opacity = v; me._page_down.visible = (v>0 && me._page_down.userData.visible); } el.userData.isVisible = function() { let vis = me._page_down.visible let parentEl = me._page_down.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._page_down.userData.opacity = v; v = v * me._page_down.userData.parentOpacity; me._page_down.userData.setOpacityInternal(v); for (let i = 0; i < me._page_down.children.length; i++) { let child = me._page_down.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._page_down.userData.parentOpacity = v; v = v * me._page_down.userData.opacity me._page_down.userData.setOpacityInternal(v); for (let i = 0; i < me._page_down.children.length; i++) { let child = me._page_down.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._page_down = el; el.userData.ggId="page_down"; me._page_down.userData.ggUpdatePosition=function (useTransition) { } me._page_down_bg.add(me._page_down); me._thumbnails.add(me._page_down_bg); me.skinGroup.add(me._thumbnails); me._thumbnails.userData.setOpacity(1.00); me._node_cloner.userData.setOpacity(1.00); me._node_cloner.userData.ggUpdate(); me._page_up_bg.userData.setOpacity(1.00); me._page_up.userData.setOpacity(1.00); me._page_down_bg.userData.setOpacity(1.00); me._page_down.userData.setOpacity(1.00); player.addListener('changenode', function() { if (hotspotTemplates.hasOwnProperty('ht_image')) { for(var i = 0; i < hotspotTemplates['ht_image'].length; i++) { hotspotTemplates['ht_image'][i].ggEvent_changenode(); } } if (hotspotTemplates.hasOwnProperty('ht_info')) { for(var i = 0; i < hotspotTemplates['ht_info'].length; i++) { hotspotTemplates['ht_info'][i].ggEvent_changenode(); } } if (hotspotTemplates.hasOwnProperty('ht_video_file')) { for(var i = 0; i < hotspotTemplates['ht_video_file'].length; i++) { hotspotTemplates['ht_video_file'][i].ggEvent_changenode(); } } if (hotspotTemplates.hasOwnProperty('ht_video_url')) { for(var i = 0; i < hotspotTemplates['ht_video_url'].length; i++) { hotspotTemplates['ht_video_url'][i].ggEvent_changenode(); } } me._page_up_bg.logicBlock_visible(); me._page_down_bg.logicBlock_visible(); }); player.addListener('configloaded', function() { if (hotspotTemplates.hasOwnProperty('ht_image')) { for(var i = 0; i < hotspotTemplates['ht_image'].length; i++) { hotspotTemplates['ht_image'][i].ggEvent_configloaded(); } } if (hotspotTemplates.hasOwnProperty('ht_info')) { for(var i = 0; i < hotspotTemplates['ht_info'].length; i++) { hotspotTemplates['ht_info'][i].ggEvent_configloaded(); } } if (hotspotTemplates.hasOwnProperty('ht_video_file')) { for(var i = 0; i < hotspotTemplates['ht_video_file'].length; i++) { hotspotTemplates['ht_video_file'][i].ggEvent_configloaded(); } } if (hotspotTemplates.hasOwnProperty('ht_video_url')) { for(var i = 0; i < hotspotTemplates['ht_video_url'].length; i++) { hotspotTemplates['ht_video_url'][i].ggEvent_configloaded(); } } me._page_up_bg.logicBlock_visible(); me._page_down_bg.logicBlock_visible(); }); player.addListener('varchanged_node_cloner_hasDown', function() { me._page_down_bg.logicBlock_visible(); }); player.addListener('varchanged_node_cloner_hasUp', function() { me._page_up_bg.logicBlock_visible(); }); player.addListener('varchanged_open_image_hs', function() { if (hotspotTemplates.hasOwnProperty('ht_image')) { for(var i = 0; i < hotspotTemplates['ht_image'].length; i++) { hotspotTemplates['ht_image'][i].ggEvent_varchanged_open_image_hs(); } } if (hotspotTemplates.hasOwnProperty('ht_info')) { for(var i = 0; i < hotspotTemplates['ht_info'].length; i++) { hotspotTemplates['ht_info'][i].ggEvent_varchanged_open_image_hs(); } } }); player.addListener('varchanged_open_info_hs', function() { if (hotspotTemplates.hasOwnProperty('ht_info')) { for(var i = 0; i < hotspotTemplates['ht_info'].length; i++) { hotspotTemplates['ht_info'][i].ggEvent_varchanged_open_info_hs(); } } }); player.addListener('varchanged_open_video_hs', function() { if (hotspotTemplates.hasOwnProperty('ht_video_file')) { for(var i = 0; i < hotspotTemplates['ht_video_file'].length; i++) { hotspotTemplates['ht_video_file'][i].ggEvent_varchanged_open_video_hs(); } } if (hotspotTemplates.hasOwnProperty('ht_video_url')) { for(var i = 0; i < hotspotTemplates['ht_video_url'].length; i++) { hotspotTemplates['ht_video_url'][i].ggEvent_varchanged_open_video_hs(); } } }); }; this.removeSkin=function() { }; function SkinCloner_node_cloner_Class(nodeId, parentScope, ggParent, parameter) { var me=this; me.parentScope=parentScope; me.ggParent=ggParent; me.findElements=skin.findElements; me.ggIndex=parameter.index; me.ggNodeId=nodeId; me.ggTitle=parameter.title; me.ggUserdata=skin.player.getNodeUserdata(me.ggNodeId); me.ggUserdata.nodeId=me.ggNodeId; me.elementMouseDown={}; me.elementMouseOver={}; me.__obj = new THREE.Group; me.__obj.name = 'node_cloner_subElement'; me.__obj.position.x = parameter.left; me.__obj.position.y = parameter.top; me.__obj.userData.ggIsActive = function() { return player.getCurrentNode()==me.userData.ggNodeId; } me.__obj.userData.ggElementNodeId=function() { return me.userData.ggNodeId; } width = 1.3; height = 0.8; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.2, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.2, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.2); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.2); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.2, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'node_image_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; loader = new THREE.TextureLoader(); el.userData.ggNodeId=nodeId; texture = loader.load(basePath + 'images_vr/node_image_' + nodeId + '.png'); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'node_image_material'; el = new THREE.Mesh( geometry, material ); el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 130; el.userData.height = 80; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'node_image'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.010); el.renderOrder = 1; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._node_image.material.opacity = v; me._node_image.visible = (v>0 && me._node_image.userData.visible); } el.userData.isVisible = function() { let vis = me._node_image.visible let parentEl = me._node_image.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._node_image.userData.opacity = v; v = v * me._node_image.userData.parentOpacity; me._node_image.userData.setOpacityInternal(v); for (let i = 0; i < me._node_image.children.length; i++) { let child = me._node_image.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._node_image.userData.parentOpacity = v; v = v * me._node_image.userData.opacity me._node_image.userData.setOpacityInternal(v); for (let i = 0; i < me._node_image.children.length; i++) { let child = me._node_image.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._node_image = el; el.userData.ggId="node_image"; me._node_image.userData.ggIsActive=function() { return player.getCurrentNode()==this.userData.ggElementNodeId(); } el.userData.ggElementNodeId=function() { return this.userData.ggNodeId; } me._node_image.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['node_image'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._node_image.ggCurrentLogicStateScaling != newLogicStateScaling) { me._node_image.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._node_image.ggCurrentLogicStateScaling == 0) { me._node_image.userData.transitionValue_scale = {x: 1.15, y: 1.15, z: 1.0}; for (var i = 0; i < me._node_image.userData.transitions.length; i++) { if (me._node_image.userData.transitions[i].property == 'scale') { clearInterval(me._node_image.userData.transitions[i].interval); me._node_image.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._node_image.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._node_image.scale.set(transition_scale.startScale.x + (me._node_image.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._node_image.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._node_image.position.x = (me._node_image.position.x - me._node_image.userData.curScaleOffX) + scaleOffX; me._node_image.userData.curScaleOffX = scaleOffX; me._node_image.position.y = (me._node_image.position.y - me._node_image.userData.curScaleOffY) + scaleOffY; me._node_image.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._node_image.userData.transitions.splice(me._node_image.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._node_image.userData.transitions.push(transition_scale); } else { me._node_image.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._node_image.userData.transitions.length; i++) { if (me._node_image.userData.transitions[i].property == 'scale') { clearInterval(me._node_image.userData.transitions[i].interval); me._node_image.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._node_image.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._node_image.scale.set(transition_scale.startScale.x + (me._node_image.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._node_image.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._node_image.position.x = (me._node_image.position.x - me._node_image.userData.curScaleOffX) + scaleOffX; me._node_image.userData.curScaleOffX = scaleOffX; me._node_image.position.y = (me._node_image.position.y - me._node_image.userData.curScaleOffY) + scaleOffY; me._node_image.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._node_image.userData.transitions.splice(me._node_image.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._node_image.userData.transitions.push(transition_scale); } } } me._node_image.userData.onclick=function (e) { player.openNext("{"+me.ggNodeId+"}",""); } me._node_image.userData.onmouseover=function (e) { me.elementMouseOver['node_image']=true; me._node_title.logicBlock_alpha(); me._node_image.logicBlock_scaling(); } me._node_image.userData.ontouchend=function (e) { me._node_image.logicBlock_scaling(); } me._node_image.userData.onmouseout=function (e) { me.elementMouseOver['node_image']=false; me._node_title.logicBlock_alpha(); me._node_image.logicBlock_scaling(); } me._node_image.userData.ggUpdatePosition=function (useTransition) { } width = 1.3; height = 0.4; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0, (height / 2.0)); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'node_title_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'node_title_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.666667; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._node_title.material.opacity = v; if (me._node_title.userData.hasScrollbar) { me._node_title.userData.scrollbar.material.opacity = v; me._node_title.userData.scrollbarBg.material.opacity = v; } if (me._node_title.userData.ggSubElement) { me._node_title.userData.ggSubElement.material.opacity = v me._node_title.userData.ggSubElement.visible = (v>0 && me._node_title.userData.visible); } me._node_title.visible = (v>0 && me._node_title.userData.visible); } el.userData.setBackgroundColor = function(v) { me._node_title.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._node_title.userData.backgroundColorAlpha = v; me._node_title.userData.setOpacity(me._node_title.userData.opacity); } el.translateX(0); el.translateY(-0.2); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 130; el.userData.height = 40; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'node_title'; el.userData.x = 0; el.userData.y = -0.2; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._node_title.visible let parentEl = me._node_title.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._node_title.userData.opacity = v; v = v * me._node_title.userData.parentOpacity; me._node_title.userData.setOpacityInternal(v); for (let i = 0; i < me._node_title.children.length; i++) { let child = me._node_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._node_title.userData.parentOpacity = v; v = v * me._node_title.userData.opacity me._node_title.userData.setOpacityInternal(v); for (let i = 0; i < me._node_title.children.length; i++) { let child = me._node_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._node_title = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(0, 0, 0); el.userData.textColor = new THREE.Color(0.760784, 0.909804, 0.0705882); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 130; canvas.height = 40; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._node_title.userData.totalHeight = 18; me._node_title.userData.textLines = []; var ctx = me._node_title.userData.textCanvasContext; var words = me._node_title.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._node_title.userData.width - 10 - (scrollbar ? 25 : 0)) && i > 0) { me._node_title.userData.textLines.push(line); line = words[i]; me._node_title.userData.totalHeight += me._node_title.userData.lineHeight; } else { line = testLine; } } me._node_title.userData.textLines.push(line); me._node_title.userData.totalHeight += me._node_title.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._node_title.userData.textCanvas; var ctx = me._node_title.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._node_title.userData.backgroundColor.r * 255 + ', ' + me._node_title.userData.backgroundColor.g * 255 + ', ' + me._node_title.userData.backgroundColor.b * 255 + ', ' + me._node_title.userData.backgroundColorAlpha + ')'; ctx.fillRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._node_title.userData.textColor.r * 255 + ', ' + me._node_title.userData.textColor.g * 255 + ', ' + me._node_title.userData.textColor.b * 255 + ', ' + me._node_title.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = (me._node_title.userData.boxWidth - (me._node_title.userData.hasScrollbar ? 25 : 0)) / 2; ctx.textAlign = 'center'; var y = 13; y += (canv.height - me._node_title.userData.totalHeight - 5) / 2; for (var i = 0; i < me._node_title.userData.textLines.length; i++) { ctx.fillText(me._node_title.userData.textLines[i], x, y); y += me._node_title.userData.lineHeight; } var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'node_title_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._node_title.material.map) { me._node_title.material.map.dispose(); } me._node_title.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._node_title.userData.textCanvas; var ctx = me._node_title.userData.textCanvasContext; ctx.font = '16px Verdana'; me._node_title.userData.lineHeight = 16 * 1.2; me._node_title.userData.ggWrapText(false); me._node_title.userData.boxWidth = me._node_title.userData.width; me._node_title.userData.boxHeight = me._node_title.userData.height; me._node_title.userData.hasScrollbar = false; canv.width = me._node_title.userData.boxWidth; canv.height = me._node_title.userData.boxHeight; ctx.font = '16px Verdana'; me._node_title.userData.ggPaintCanvasText(); } me._node_title.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(me.ggUserdata.title))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._node_title.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._node_title.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._node_title.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._node_title.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._node_title.userData.textColorAlpha = v; } el.userData.ggId="node_title"; me._node_title.logicBlock_alpha = function() { var newLogicStateAlpha; if ( ((me.elementMouseOver['node_image'] == true)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._node_title.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._node_title.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._node_title.ggCurrentLogicStateAlpha == 0) { me._node_title.userData.transitionValue_alpha = 1; for (var i = 0; i < me._node_title.userData.transitions.length; i++) { if (me._node_title.userData.transitions[i].property == 'alpha') { clearInterval(me._node_title.userData.transitions[i].interval); me._node_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._node_title.material ? me._node_title.material.opacity : me._node_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._node_title.userData.setOpacity(transition_alpha.startAlpha + (me._node_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._node_title.userData.transitions.splice(me._node_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._node_title.userData.transitions.push(transition_alpha); } else { me._node_title.userData.transitionValue_alpha = 0; for (var i = 0; i < me._node_title.userData.transitions.length; i++) { if (me._node_title.userData.transitions[i].property == 'alpha') { clearInterval(me._node_title.userData.transitions[i].interval); me._node_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._node_title.material ? me._node_title.material.opacity : me._node_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._node_title.userData.setOpacity(transition_alpha.startAlpha + (me._node_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._node_title.userData.transitions.splice(me._node_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._node_title.userData.transitions.push(transition_alpha); } } } me._node_title.userData.ggUpdatePosition=function (useTransition) { } me._node_image.add(me._node_title); me.__obj.add(me._node_image); me._node_image.userData.setOpacity(1.00); me._node_title.userData.setOpacity(0.00); }; function SkinHotspotClass_ht_video_url(parentScope,hotspot) { var me=this; var flag=false; var hs=''; me.parentScope=parentScope; me.hotspot=hotspot; var nodeId=String(hotspot.url); nodeId=(nodeId.charAt(0)=='{')?nodeId.substr(1, nodeId.length - 2):''; // } me.ggUserdata=skin.player.getNodeUserdata(nodeId); me.ggUserdata.nodeId=nodeId; me.elementMouseDown={}; me.elementMouseOver={}; me.findElements=function(id,regex) { return skin.findElements(id,regex); } el = new THREE.Group(); el.userData.setOpacityInternal = function(v) {}; el.name = 'ht_video_url'; el.userData.x = 3.28; el.userData.y = 2.08; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_url.visible let parentEl = me._ht_video_url.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url.userData.opacity = v; v = v * me._ht_video_url.userData.parentOpacity; me._ht_video_url.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url.children.length; i++) { let child = me._ht_video_url.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url.userData.parentOpacity = v; v = v * me._ht_video_url.userData.opacity me._ht_video_url.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url.children.length; i++) { let child = me._ht_video_url.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url = el; el.userData.ggId="ht_video_url"; el.userData.ggElementNodeId=function() { if (me.hotspot.url!='' && me.hotspot.url.charAt(0)=='{') { // } return me.hotspot.url.substr(1, me.hotspot.url.length - 2); } else { if ((this.parentNode) && (this.parentNode.userData.ggElementNodeId)) { return this.parentNode.userData.ggElementNodeId(); } else { return player.getCurrentNode(); } } } me._ht_video_url.userData.onclick=function (e) { player.triggerEvent('hsproxyclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_url.userData.ondblclick=function (e) { player.triggerEvent('hsproxydblclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_url.userData.onmouseover=function (e) { player.setActiveHotspot(me.hotspot); me.elementMouseOver['ht_video_url']=true; player.triggerEvent('hsproxyover', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_url.userData.onmouseout=function (e) { player.setActiveHotspot(null); me.elementMouseOver['ht_video_url']=false; player.triggerEvent('hsproxyout', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_url.userData.ggUpdatePosition=function (useTransition) { } width = 0.45; height = 0.45; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_video_url_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_video_url_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_video_url_bg.material.opacity = v * me._ht_video_url_bg.userData.backgroundColorAlpha; if (me._ht_video_url_bg.userData.ggSubElement) { me._ht_video_url_bg.userData.ggSubElement.material.opacity = v me._ht_video_url_bg.userData.ggSubElement.visible = (v>0 && me._ht_video_url_bg.userData.visible); } me._ht_video_url_bg.visible = (v>0 && me._ht_video_url_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_video_url_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_url_bg.userData.backgroundColorAlpha = v; me._ht_video_url_bg.userData.setOpacity(me._ht_video_url_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 45; el.userData.height = 45; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_url_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.010); el.renderOrder = 1; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_url_bg.visible let parentEl = me._ht_video_url_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url_bg.userData.opacity = v; v = v * me._ht_video_url_bg.userData.parentOpacity; me._ht_video_url_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_bg.children.length; i++) { let child = me._ht_video_url_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url_bg.userData.parentOpacity = v; v = v * me._ht_video_url_bg.userData.opacity me._ht_video_url_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_bg.children.length; i++) { let child = me._ht_video_url_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url_bg = el; el.userData.ggId="ht_video_url_bg"; me._ht_video_url_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['ht_video_url_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_video_url_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_video_url_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_video_url_bg.ggCurrentLogicStateScaling == 0) { me._ht_video_url_bg.userData.transitionValue_scale = {x: 1.2, y: 1.2, z: 1.0}; for (var i = 0; i < me._ht_video_url_bg.userData.transitions.length; i++) { if (me._ht_video_url_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_url_bg.userData.transitions[i].interval); me._ht_video_url_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_url_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_bg.scale.set(transition_scale.startScale.x + (me._ht_video_url_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_url_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_url_bg.position.x = (me._ht_video_url_bg.position.x - me._ht_video_url_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_url_bg.userData.curScaleOffX = scaleOffX; me._ht_video_url_bg.position.y = (me._ht_video_url_bg.position.y - me._ht_video_url_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_url_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_url_bg.userData.transitions.splice(me._ht_video_url_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_url_bg.userData.transitions.push(transition_scale); } else { me._ht_video_url_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_video_url_bg.userData.transitions.length; i++) { if (me._ht_video_url_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_url_bg.userData.transitions[i].interval); me._ht_video_url_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_url_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_bg.scale.set(transition_scale.startScale.x + (me._ht_video_url_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_url_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_url_bg.position.x = (me._ht_video_url_bg.position.x - me._ht_video_url_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_url_bg.userData.curScaleOffX = scaleOffX; me._ht_video_url_bg.position.y = (me._ht_video_url_bg.position.y - me._ht_video_url_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_url_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_url_bg.userData.transitions.splice(me._ht_video_url_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_url_bg.userData.transitions.push(transition_scale); } } } me._ht_video_url_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_video_url_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_video_url_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_video_url_bg.ggCurrentLogicStateAlpha == 0) { me._ht_video_url_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_video_url_bg.userData.transitions.length; i++) { if (me._ht_video_url_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_url_bg.userData.transitions[i].interval); me._ht_video_url_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_url_bg.material ? me._ht_video_url_bg.material.opacity : me._ht_video_url_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_url_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_url_bg.userData.transitions.splice(me._ht_video_url_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_url_bg.userData.transitions.push(transition_alpha); } else { me._ht_video_url_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_video_url_bg.userData.transitions.length; i++) { if (me._ht_video_url_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_url_bg.userData.transitions[i].interval); me._ht_video_url_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_url_bg.material ? me._ht_video_url_bg.material.opacity : me._ht_video_url_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_url_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_url_bg.userData.transitions.splice(me._ht_video_url_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_url_bg.userData.transitions.push(transition_alpha); } } } me._ht_video_url_bg.userData.onclick=function (e) { player.setVariableValue('open_video_hs', player.getVariableValue('open_video_hs') + "<"+me.hotspot.id+">"); me._ht_video_url_popup.userData.ggInitMedia(player._(me.hotspot.url)); } me._ht_video_url_bg.userData.onmouseover=function (e) { me.elementMouseOver['ht_video_url_bg']=true; me._ht_video_url_title.logicBlock_alpha(); me._ht_video_url_bg.logicBlock_scaling(); } me._ht_video_url_bg.userData.ontouchend=function (e) { me._ht_video_url_bg.logicBlock_scaling(); } me._ht_video_url_bg.userData.onmouseout=function (e) { me.elementMouseOver['ht_video_url_bg']=false; me._ht_video_url_title.logicBlock_alpha(); me._ht_video_url_bg.logicBlock_scaling(); } me._ht_video_url_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.36, 0.36, 5, 5 ); geometry.name = 'ht_video_url_icon_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAELklEQVR4nO2bQWgcVRjHf9/b3UgtpGQ2uJvGSw+NIDSHVmgaSSIF6UFQDF48iFaj3kUCbe8tIgWvRmubixfRongpQkMStCtoDykIbQ9FMM2OZDcYaKvZ7HwedibZpLtpmN3Zbmff77Jv3773vm//vPefZfYbsFgsFovFYrFYLBaLpc2QnT78OZ95pixrB8VLpFqVUD3UlEsJ7br9Ytb9u5Vxawo0m+99VfBOA0dbmcwu+VUxZ8eyyz+0ItgWgX5TUvdd53PgZCuCN8jFpzPFD18QSlEGSVa/qRZHYRH0EsgNo8aNMond4ImXAT0E8o5AP3DyvusAxXejjLuxg/xj9T2AwjdPpZgYShdXowwehlzB6V5b5wLKGwCKeS3K42aChu85KCy2qzgAQ+nial'+ 'eS9yo7HMA7FWU8A5WrFRuGrJfaVZyAoXRxVdBpAIEhP/+mMJvfd2A2v+9A8N4AlGXt4OYQudGsYFGiyELQ3pp/yPUUM7fUMykkbgqJm4FISQDxEikVD4B2MOTdYNS4Qc6N/k6b+ct5dt5lGuH4RqeYYeCOqT+tM5h10+OJJAtQJQ5gvMQibLvMdxJX8pm9eyh9hurERqdyC2GgelxHCjR/t/eIaunrKjGKIjKByorizVSP7agjFhixGu9alThXk0kZHMkULtea0zE7qIYRl1A9M5JdOS+CV29eRwg066bHRfVLoAeoeI2aN0f3L19/1NxYC1TLiBWm/pXURyf63Hu7WSO2AtUz4tE6XlOP2Jl0GCPeiVjtoLBGvBOxEagRI96JWBwxFe9jUf0WXxyFqQeSOtyoOBCfHfSK/xrKiHfiyRXIK/eR2LylLuhMImneGu4t'+ 'LDYzTCyOGIA+4i+ssDy5ApnE0tYOeWl9XRfm3fTrTQ3TzMUeF4L86DcdVf1uLu9MXcln9jZj7VgIhMp5ERkHin7P+3u0dH3+bu+RRpeOh0DASKZwOZmUQeAqAMKAGu/a3FLPpGr47xkbgQCGewuLI5niy6hOAiUghcgn867z0y/L6f4wa8ZKIAARvNG+lU/FM8dQbvndx8MaeOwEChjZv/z7A0kdBr7wu0IZeGwFAjiRde+NZosfNGLgsRYooBED7wiBILyBd4xAEM7AO0qggHoGruJNbR/bkQJBXQN/qAiiYwUKeMjAt2GgUkEadFRK3dqf6jyr8w9DDQMveVL6E3yBEtp1e3O4HmokWKsQdDBob80/5Hq+gZfVG1DKz41l/7lTieMzl3dywFG/BO/5dq4yyxWc7v9K/CHQr5AbyxaPRRVrw4MUcxZAoH9tnQu5gt'+ 'MdVdBGCIo4/UpXwJyLMt6W25RzeecrqsqABZ1WZKEdqs488TKCDiry9qY4XBzNtqgMGGwheS3qPooA3imBoSiDh0EhB+bcY3kUYTv2YRaLxWKxWCwWi8VisVjakP8BZHvmicJF33oAAAAASUVORK5CYII='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_video_url_icon_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 36; el.userData.height = 36; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_url_icon'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_video_url_icon.material.opacity = v; me._ht_video_url_icon.visible = (v>0 && me._ht_video_url_icon.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_video_url_icon.visible let parentEl = me._ht_video_url_icon.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url_icon.userData.opacity = v; v = v * me._ht_video_url_icon.userData.parentOpacity; me._ht_video_url_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_icon.children.length; i++) { let child = me._ht_video_url_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url_icon.userData.parentOpacity = v; v = v * me._ht_video_url_icon.userData.opacity me._ht_video_url_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_icon.children.length; i++) { let child = me._ht_video_url_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url_icon = el; el.userData.ggId="ht_video_url_icon"; me._ht_video_url_icon.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_url_bg.add(me._ht_video_url_icon); geometry = new THREE.PlaneBufferGeometry(1, 0.2, 5, 5 ); geometry.name = 'ht_video_url_title_geometry'; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_video_url_title_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 1; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_video_url_title.material.opacity = v; if (me._ht_video_url_title.userData.hasScrollbar) { me._ht_video_url_title.userData.scrollbar.material.opacity = v; me._ht_video_url_title.userData.scrollbarBg.material.opacity = v; } if (me._ht_video_url_title.userData.ggSubElement) { me._ht_video_url_title.userData.ggSubElement.material.opacity = v me._ht_video_url_title.userData.ggSubElement.visible = (v>0 && me._ht_video_url_title.userData.visible); } me._ht_video_url_title.visible = (v>0 && me._ht_video_url_title.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_video_url_title.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_url_title.userData.backgroundColorAlpha = v; me._ht_video_url_title.userData.setOpacity(me._ht_video_url_title.userData.opacity); } el.translateX(0); el.translateY(-0.325); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 100; el.userData.height = 20; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_url_title'; el.userData.x = 0; el.userData.y = -0.325; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_url_title.visible let parentEl = me._ht_video_url_title.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url_title.userData.opacity = v; v = v * me._ht_video_url_title.userData.parentOpacity; me._ht_video_url_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_title.children.length; i++) { let child = me._ht_video_url_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url_title.userData.parentOpacity = v; v = v * me._ht_video_url_title.userData.opacity me._ht_video_url_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_title.children.length; i++) { let child = me._ht_video_url_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url_title = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(1, 1, 1); el.userData.textColor = new THREE.Color(0.760784, 0.909804, 0.0705882); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 100; canvas.height = 20; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._ht_video_url_title.userData.totalHeight = 3; me._ht_video_url_title.userData.textLines = []; var ctx = me._ht_video_url_title.userData.textCanvasContext; var words = me._ht_video_url_title.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._ht_video_url_title.userData.width - 0 - (scrollbar ? 25 : 0)) && i > 0) { me._ht_video_url_title.userData.textLines.push(line); line = words[i]; me._ht_video_url_title.userData.totalHeight += me._ht_video_url_title.userData.lineHeight; } else { line = testLine; } } me._ht_video_url_title.userData.textLines.push(line); me._ht_video_url_title.userData.totalHeight += me._ht_video_url_title.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._ht_video_url_title.userData.textCanvas; var ctx = me._ht_video_url_title.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_video_url_title.userData.textColor.r * 255 + ', ' + me._ht_video_url_title.userData.textColor.g * 255 + ', ' + me._ht_video_url_title.userData.textColor.b * 255 + ', ' + me._ht_video_url_title.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = (me._ht_video_url_title.userData.boxWidth - (me._ht_video_url_title.userData.hasScrollbar ? 25 : 0)) / 2; ctx.textAlign = 'center'; var y = 3; for (var i = 0; i < me._ht_video_url_title.userData.textLines.length; i++) { ctx.fillText(me._ht_video_url_title.userData.textLines[i], x, y); y += me._ht_video_url_title.userData.lineHeight; } geometry = new THREE.PlaneBufferGeometry(me._ht_video_url_title.userData.boxWidth / 100.0, me._ht_video_url_title.userData.boxHeight / 100.0, 5, 5 ); geometry.name = 'ht_video_url_title_geometry'; me._ht_video_url_title.geometry.dispose(); me._ht_video_url_title.geometry = geometry; var diffY = me._ht_video_url_title.userData.boxHeight - me._ht_video_url_title.userData.height; me._ht_video_url_title.position.y = me._ht_video_url_title.userData.y - ((diffY / 2.0) / 100.0); var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'ht_video_url_title_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._ht_video_url_title.material.map) { me._ht_video_url_title.material.map.dispose(); } me._ht_video_url_title.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._ht_video_url_title.userData.textCanvas; var ctx = me._ht_video_url_title.userData.textCanvasContext; ctx.font = '18px Verdana'; me._ht_video_url_title.userData.lineHeight = 18 * 1.2; me._ht_video_url_title.userData.textLines = []; me._ht_video_url_title.userData.textLines.push(me._ht_video_url_title.userData.ggText); me._ht_video_url_title.userData.totalHeight = 3; me._ht_video_url_title.userData.totalHeight += me._ht_video_url_title.userData.lineHeight; me._ht_video_url_title.userData.boxWidth = ctx.measureText(me._ht_video_url_title.userData.ggText).width + 0; me._ht_video_url_title.userData.boxHeight = me._ht_video_url_title.userData.totalHeight; canv.width = me._ht_video_url_title.userData.boxWidth; canv.height = me._ht_video_url_title.userData.boxHeight; ctx.font = '18px Verdana'; me._ht_video_url_title.userData.ggPaintCanvasText(); } me._ht_video_url_title.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(player._(me.hotspot.title)))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._ht_video_url_title.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._ht_video_url_title.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_url_title.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._ht_video_url_title.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._ht_video_url_title.userData.textColorAlpha = v; } el.userData.ggId="ht_video_url_title"; me._ht_video_url_title.logicBlock_alpha = function() { var newLogicStateAlpha; if ( ((me.elementMouseOver['ht_video_url_bg'] == true)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_video_url_title.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_video_url_title.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_video_url_title.ggCurrentLogicStateAlpha == 0) { me._ht_video_url_title.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_video_url_title.userData.transitions.length; i++) { if (me._ht_video_url_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_url_title.userData.transitions[i].interval); me._ht_video_url_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_url_title.material ? me._ht_video_url_title.material.opacity : me._ht_video_url_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_url_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_url_title.userData.transitions.splice(me._ht_video_url_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_url_title.userData.transitions.push(transition_alpha); } else { me._ht_video_url_title.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_video_url_title.userData.transitions.length; i++) { if (me._ht_video_url_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_url_title.userData.transitions[i].interval); me._ht_video_url_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_url_title.material ? me._ht_video_url_title.material.opacity : me._ht_video_url_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_url_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_url_title.userData.transitions.splice(me._ht_video_url_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_url_title.userData.transitions.push(transition_alpha); } } } me._ht_video_url_title.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_url_bg.add(me._ht_video_url_title); me._ht_video_url.add(me._ht_video_url_bg); width = 6.6; height = 4.8; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.3, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.3, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.3); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.3, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.3, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.3); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.3, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_video_url_popup_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.666667)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_video_url_popup_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.666667; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_video_url_popup_bg.material.opacity = v * me._ht_video_url_popup_bg.userData.backgroundColorAlpha; if (me._ht_video_url_popup_bg.userData.ggSubElement) { me._ht_video_url_popup_bg.userData.ggSubElement.material.opacity = v me._ht_video_url_popup_bg.userData.ggSubElement.visible = (v>0 && me._ht_video_url_popup_bg.userData.visible); } me._ht_video_url_popup_bg.visible = (v>0 && me._ht_video_url_popup_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_video_url_popup_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_url_popup_bg.userData.backgroundColorAlpha = v; me._ht_video_url_popup_bg.userData.setOpacity(me._ht_video_url_popup_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(0.10, 0.10, 1.0); el.userData.width = 660; el.userData.height = 480; el.userData.scale = {x: 0.10, y: 0.10, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_url_popup_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_url_popup_bg.visible let parentEl = me._ht_video_url_popup_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url_popup_bg.userData.opacity = v; v = v * me._ht_video_url_popup_bg.userData.parentOpacity; me._ht_video_url_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_popup_bg.children.length; i++) { let child = me._ht_video_url_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url_popup_bg.userData.parentOpacity = v; v = v * me._ht_video_url_popup_bg.userData.opacity me._ht_video_url_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_popup_bg.children.length; i++) { let child = me._ht_video_url_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url_popup_bg = el; el.userData.ggId="ht_video_url_popup_bg"; me._ht_video_url_popup_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_video_url_popup_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_video_url_popup_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_video_url_popup_bg.ggCurrentLogicStateScaling == 0) { me._ht_video_url_popup_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_video_url_popup_bg.userData.transitions.length; i++) { if (me._ht_video_url_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_url_popup_bg.userData.transitions[i].interval); me._ht_video_url_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_url_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_video_url_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_url_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_url_popup_bg.position.x = (me._ht_video_url_popup_bg.position.x - me._ht_video_url_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_url_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_video_url_popup_bg.position.y = (me._ht_video_url_popup_bg.position.y - me._ht_video_url_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_url_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_url_popup_bg.userData.transitions.splice(me._ht_video_url_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_url_popup_bg.userData.transitions.push(transition_scale); } else { me._ht_video_url_popup_bg.userData.transitionValue_scale = {x: 0.1, y: 0.1, z: 1.0}; for (var i = 0; i < me._ht_video_url_popup_bg.userData.transitions.length; i++) { if (me._ht_video_url_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_url_popup_bg.userData.transitions[i].interval); me._ht_video_url_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_url_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_video_url_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_url_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_url_popup_bg.position.x = (me._ht_video_url_popup_bg.position.x - me._ht_video_url_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_url_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_video_url_popup_bg.position.y = (me._ht_video_url_popup_bg.position.y - me._ht_video_url_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_url_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_url_popup_bg.userData.transitions.splice(me._ht_video_url_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_url_popup_bg.userData.transitions.push(transition_scale); } } } me._ht_video_url_popup_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_video_url_popup_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_video_url_popup_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_video_url_popup_bg.ggCurrentLogicStateAlpha == 0) { me._ht_video_url_popup_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_video_url_popup_bg.userData.transitions.length; i++) { if (me._ht_video_url_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_url_popup_bg.userData.transitions[i].interval); me._ht_video_url_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_url_popup_bg.material ? me._ht_video_url_popup_bg.material.opacity : me._ht_video_url_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_url_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_url_popup_bg.userData.transitions.splice(me._ht_video_url_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_url_popup_bg.userData.transitions.push(transition_alpha); } else { me._ht_video_url_popup_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_video_url_popup_bg.userData.transitions.length; i++) { if (me._ht_video_url_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_url_popup_bg.userData.transitions[i].interval); me._ht_video_url_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_url_popup_bg.material ? me._ht_video_url_popup_bg.material.opacity : me._ht_video_url_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_url_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_url_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_url_popup_bg.userData.transitions.splice(me._ht_video_url_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_url_popup_bg.userData.transitions.push(transition_alpha); } } } me._ht_video_url_popup_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(6, 3.8, 5, 5 ); geometry.name = 'ht_video_url_popup_geometry'; material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_video_url_popup_material'; el = new THREE.Mesh( geometry, material ); el.translateX(0); el.translateY(-0.1); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 600; el.userData.height = 380; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_url_popup'; el.userData.x = 0; el.userData.y = -0.1; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_video_url_popup.material.opacity = v; me._ht_video_url_popup.visible = (v>0 && me._ht_video_url_popup.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_video_url_popup.visible let parentEl = me._ht_video_url_popup.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url_popup.userData.opacity = v; v = v * me._ht_video_url_popup.userData.parentOpacity; me._ht_video_url_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_popup.children.length; i++) { let child = me._ht_video_url_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url_popup.userData.parentOpacity = v; v = v * me._ht_video_url_popup.userData.opacity me._ht_video_url_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_popup.children.length; i++) { let child = me._ht_video_url_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = false; el.userData.visible = false; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url_popup = el; me._ht_video_url_popup.userData.seekbars = []; me._ht_video_url_popup.userData.ggInitMedia = function(media) { if (me._ht_video_url_popup__vid) me._ht_video_url_popup__vid.pause(); me._ht_video_url_popup__vid = document.createElement('video'); player.registerVideoElement('ht_video_url_popup', me._ht_video_url_popup__vid); me._ht_video_url_popup__vid.setAttribute('autoplay', ''); me._ht_video_url_popup__source = document.createElement('source'); me._ht_video_url_popup__source.setAttribute('src', media); me._ht_video_url_popup__vid.addEventListener('loadedmetadata', function() { let videoAR = me._ht_video_url_popup__vid.videoWidth / me._ht_video_url_popup__vid.videoHeight; let elAR = me._ht_video_url_popup.userData.width / me._ht_video_url_popup.userData.height; if (videoAR > elAR) { me._ht_video_url_popup.scale.set(1, (me._ht_video_url_popup.userData.width / videoAR) / me._ht_video_url_popup.userData.height, 1); } else { me._ht_video_url_popup.scale.set((me._ht_video_url_popup.userData.height * videoAR) / me._ht_video_url_popup.userData.width, 1, 1); } }, false); me._ht_video_url_popup__vid.appendChild(me._ht_video_url_popup__source); videoTexture = new THREE.VideoTexture( me._ht_video_url_popup__vid ); videoTexture.name = 'ht_video_url_popup_videoTexture'; videoTexture.minFilter = THREE.LinearFilter; videoTexture.magFilter = THREE.LinearFilter; videoTexture.format = THREE.RGBAFormat; videoMaterial = new THREE.MeshBasicMaterial( {map: videoTexture, side: THREE.DoubleSide, transparent: true} ); videoMaterial.name = 'ht_video_url_popup_videoMaterial'; videoMaterial.alphaTest = 0.5; me._ht_video_url_popup.material = videoMaterial; } el.userData.ggId="ht_video_url_popup"; me._ht_video_url_popup.userData.ggIsActive=function() { if (me._ht_video_url_popup__vid != null) { return (me._ht_video_url_popup__vid.paused == false && me._ht_video_url_popup__vid.ended == false); } else { return false; } } me._ht_video_url_popup.logicBlock_visible = function() { var newLogicStateVisible; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateVisible = 0; } else { newLogicStateVisible = -1; } if (me._ht_video_url_popup.ggCurrentLogicStateVisible != newLogicStateVisible) { me._ht_video_url_popup.ggCurrentLogicStateVisible = newLogicStateVisible; if (me._ht_video_url_popup.ggCurrentLogicStateVisible == 0) { me._ht_video_url_popup.visible=((!me._ht_video_url_popup.material && Number(me._ht_video_url_popup.userData.opacity>0)) || Number(me._ht_video_url_popup.material.opacity)>0)?true:false; me._ht_video_url_popup.userData.visible=true; if (me._ht_video_url_popup.userData.ggVideoNotLoaded) { me._ht_video_url_popup.userData.ggInitMedia(me._ht_video_url_popup.ggVideoSource); } } else { me._ht_video_url_popup.visible=false; me._ht_video_url_popup.userData.visible=false; me._ht_video_url_popup.userData.ggInitMedia(''); } } } me._ht_video_url_popup.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_url_popup_bg.add(me._ht_video_url_popup); geometry = new THREE.PlaneBufferGeometry(0.4, 0.4, 5, 5 ); geometry.name = 'ht_video_url_popup_close_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABJElEQVR4nO3bSw6DMBAEUSs341icfrLJSJGFAeNfY9c7QU9JiJVDAAAAAAAAAADgdcxsM7Nt9I4U6X2/cW4fvSdmZvvfPr2IUUCpiFE8zYAhHA4dHlFx0ymlwUpbsigMV9hQZOQBr4/nRhwyTTzX86Dp4rkeh00bz7U8cPp4rsWhy8RzNQ9eLp6rcfiy8VxJgOXjuSchiBfJCUK8hDthiHfhLBDxbjoKRbxMB8GIlysRUTLeZ/QAVMYnXICfSIGzUES8cCcQERNywhAx8iQIEX9KQiwfsUaAZSPWPHy5iC0OXiZiy0Onj9jjwGkj9jxsuogjDpom4shDXh9R4QCFDY8oDVfacoviYMVNh4xnDmWMhzblTPkpVdDfBwAAAAAAAABA2hcaGfeSY++bsA'+ 'AAAABJRU5ErkJggg=='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_video_url_popup_close_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(2.85); el.translateY(2.05); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 40; el.userData.height = 40; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_url_popup_close'; el.userData.x = 2.85; el.userData.y = 2.05; el.userData.hanchor = 2; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_video_url_popup_close.material.opacity = v; me._ht_video_url_popup_close.visible = (v>0 && me._ht_video_url_popup_close.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_video_url_popup_close.visible let parentEl = me._ht_video_url_popup_close.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_url_popup_close.userData.opacity = v; v = v * me._ht_video_url_popup_close.userData.parentOpacity; me._ht_video_url_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_popup_close.children.length; i++) { let child = me._ht_video_url_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_url_popup_close.userData.parentOpacity = v; v = v * me._ht_video_url_popup_close.userData.opacity me._ht_video_url_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_url_popup_close.children.length; i++) { let child = me._ht_video_url_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_url_popup_close = el; textureOver = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABtUlEQVR4nO3bUU7CQBRG4dPGHcCDbsaIu4IF4K6QsJn2QbdAfcAGUBD13pl7Cf/3YqJJO3NEitMpiIiIiIiIiIiIiIhcnXU3na276Sx6HOeUGF/rdaB1N521zXbVNtvVpp/MvY7rZdNP5uP4PCO6BTw2LDNF3I1lWJY4tlvAp4e3V2gW++/kiPg9XrPYjdVH43Wg0akBP96/v3ifJ8tY3ANCjoi1xlAkIMRGrHnuYgEhJmLtcxYNCHUnFPELKx4Q6kws6i2jSkAoO8HI99tqAaHMRKOv+FUDgu+Eo+NBQEDwmXiGeBAUEGwBssSDwIDwvxCZ4kFwQPhbkGzxIEFA+F2YjPEgSUD4OVDWeJAoIJwOtfuaMx4kCwiXVo9zxYOEAeFcxHzxoNg9kduR7h'+ 'WoP2GDa7yI3EUPYHThYwz7nw3LTT8hS8QUr0B9kDbQv3IGWkww0HKWgRZUDbSkb6CbSga6rWmgG+sG2tphoM1FBtreZhB9Zaw5Bm3xNXINmCneqPSY3AKOz4kcHDo83uhrxO3QPnvt1C90TyRPPOBz8fXwEYykbvFRLxERERERERERERGROj4AIjXeRMYl/SsAAAAASUVORK5CYII='); el.userData.materialOver = new THREE.MeshBasicMaterial( {map: textureOver, side: THREE.DoubleSide, transparent: true} ); el.userData.materialOver.name = 'ht_video_url_popup_close_materialOver'; el.userData.ggId="ht_video_url_popup_close"; me._ht_video_url_popup_close.userData.onclick=function (e) { player.setVariableValue('open_video_hs', player.getVariableValue('open_video_hs').replace("<"+me.hotspot.id+">", '')); } me._ht_video_url_popup_close.userData.onmouseover=function (e) { me._ht_video_url_popup_close.material = me._ht_video_url_popup_close.userData.materialOver; me.elementMouseOver['ht_video_url_popup_close']=true; } me._ht_video_url_popup_close.userData.onmouseout=function (e) { me._ht_video_url_popup_close.material = me._ht_video_url_popup_close.userData.materialNormal; me.elementMouseOver['ht_video_url_popup_close']=false; } me._ht_video_url_popup_close.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_url_popup_bg.add(me._ht_video_url_popup_close); me._ht_video_url.add(me._ht_video_url_popup_bg); me._ht_video_url.userData.setOpacity(1.00); me._ht_video_url_bg.userData.setOpacity(1.00); me._ht_video_url_icon.userData.setOpacity(1.00); me._ht_video_url_title.userData.setOpacity(0.00); me._ht_video_url_popup_bg.userData.setOpacity(0.00); me._ht_video_url_popup.userData.setOpacity(1.00); me._ht_video_url_popup.userData.ggVideoSource = ''; me._ht_video_url_popup.userData.ggVideoNotLoaded = true; me._ht_video_url_popup_close.userData.setOpacity(1.00); me.ggEvent_changenode=function() { me._ht_video_url_bg.logicBlock_alpha(); me._ht_video_url_popup_bg.logicBlock_scaling(); me._ht_video_url_popup_bg.logicBlock_alpha(); me._ht_video_url_popup.logicBlock_visible(); }; me.ggEvent_configloaded=function() { me._ht_video_url_bg.logicBlock_alpha(); me._ht_video_url_popup_bg.logicBlock_scaling(); me._ht_video_url_popup_bg.logicBlock_alpha(); me._ht_video_url_popup.logicBlock_visible(); }; me.ggEvent_varchanged_open_video_hs=function() { me._ht_video_url_bg.logicBlock_alpha(); me._ht_video_url_popup_bg.logicBlock_scaling(); me._ht_video_url_popup_bg.logicBlock_alpha(); me._ht_video_url_popup.logicBlock_visible(); }; me.__obj = me._ht_video_url; me.__obj.userData.hotspot = hotspot; me.__obj.userData.fromSkin = true; }; function SkinHotspotClass_ht_video_file(parentScope,hotspot) { var me=this; var flag=false; var hs=''; me.parentScope=parentScope; me.hotspot=hotspot; var nodeId=String(hotspot.url); nodeId=(nodeId.charAt(0)=='{')?nodeId.substr(1, nodeId.length - 2):''; // } me.ggUserdata=skin.player.getNodeUserdata(nodeId); me.ggUserdata.nodeId=nodeId; me.elementMouseDown={}; me.elementMouseOver={}; me.findElements=function(id,regex) { return skin.findElements(id,regex); } el = new THREE.Group(); el.userData.setOpacityInternal = function(v) {}; el.name = 'ht_video_file'; el.userData.x = 2.72; el.userData.y = 2.08; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_file.visible let parentEl = me._ht_video_file.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file.userData.opacity = v; v = v * me._ht_video_file.userData.parentOpacity; me._ht_video_file.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file.children.length; i++) { let child = me._ht_video_file.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file.userData.parentOpacity = v; v = v * me._ht_video_file.userData.opacity me._ht_video_file.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file.children.length; i++) { let child = me._ht_video_file.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file = el; el.userData.ggId="ht_video_file"; el.userData.ggElementNodeId=function() { if (me.hotspot.url!='' && me.hotspot.url.charAt(0)=='{') { // } return me.hotspot.url.substr(1, me.hotspot.url.length - 2); } else { if ((this.parentNode) && (this.parentNode.userData.ggElementNodeId)) { return this.parentNode.userData.ggElementNodeId(); } else { return player.getCurrentNode(); } } } me._ht_video_file.userData.onclick=function (e) { player.triggerEvent('hsproxyclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_file.userData.ondblclick=function (e) { player.triggerEvent('hsproxydblclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_file.userData.onmouseover=function (e) { player.setActiveHotspot(me.hotspot); me.elementMouseOver['ht_video_file']=true; player.triggerEvent('hsproxyover', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_file.userData.onmouseout=function (e) { player.setActiveHotspot(null); me.elementMouseOver['ht_video_file']=false; player.triggerEvent('hsproxyout', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_video_file.userData.ggUpdatePosition=function (useTransition) { } width = 0.45; height = 0.45; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_video_file_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_video_file_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_video_file_bg.material.opacity = v * me._ht_video_file_bg.userData.backgroundColorAlpha; if (me._ht_video_file_bg.userData.ggSubElement) { me._ht_video_file_bg.userData.ggSubElement.material.opacity = v me._ht_video_file_bg.userData.ggSubElement.visible = (v>0 && me._ht_video_file_bg.userData.visible); } me._ht_video_file_bg.visible = (v>0 && me._ht_video_file_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_video_file_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_file_bg.userData.backgroundColorAlpha = v; me._ht_video_file_bg.userData.setOpacity(me._ht_video_file_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 45; el.userData.height = 45; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_file_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.010); el.renderOrder = 1; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_file_bg.visible let parentEl = me._ht_video_file_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file_bg.userData.opacity = v; v = v * me._ht_video_file_bg.userData.parentOpacity; me._ht_video_file_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_bg.children.length; i++) { let child = me._ht_video_file_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file_bg.userData.parentOpacity = v; v = v * me._ht_video_file_bg.userData.opacity me._ht_video_file_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_bg.children.length; i++) { let child = me._ht_video_file_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file_bg = el; el.userData.ggId="ht_video_file_bg"; me._ht_video_file_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['ht_video_file_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_video_file_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_video_file_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_video_file_bg.ggCurrentLogicStateScaling == 0) { me._ht_video_file_bg.userData.transitionValue_scale = {x: 1.2, y: 1.2, z: 1.0}; for (var i = 0; i < me._ht_video_file_bg.userData.transitions.length; i++) { if (me._ht_video_file_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_file_bg.userData.transitions[i].interval); me._ht_video_file_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_file_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_bg.scale.set(transition_scale.startScale.x + (me._ht_video_file_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_file_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_file_bg.position.x = (me._ht_video_file_bg.position.x - me._ht_video_file_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_file_bg.userData.curScaleOffX = scaleOffX; me._ht_video_file_bg.position.y = (me._ht_video_file_bg.position.y - me._ht_video_file_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_file_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_file_bg.userData.transitions.splice(me._ht_video_file_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_file_bg.userData.transitions.push(transition_scale); } else { me._ht_video_file_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_video_file_bg.userData.transitions.length; i++) { if (me._ht_video_file_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_file_bg.userData.transitions[i].interval); me._ht_video_file_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_file_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_bg.scale.set(transition_scale.startScale.x + (me._ht_video_file_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_file_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_file_bg.position.x = (me._ht_video_file_bg.position.x - me._ht_video_file_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_file_bg.userData.curScaleOffX = scaleOffX; me._ht_video_file_bg.position.y = (me._ht_video_file_bg.position.y - me._ht_video_file_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_file_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_file_bg.userData.transitions.splice(me._ht_video_file_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_file_bg.userData.transitions.push(transition_scale); } } } me._ht_video_file_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_video_file_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_video_file_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_video_file_bg.ggCurrentLogicStateAlpha == 0) { me._ht_video_file_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_video_file_bg.userData.transitions.length; i++) { if (me._ht_video_file_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_file_bg.userData.transitions[i].interval); me._ht_video_file_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_file_bg.material ? me._ht_video_file_bg.material.opacity : me._ht_video_file_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_file_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_file_bg.userData.transitions.splice(me._ht_video_file_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_file_bg.userData.transitions.push(transition_alpha); } else { me._ht_video_file_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_video_file_bg.userData.transitions.length; i++) { if (me._ht_video_file_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_file_bg.userData.transitions[i].interval); me._ht_video_file_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_file_bg.material ? me._ht_video_file_bg.material.opacity : me._ht_video_file_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_file_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_file_bg.userData.transitions.splice(me._ht_video_file_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_file_bg.userData.transitions.push(transition_alpha); } } } me._ht_video_file_bg.userData.onclick=function (e) { player.setVariableValue('open_video_hs', player.getVariableValue('open_video_hs') + "<"+me.hotspot.id+">"); me._ht_video_file_popup.userData.ggInitMedia(player._(me.hotspot.url)); } me._ht_video_file_bg.userData.onmouseover=function (e) { me.elementMouseOver['ht_video_file_bg']=true; me._ht_video_file_title.logicBlock_alpha(); me._ht_video_file_bg.logicBlock_scaling(); } me._ht_video_file_bg.userData.ontouchend=function (e) { me._ht_video_file_bg.logicBlock_scaling(); } me._ht_video_file_bg.userData.onmouseout=function (e) { me.elementMouseOver['ht_video_file_bg']=false; me._ht_video_file_title.logicBlock_alpha(); me._ht_video_file_bg.logicBlock_scaling(); } me._ht_video_file_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.36, 0.36, 5, 5 ); geometry.name = 'ht_video_file_icon_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAELklEQVR4nO2bQWgcVRjHf9/b3UgtpGQ2uJvGSw+NIDSHVmgaSSIF6UFQDF48iFaj3kUCbe8tIgWvRmubixfRongpQkMStCtoDykIbQ9FMM2OZDcYaKvZ7HwedibZpLtpmN3Zbmff77Jv3773vm//vPefZfYbsFgsFovFYrFYLBaLpc2QnT78OZ95pixrB8VLpFqVUD3UlEsJ7br9Ytb9u5Vxawo0m+99VfBOA0dbmcwu+VUxZ8eyyz+0ItgWgX5TUvdd53PgZCuCN8jFpzPFD18QSlEGSVa/qRZHYRH0EsgNo8aNMond4ImXAT0E8o5AP3DyvusAxXejjLuxg/xj9T2AwjdPpZgYShdXowwehlzB6V5b5wLKGwCKeS3K42aChu85KCy2qzgAQ+nial'+ 'eS9yo7HMA7FWU8A5WrFRuGrJfaVZyAoXRxVdBpAIEhP/+mMJvfd2A2v+9A8N4AlGXt4OYQudGsYFGiyELQ3pp/yPUUM7fUMykkbgqJm4FISQDxEikVD4B2MOTdYNS4Qc6N/k6b+ct5dt5lGuH4RqeYYeCOqT+tM5h10+OJJAtQJQ5gvMQibLvMdxJX8pm9eyh9hurERqdyC2GgelxHCjR/t/eIaunrKjGKIjKByorizVSP7agjFhixGu9alThXk0kZHMkULtea0zE7qIYRl1A9M5JdOS+CV29eRwg066bHRfVLoAeoeI2aN0f3L19/1NxYC1TLiBWm/pXURyf63Hu7WSO2AtUz4tE6XlOP2Jl0GCPeiVjtoLBGvBOxEagRI96JWBwxFe9jUf0WXxyFqQeSOtyoOBCfHfSK/xrKiHfiyRXIK/eR2LylLuhMImneGu4t'+ 'LDYzTCyOGIA+4i+ssDy5ApnE0tYOeWl9XRfm3fTrTQ3TzMUeF4L86DcdVf1uLu9MXcln9jZj7VgIhMp5ERkHin7P+3u0dH3+bu+RRpeOh0DASKZwOZmUQeAqAMKAGu/a3FLPpGr47xkbgQCGewuLI5niy6hOAiUghcgn867z0y/L6f4wa8ZKIAARvNG+lU/FM8dQbvndx8MaeOwEChjZv/z7A0kdBr7wu0IZeGwFAjiRde+NZosfNGLgsRYooBED7wiBILyBd4xAEM7AO0qggHoGruJNbR/bkQJBXQN/qAiiYwUKeMjAt2GgUkEadFRK3dqf6jyr8w9DDQMveVL6E3yBEtp1e3O4HmokWKsQdDBob80/5Hq+gZfVG1DKz41l/7lTieMzl3dywFG/BO/5dq4yyxWc7v9K/CHQr5AbyxaPRRVrw4MUcxZAoH9tnQu5gt'+ 'MdVdBGCIo4/UpXwJyLMt6W25RzeecrqsqABZ1WZKEdqs488TKCDiry9qY4XBzNtqgMGGwheS3qPooA3imBoSiDh0EhB+bcY3kUYTv2YRaLxWKxWCwWi8VisVjakP8BZHvmicJF33oAAAAASUVORK5CYII='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_video_file_icon_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 36; el.userData.height = 36; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_file_icon'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_video_file_icon.material.opacity = v; me._ht_video_file_icon.visible = (v>0 && me._ht_video_file_icon.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_video_file_icon.visible let parentEl = me._ht_video_file_icon.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file_icon.userData.opacity = v; v = v * me._ht_video_file_icon.userData.parentOpacity; me._ht_video_file_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_icon.children.length; i++) { let child = me._ht_video_file_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file_icon.userData.parentOpacity = v; v = v * me._ht_video_file_icon.userData.opacity me._ht_video_file_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_icon.children.length; i++) { let child = me._ht_video_file_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file_icon = el; el.userData.ggId="ht_video_file_icon"; me._ht_video_file_icon.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_file_bg.add(me._ht_video_file_icon); geometry = new THREE.PlaneBufferGeometry(1, 0.2, 5, 5 ); geometry.name = 'ht_video_file_title_geometry'; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_video_file_title_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 1; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_video_file_title.material.opacity = v; if (me._ht_video_file_title.userData.hasScrollbar) { me._ht_video_file_title.userData.scrollbar.material.opacity = v; me._ht_video_file_title.userData.scrollbarBg.material.opacity = v; } if (me._ht_video_file_title.userData.ggSubElement) { me._ht_video_file_title.userData.ggSubElement.material.opacity = v me._ht_video_file_title.userData.ggSubElement.visible = (v>0 && me._ht_video_file_title.userData.visible); } me._ht_video_file_title.visible = (v>0 && me._ht_video_file_title.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_video_file_title.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_file_title.userData.backgroundColorAlpha = v; me._ht_video_file_title.userData.setOpacity(me._ht_video_file_title.userData.opacity); } el.translateX(0); el.translateY(-0.325); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 100; el.userData.height = 20; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_file_title'; el.userData.x = 0; el.userData.y = -0.325; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_file_title.visible let parentEl = me._ht_video_file_title.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file_title.userData.opacity = v; v = v * me._ht_video_file_title.userData.parentOpacity; me._ht_video_file_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_title.children.length; i++) { let child = me._ht_video_file_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file_title.userData.parentOpacity = v; v = v * me._ht_video_file_title.userData.opacity me._ht_video_file_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_title.children.length; i++) { let child = me._ht_video_file_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file_title = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(1, 1, 1); el.userData.textColor = new THREE.Color(0.760784, 0.909804, 0.0705882); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 100; canvas.height = 20; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._ht_video_file_title.userData.totalHeight = 3; me._ht_video_file_title.userData.textLines = []; var ctx = me._ht_video_file_title.userData.textCanvasContext; var words = me._ht_video_file_title.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._ht_video_file_title.userData.width - 0 - (scrollbar ? 25 : 0)) && i > 0) { me._ht_video_file_title.userData.textLines.push(line); line = words[i]; me._ht_video_file_title.userData.totalHeight += me._ht_video_file_title.userData.lineHeight; } else { line = testLine; } } me._ht_video_file_title.userData.textLines.push(line); me._ht_video_file_title.userData.totalHeight += me._ht_video_file_title.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._ht_video_file_title.userData.textCanvas; var ctx = me._ht_video_file_title.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_video_file_title.userData.textColor.r * 255 + ', ' + me._ht_video_file_title.userData.textColor.g * 255 + ', ' + me._ht_video_file_title.userData.textColor.b * 255 + ', ' + me._ht_video_file_title.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = (me._ht_video_file_title.userData.boxWidth - (me._ht_video_file_title.userData.hasScrollbar ? 25 : 0)) / 2; ctx.textAlign = 'center'; var y = 3; for (var i = 0; i < me._ht_video_file_title.userData.textLines.length; i++) { ctx.fillText(me._ht_video_file_title.userData.textLines[i], x, y); y += me._ht_video_file_title.userData.lineHeight; } geometry = new THREE.PlaneBufferGeometry(me._ht_video_file_title.userData.boxWidth / 100.0, me._ht_video_file_title.userData.boxHeight / 100.0, 5, 5 ); geometry.name = 'ht_video_file_title_geometry'; me._ht_video_file_title.geometry.dispose(); me._ht_video_file_title.geometry = geometry; var diffY = me._ht_video_file_title.userData.boxHeight - me._ht_video_file_title.userData.height; me._ht_video_file_title.position.y = me._ht_video_file_title.userData.y - ((diffY / 2.0) / 100.0); var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'ht_video_file_title_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._ht_video_file_title.material.map) { me._ht_video_file_title.material.map.dispose(); } me._ht_video_file_title.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._ht_video_file_title.userData.textCanvas; var ctx = me._ht_video_file_title.userData.textCanvasContext; ctx.font = '18px Verdana'; me._ht_video_file_title.userData.lineHeight = 18 * 1.2; me._ht_video_file_title.userData.textLines = []; me._ht_video_file_title.userData.textLines.push(me._ht_video_file_title.userData.ggText); me._ht_video_file_title.userData.totalHeight = 3; me._ht_video_file_title.userData.totalHeight += me._ht_video_file_title.userData.lineHeight; me._ht_video_file_title.userData.boxWidth = ctx.measureText(me._ht_video_file_title.userData.ggText).width + 0; me._ht_video_file_title.userData.boxHeight = me._ht_video_file_title.userData.totalHeight; canv.width = me._ht_video_file_title.userData.boxWidth; canv.height = me._ht_video_file_title.userData.boxHeight; ctx.font = '18px Verdana'; me._ht_video_file_title.userData.ggPaintCanvasText(); } me._ht_video_file_title.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(player._(me.hotspot.title)))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._ht_video_file_title.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._ht_video_file_title.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_file_title.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._ht_video_file_title.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._ht_video_file_title.userData.textColorAlpha = v; } el.userData.ggId="ht_video_file_title"; me._ht_video_file_title.logicBlock_alpha = function() { var newLogicStateAlpha; if ( ((me.elementMouseOver['ht_video_file_bg'] == true)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_video_file_title.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_video_file_title.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_video_file_title.ggCurrentLogicStateAlpha == 0) { me._ht_video_file_title.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_video_file_title.userData.transitions.length; i++) { if (me._ht_video_file_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_file_title.userData.transitions[i].interval); me._ht_video_file_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_file_title.material ? me._ht_video_file_title.material.opacity : me._ht_video_file_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_file_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_file_title.userData.transitions.splice(me._ht_video_file_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_file_title.userData.transitions.push(transition_alpha); } else { me._ht_video_file_title.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_video_file_title.userData.transitions.length; i++) { if (me._ht_video_file_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_file_title.userData.transitions[i].interval); me._ht_video_file_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_file_title.material ? me._ht_video_file_title.material.opacity : me._ht_video_file_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_file_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_file_title.userData.transitions.splice(me._ht_video_file_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_file_title.userData.transitions.push(transition_alpha); } } } me._ht_video_file_title.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_file_bg.add(me._ht_video_file_title); me._ht_video_file.add(me._ht_video_file_bg); width = 6.6; height = 4.8; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.3, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.3, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.3); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.3, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.3, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.3); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.3, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_video_file_popup_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.666667)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_video_file_popup_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.666667; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_video_file_popup_bg.material.opacity = v * me._ht_video_file_popup_bg.userData.backgroundColorAlpha; if (me._ht_video_file_popup_bg.userData.ggSubElement) { me._ht_video_file_popup_bg.userData.ggSubElement.material.opacity = v me._ht_video_file_popup_bg.userData.ggSubElement.visible = (v>0 && me._ht_video_file_popup_bg.userData.visible); } me._ht_video_file_popup_bg.visible = (v>0 && me._ht_video_file_popup_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_video_file_popup_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_video_file_popup_bg.userData.backgroundColorAlpha = v; me._ht_video_file_popup_bg.userData.setOpacity(me._ht_video_file_popup_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(0.10, 0.10, 1.0); el.userData.width = 660; el.userData.height = 480; el.userData.scale = {x: 0.10, y: 0.10, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_file_popup_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_video_file_popup_bg.visible let parentEl = me._ht_video_file_popup_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file_popup_bg.userData.opacity = v; v = v * me._ht_video_file_popup_bg.userData.parentOpacity; me._ht_video_file_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_popup_bg.children.length; i++) { let child = me._ht_video_file_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file_popup_bg.userData.parentOpacity = v; v = v * me._ht_video_file_popup_bg.userData.opacity me._ht_video_file_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_popup_bg.children.length; i++) { let child = me._ht_video_file_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file_popup_bg = el; el.userData.ggId="ht_video_file_popup_bg"; me._ht_video_file_popup_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_video_file_popup_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_video_file_popup_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_video_file_popup_bg.ggCurrentLogicStateScaling == 0) { me._ht_video_file_popup_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_video_file_popup_bg.userData.transitions.length; i++) { if (me._ht_video_file_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_file_popup_bg.userData.transitions[i].interval); me._ht_video_file_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_file_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_video_file_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_file_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_file_popup_bg.position.x = (me._ht_video_file_popup_bg.position.x - me._ht_video_file_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_file_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_video_file_popup_bg.position.y = (me._ht_video_file_popup_bg.position.y - me._ht_video_file_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_file_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_file_popup_bg.userData.transitions.splice(me._ht_video_file_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_file_popup_bg.userData.transitions.push(transition_scale); } else { me._ht_video_file_popup_bg.userData.transitionValue_scale = {x: 0.1, y: 0.1, z: 1.0}; for (var i = 0; i < me._ht_video_file_popup_bg.userData.transitions.length; i++) { if (me._ht_video_file_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_video_file_popup_bg.userData.transitions[i].interval); me._ht_video_file_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_video_file_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_video_file_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_video_file_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_video_file_popup_bg.position.x = (me._ht_video_file_popup_bg.position.x - me._ht_video_file_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_video_file_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_video_file_popup_bg.position.y = (me._ht_video_file_popup_bg.position.y - me._ht_video_file_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_video_file_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_video_file_popup_bg.userData.transitions.splice(me._ht_video_file_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_video_file_popup_bg.userData.transitions.push(transition_scale); } } } me._ht_video_file_popup_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_video_file_popup_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_video_file_popup_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_video_file_popup_bg.ggCurrentLogicStateAlpha == 0) { me._ht_video_file_popup_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_video_file_popup_bg.userData.transitions.length; i++) { if (me._ht_video_file_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_file_popup_bg.userData.transitions[i].interval); me._ht_video_file_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_file_popup_bg.material ? me._ht_video_file_popup_bg.material.opacity : me._ht_video_file_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_file_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_file_popup_bg.userData.transitions.splice(me._ht_video_file_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_file_popup_bg.userData.transitions.push(transition_alpha); } else { me._ht_video_file_popup_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_video_file_popup_bg.userData.transitions.length; i++) { if (me._ht_video_file_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_video_file_popup_bg.userData.transitions[i].interval); me._ht_video_file_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_video_file_popup_bg.material ? me._ht_video_file_popup_bg.material.opacity : me._ht_video_file_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_video_file_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_video_file_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_video_file_popup_bg.userData.transitions.splice(me._ht_video_file_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_video_file_popup_bg.userData.transitions.push(transition_alpha); } } } me._ht_video_file_popup_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(6, 3.8, 5, 5 ); geometry.name = 'ht_video_file_popup_geometry'; material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_video_file_popup_material'; el = new THREE.Mesh( geometry, material ); el.translateX(0); el.translateY(-0.1); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 600; el.userData.height = 380; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_file_popup'; el.userData.x = 0; el.userData.y = -0.1; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_video_file_popup.material.opacity = v; me._ht_video_file_popup.visible = (v>0 && me._ht_video_file_popup.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_video_file_popup.visible let parentEl = me._ht_video_file_popup.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file_popup.userData.opacity = v; v = v * me._ht_video_file_popup.userData.parentOpacity; me._ht_video_file_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_popup.children.length; i++) { let child = me._ht_video_file_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file_popup.userData.parentOpacity = v; v = v * me._ht_video_file_popup.userData.opacity me._ht_video_file_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_popup.children.length; i++) { let child = me._ht_video_file_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = false; el.userData.visible = false; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file_popup = el; me._ht_video_file_popup.userData.seekbars = []; me._ht_video_file_popup.userData.ggInitMedia = function(media) { if (me._ht_video_file_popup__vid) me._ht_video_file_popup__vid.pause(); me._ht_video_file_popup__vid = document.createElement('video'); player.registerVideoElement('ht_video_file_popup', me._ht_video_file_popup__vid); me._ht_video_file_popup__vid.setAttribute('autoplay', ''); me._ht_video_file_popup__source = document.createElement('source'); me._ht_video_file_popup__source.setAttribute('src', media); me._ht_video_file_popup__vid.addEventListener('loadedmetadata', function() { let videoAR = me._ht_video_file_popup__vid.videoWidth / me._ht_video_file_popup__vid.videoHeight; let elAR = me._ht_video_file_popup.userData.width / me._ht_video_file_popup.userData.height; if (videoAR > elAR) { me._ht_video_file_popup.scale.set(1, (me._ht_video_file_popup.userData.width / videoAR) / me._ht_video_file_popup.userData.height, 1); } else { me._ht_video_file_popup.scale.set((me._ht_video_file_popup.userData.height * videoAR) / me._ht_video_file_popup.userData.width, 1, 1); } }, false); me._ht_video_file_popup__vid.appendChild(me._ht_video_file_popup__source); videoTexture = new THREE.VideoTexture( me._ht_video_file_popup__vid ); videoTexture.name = 'ht_video_file_popup_videoTexture'; videoTexture.minFilter = THREE.LinearFilter; videoTexture.magFilter = THREE.LinearFilter; videoTexture.format = THREE.RGBAFormat; videoMaterial = new THREE.MeshBasicMaterial( {map: videoTexture, side: THREE.DoubleSide, transparent: true} ); videoMaterial.name = 'ht_video_file_popup_videoMaterial'; videoMaterial.alphaTest = 0.5; me._ht_video_file_popup.material = videoMaterial; } el.userData.ggId="ht_video_file_popup"; me._ht_video_file_popup.userData.ggIsActive=function() { if (me._ht_video_file_popup__vid != null) { return (me._ht_video_file_popup__vid.paused == false && me._ht_video_file_popup__vid.ended == false); } else { return false; } } me._ht_video_file_popup.logicBlock_visible = function() { var newLogicStateVisible; if ( (((player.getVariableValue('open_video_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateVisible = 0; } else { newLogicStateVisible = -1; } if (me._ht_video_file_popup.ggCurrentLogicStateVisible != newLogicStateVisible) { me._ht_video_file_popup.ggCurrentLogicStateVisible = newLogicStateVisible; if (me._ht_video_file_popup.ggCurrentLogicStateVisible == 0) { me._ht_video_file_popup.visible=((!me._ht_video_file_popup.material && Number(me._ht_video_file_popup.userData.opacity>0)) || Number(me._ht_video_file_popup.material.opacity)>0)?true:false; me._ht_video_file_popup.userData.visible=true; if (me._ht_video_file_popup.userData.ggVideoNotLoaded) { me._ht_video_file_popup.userData.ggInitMedia(me._ht_video_file_popup.ggVideoSource); } } else { me._ht_video_file_popup.visible=false; me._ht_video_file_popup.userData.visible=false; me._ht_video_file_popup.userData.ggInitMedia(''); } } } me._ht_video_file_popup.userData.onclick=function (e) { player.playPauseSound("ht_video_file_popup","1"); } me._ht_video_file_popup.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_file_popup_bg.add(me._ht_video_file_popup); geometry = new THREE.PlaneBufferGeometry(0.4, 0.4, 5, 5 ); geometry.name = 'ht_video_file_popup_close_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABJElEQVR4nO3bSw6DMBAEUSs341icfrLJSJGFAeNfY9c7QU9JiJVDAAAAAAAAAADgdcxsM7Nt9I4U6X2/cW4fvSdmZvvfPr2IUUCpiFE8zYAhHA4dHlFx0ymlwUpbsigMV9hQZOQBr4/nRhwyTTzX86Dp4rkeh00bz7U8cPp4rsWhy8RzNQ9eLp6rcfiy8VxJgOXjuSchiBfJCUK8hDthiHfhLBDxbjoKRbxMB8GIlysRUTLeZ/QAVMYnXICfSIGzUES8cCcQERNywhAx8iQIEX9KQiwfsUaAZSPWPHy5iC0OXiZiy0Onj9jjwGkj9jxsuogjDpom4shDXh9R4QCFDY8oDVfacoviYMVNh4xnDmWMhzblTPkpVdDfBwAAAAAAAABA2hcaGfeSY++bsA'+ 'AAAABJRU5ErkJggg=='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_video_file_popup_close_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(2.85); el.translateY(2.05); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 40; el.userData.height = 40; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_video_file_popup_close'; el.userData.x = 2.85; el.userData.y = 2.05; el.userData.hanchor = 2; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_video_file_popup_close.material.opacity = v; me._ht_video_file_popup_close.visible = (v>0 && me._ht_video_file_popup_close.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_video_file_popup_close.visible let parentEl = me._ht_video_file_popup_close.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_video_file_popup_close.userData.opacity = v; v = v * me._ht_video_file_popup_close.userData.parentOpacity; me._ht_video_file_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_popup_close.children.length; i++) { let child = me._ht_video_file_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_video_file_popup_close.userData.parentOpacity = v; v = v * me._ht_video_file_popup_close.userData.opacity me._ht_video_file_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_video_file_popup_close.children.length; i++) { let child = me._ht_video_file_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_video_file_popup_close = el; textureOver = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABtUlEQVR4nO3bUU7CQBRG4dPGHcCDbsaIu4IF4K6QsJn2QbdAfcAGUBD13pl7Cf/3YqJJO3NEitMpiIiIiIiIiIiIiIhcnXU3na276Sx6HOeUGF/rdaB1N521zXbVNtvVpp/MvY7rZdNP5uP4PCO6BTw2LDNF3I1lWJY4tlvAp4e3V2gW++/kiPg9XrPYjdVH43Wg0akBP96/v3ifJ8tY3ANCjoi1xlAkIMRGrHnuYgEhJmLtcxYNCHUnFPELKx4Q6kws6i2jSkAoO8HI99tqAaHMRKOv+FUDgu+Eo+NBQEDwmXiGeBAUEGwBssSDwIDwvxCZ4kFwQPhbkGzxIEFA+F2YjPEgSUD4OVDWeJAoIJwOtfuaMx4kCwiXVo9zxYOEAeFcxHzxoNg9kduR7h'+ 'WoP2GDa7yI3EUPYHThYwz7nw3LTT8hS8QUr0B9kDbQv3IGWkww0HKWgRZUDbSkb6CbSga6rWmgG+sG2tphoM1FBtreZhB9Zaw5Bm3xNXINmCneqPSY3AKOz4kcHDo83uhrxO3QPnvt1C90TyRPPOBz8fXwEYykbvFRLxERERERERERERGROj4AIjXeRMYl/SsAAAAASUVORK5CYII='); el.userData.materialOver = new THREE.MeshBasicMaterial( {map: textureOver, side: THREE.DoubleSide, transparent: true} ); el.userData.materialOver.name = 'ht_video_file_popup_close_materialOver'; el.userData.ggId="ht_video_file_popup_close"; me._ht_video_file_popup_close.userData.onclick=function (e) { player.setVariableValue('open_video_hs', player.getVariableValue('open_video_hs').replace("<"+me.hotspot.id+">", '')); } me._ht_video_file_popup_close.userData.onmouseover=function (e) { me._ht_video_file_popup_close.material = me._ht_video_file_popup_close.userData.materialOver; me.elementMouseOver['ht_video_file_popup_close']=true; } me._ht_video_file_popup_close.userData.onmouseout=function (e) { me._ht_video_file_popup_close.material = me._ht_video_file_popup_close.userData.materialNormal; me.elementMouseOver['ht_video_file_popup_close']=false; } me._ht_video_file_popup_close.userData.ggUpdatePosition=function (useTransition) { } me._ht_video_file_popup_bg.add(me._ht_video_file_popup_close); me._ht_video_file.add(me._ht_video_file_popup_bg); me._ht_video_file.userData.setOpacity(1.00); me._ht_video_file_bg.userData.setOpacity(1.00); me._ht_video_file_icon.userData.setOpacity(1.00); me._ht_video_file_title.userData.setOpacity(0.00); me._ht_video_file_popup_bg.userData.setOpacity(0.00); me._ht_video_file_popup.userData.setOpacity(1.00); me._ht_video_file_popup.userData.ggVideoSource = 'media_vr/'; me._ht_video_file_popup.userData.ggVideoNotLoaded = true; me._ht_video_file_popup_close.userData.setOpacity(1.00); me.ggEvent_changenode=function() { me._ht_video_file_bg.logicBlock_alpha(); me._ht_video_file_popup_bg.logicBlock_scaling(); me._ht_video_file_popup_bg.logicBlock_alpha(); me._ht_video_file_popup.logicBlock_visible(); }; me.ggEvent_configloaded=function() { me._ht_video_file_bg.logicBlock_alpha(); me._ht_video_file_popup_bg.logicBlock_scaling(); me._ht_video_file_popup_bg.logicBlock_alpha(); me._ht_video_file_popup.logicBlock_visible(); }; me.ggEvent_varchanged_open_video_hs=function() { me._ht_video_file_bg.logicBlock_alpha(); me._ht_video_file_popup_bg.logicBlock_scaling(); me._ht_video_file_popup_bg.logicBlock_alpha(); me._ht_video_file_popup.logicBlock_visible(); }; me.__obj = me._ht_video_file; me.__obj.userData.hotspot = hotspot; me.__obj.userData.fromSkin = true; }; function SkinHotspotClass_ht_info(parentScope,hotspot) { var me=this; var flag=false; var hs=''; me.parentScope=parentScope; me.hotspot=hotspot; var nodeId=String(hotspot.url); nodeId=(nodeId.charAt(0)=='{')?nodeId.substr(1, nodeId.length - 2):''; // } me.ggUserdata=skin.player.getNodeUserdata(nodeId); me.ggUserdata.nodeId=nodeId; me.elementMouseDown={}; me.elementMouseOver={}; me.findElements=function(id,regex) { return skin.findElements(id,regex); } el = new THREE.Group(); el.userData.setOpacityInternal = function(v) {}; el.name = 'ht_info'; el.userData.x = 0.65; el.userData.y = 2.08; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_info.visible let parentEl = me._ht_info.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info.userData.opacity = v; v = v * me._ht_info.userData.parentOpacity; me._ht_info.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info.children.length; i++) { let child = me._ht_info.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info.userData.parentOpacity = v; v = v * me._ht_info.userData.opacity me._ht_info.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info.children.length; i++) { let child = me._ht_info.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info = el; el.userData.ggId="ht_info"; el.userData.ggElementNodeId=function() { if (me.hotspot.url!='' && me.hotspot.url.charAt(0)=='{') { // } return me.hotspot.url.substr(1, me.hotspot.url.length - 2); } else { if ((this.parentNode) && (this.parentNode.userData.ggElementNodeId)) { return this.parentNode.userData.ggElementNodeId(); } else { return player.getCurrentNode(); } } } me._ht_info.userData.onclick=function (e) { player.triggerEvent('hsproxyclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_info.userData.ondblclick=function (e) { player.triggerEvent('hsproxydblclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_info.userData.onmouseover=function (e) { player.setActiveHotspot(me.hotspot); me.elementMouseOver['ht_info']=true; player.triggerEvent('hsproxyover', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_info.userData.onmouseout=function (e) { player.setActiveHotspot(null); me.elementMouseOver['ht_info']=false; player.triggerEvent('hsproxyout', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_info.userData.ggUpdatePosition=function (useTransition) { } width = 0.45; height = 0.45; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_info_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_info_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_info_bg.material.opacity = v * me._ht_info_bg.userData.backgroundColorAlpha; if (me._ht_info_bg.userData.ggSubElement) { me._ht_info_bg.userData.ggSubElement.material.opacity = v me._ht_info_bg.userData.ggSubElement.visible = (v>0 && me._ht_info_bg.userData.visible); } me._ht_info_bg.visible = (v>0 && me._ht_info_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_info_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_info_bg.userData.backgroundColorAlpha = v; me._ht_info_bg.userData.setOpacity(me._ht_info_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 45; el.userData.height = 45; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_info_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.010); el.renderOrder = 1; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_info_bg.visible let parentEl = me._ht_info_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info_bg.userData.opacity = v; v = v * me._ht_info_bg.userData.parentOpacity; me._ht_info_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_bg.children.length; i++) { let child = me._ht_info_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info_bg.userData.parentOpacity = v; v = v * me._ht_info_bg.userData.opacity me._ht_info_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_bg.children.length; i++) { let child = me._ht_info_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info_bg = el; el.userData.ggId="ht_info_bg"; me._ht_info_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['ht_info_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_info_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_info_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_info_bg.ggCurrentLogicStateScaling == 0) { me._ht_info_bg.userData.transitionValue_scale = {x: 1.2, y: 1.2, z: 1.0}; for (var i = 0; i < me._ht_info_bg.userData.transitions.length; i++) { if (me._ht_info_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_info_bg.userData.transitions[i].interval); me._ht_info_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_info_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_bg.scale.set(transition_scale.startScale.x + (me._ht_info_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_info_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_info_bg.position.x = (me._ht_info_bg.position.x - me._ht_info_bg.userData.curScaleOffX) + scaleOffX; me._ht_info_bg.userData.curScaleOffX = scaleOffX; me._ht_info_bg.position.y = (me._ht_info_bg.position.y - me._ht_info_bg.userData.curScaleOffY) + scaleOffY; me._ht_info_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_info_bg.userData.transitions.splice(me._ht_info_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_info_bg.userData.transitions.push(transition_scale); } else { me._ht_info_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_info_bg.userData.transitions.length; i++) { if (me._ht_info_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_info_bg.userData.transitions[i].interval); me._ht_info_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_info_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_bg.scale.set(transition_scale.startScale.x + (me._ht_info_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_info_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_info_bg.position.x = (me._ht_info_bg.position.x - me._ht_info_bg.userData.curScaleOffX) + scaleOffX; me._ht_info_bg.userData.curScaleOffX = scaleOffX; me._ht_info_bg.position.y = (me._ht_info_bg.position.y - me._ht_info_bg.userData.curScaleOffY) + scaleOffY; me._ht_info_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_info_bg.userData.transitions.splice(me._ht_info_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_info_bg.userData.transitions.push(transition_scale); } } } me._ht_info_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_image_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_info_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_info_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_info_bg.ggCurrentLogicStateAlpha == 0) { me._ht_info_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_info_bg.userData.transitions.length; i++) { if (me._ht_info_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_info_bg.userData.transitions[i].interval); me._ht_info_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_info_bg.material ? me._ht_info_bg.material.opacity : me._ht_info_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_info_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_info_bg.userData.transitions.splice(me._ht_info_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_info_bg.userData.transitions.push(transition_alpha); } else { me._ht_info_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_info_bg.userData.transitions.length; i++) { if (me._ht_info_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_info_bg.userData.transitions[i].interval); me._ht_info_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_info_bg.material ? me._ht_info_bg.material.opacity : me._ht_info_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_info_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_info_bg.userData.transitions.splice(me._ht_info_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_info_bg.userData.transitions.push(transition_alpha); } } } me._ht_info_bg.userData.onclick=function (e) { player.setVariableValue('open_info_hs', player.getVariableValue('open_info_hs') + "<"+me.hotspot.id+">"); } me._ht_info_bg.userData.onmouseover=function (e) { me.elementMouseOver['ht_info_bg']=true; me._ht_info_title.logicBlock_alpha(); me._ht_info_bg.logicBlock_scaling(); } me._ht_info_bg.userData.ontouchend=function (e) { me._ht_info_bg.logicBlock_scaling(); } me._ht_info_bg.userData.onmouseout=function (e) { me.elementMouseOver['ht_info_bg']=false; me._ht_info_title.logicBlock_alpha(); me._ht_info_bg.logicBlock_scaling(); } me._ht_info_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.36, 0.36, 5, 5 ); geometry.name = 'ht_info_icon_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAIzUlEQVR4nO2be2xb1R3HP79j51nS1M6bwtaVvRiF8iijQJLSia2jZaiw0lQ8tE1oaAxNYkwa+2NDlUAT2hBCSGNvTZs2rekqoKWqCIW5eYyyUcEKBcF4dBq0dh622yQlaWKf3/7wdZpmYN9rO7GH/PnrnOvz+52fv77nnnvO+RnKlClTpkyZMh9RpNgBpNkbC9RXTtmg2IoAkqgTzHJgPOHz9V/VNDwkgi1GXEURKKT4JdLYIaLrRPVChJVA64dbyEnQl1E5gNAzPhZ9av2nOLkQsS6oQAOR4GorfAvlK0AwD1dxYAdq/9TReqx/Pu+ueRdIFekbDG4W+C5w2ZyPk8AhhH8qvGKQIatyHHRc0HNENahGKlH5DOingXOBM+b4eEeUH7S3xnaIoIWOf1'+ '4F6j/aeIka+whwxazL0yi71OjjZtLu6fj48bhbf4cOURltCFwtsAWRjUBd+jNR+lXNXZ1njrxYwK8wPwL1RFoWVTP9kMA3Z/UxgvLzpM/36Nrm4Ui+fYQOL6v2VY9ei7AVOM+5rMBvJ6i4a13r4Il8+4B5EKg/Ur9c8T0BnO9cmhLkIfHJj9ubRsYK3V9I8ZuhwG2i5j7QJgBEX/T7zHVXNEaP5Ou/oALtGwx+0SjdQAAApcdnknde2XL87UL280E8Hw0unprW+0G+41wKG2uuaz9z5EA+fgsmUN9gcB3Kk0AFoAhbO5pj9y/0+0tfuOHriP7KiWNSMV1rWkd25eqvIALtOxroMEZ6gBpgXFW71rTF9xTCdy70DwXa1crjQCMwaVU6r2qLvpCLr7wFGggHz7PCflIzygRqr+lsO9abr998CQ01fdJnk/tJiRT2++XS'+ 'XJ5JJq8gDi+rVmEbKXGmVNhYCuIArG0efkuMXg9MA22JpN3VE2lZ5NVPXgL5a0YfUFjhVO9c0xJ7Oh9/haajOT6Ayu0AqFxcw/TDXn3kPMT2hRvXGrF/BRDlsfbW2Kb5eJMtBH2RwCPO7KZYs8rLy2ROd5AqImJ/4lTDJ5PTt5eqOACVFfJDkGFAROzDqu5vjJwEGhhq2CiwCkDQrVefNRbNxc9CsbohNorYewFU6BiIBDe5tfUskCpGVe93qu/UtMR/59VHMUg2x38DvAagwgOq7r67Z4F6w4Ergc+R6um+VcK0Vx/FYK2QEGWrU13eF17S7sbOs0Bi5BanOO5P1HR7tS8mvkTtbiC1HjTmZjc2ngTa8yZVApsBVPWxK85+b8JrkMUkFa/sBBC48dAhKrPZeBKodnGwE1gCYHzy55yiLDZqtzmlQKyx4ZpszT0JZG'+ 'C1U7Tv24p+r7GVAsFofC8wDoCyLlt7b88gndkyfbVQG1ILzYoVTCm8DoDoJdnae3xIy+cBFHJaGZcKBvmXU7wg23TvWqDn3j2rJr1jJ6pv5BFf0VGZib/62aHmpkxt3d9BNROnjmlEYjlFViKoMvMDVyft2ZnauhZoOmFnCYTrk4hSRIXYrPLcY6TTcC2QMdSnyxZGcwutNBCVZLqsJDIusl0LZNGZWUvU1OQWWmkgs87TUH/Gkxb3AiVPDSsjuiSnyEoEkVOjQcz0sUxtXQtU4ffPbGmotRkSDUofmz4/A3zTWhiB2ptGxhDeA0DM+VmalzSiMyexI5efNZpxwvH6Jn3QKVyUS2Clgp469X05206oJ4EEXnKK54aO1DXmElyxOXCkrVaQtEAHs7X3dgcZ7UmX/P7K9R5jKwkmfJNfAK0CQPXZbO09CRRuiu93Nr+x'+ 'qhtzirDIqJoNTnGy1laHsrX3JNBmISnoLgCBa/uGG9tyiLFohA4vq0Z0s1N9dtXS8PvZbDxvuSZVfukUK0jYO7zaFxNTc/wGnNQ/UX7vysZrJ04SQGpqFO4IKX6vPoqBKiLIPU51JBCN7XRjl9vBIUw5Rd8wpXtgOJv+ocDNwAWpmv56xYqZ75ARzwINDDfWCZJeajyxWUhmNCgB9sYC9aryoFMNV1bIA25tPQ8Pm0xuAKkCUNUdXu2LQdWU/BRoSdX07tUNcde7Ed6HmEr62PZ4QzT+jGf7BaY3EryNVDIpwDMdLXFPZ3meBOqJtCxCWA+gqjvdjuNi0R9puEzgUQCE95LGd6vXJAtv52I6vZ5Umh1GKOnh1Xe08WJFdwOVwKRJmutzST/2NsSE9PAaS0zU7/Xa2ULRPxRox9gQqfQ7Bf1GrtmurgU6cKStVmEDgC'+ 'BPrv3Evydz6XC+6RsM3KJWngYWA9OidHW2xrdls/swXM9iJ/xTXxYlleNXgsNrbyxQXzVlfoZqOinhfYQbOlpjPRkNs+D6DhLV9PA64ZuqecpLJ6qIm0SBXNiu+HrDDV+rmpKXwRFHeEONbe9syU+clCsXhA4vq/bVjA6T+qdNd2drbEs2G1WkN9KwyqBbEO52Lh9EuamzLfZaHjEDqUyTurrADSD3Knz2VMfyi1pb+T03C1E3uBpipmb8S6T/hqQfPrxUkYGhJReoSlf/oHQZ0eVzmqxEeLU/EgipmsfU6s41S2Pvug02dHhZtVSPX27E3gRsUifTxOEgwj2drdG875rZuLqD+sKBPyByKzAxQUXT3MSF3qMN5yLaZYSu035NV+hbirxkkIOoHrVGjis65kPOQDVghaBYOQexl4Ks5H9+VH0L+FFHS3z7fPztIatA'+ 'e96k6oy64BCwGGFHZ0vsRoC/Ddafk1R/F2gXM4vA03hBhW6T0L90LI3/B2ay378NfBX4WB5xjwE7FPnjYEu0dz7Xg1kF6gsHNiCyGwDV76sRFdUtIB+UOnIQpNsnie2Z/uGjijw3vGSltb4NqF6swoXA3OE4m2PAP1CeV/Tvi2z1vkI9Y7KRVaDeSHC7wI0ZHLyOsC2RkO61S6Ov5xrIgSNttSc42SB+DYiwGNUxmzCxRVRFLzkzPFGsPOyMAm1XfK2DwTGc5cUss7fBdiN0dzTHXynlJPJ8yTiLNYEoxASWAqA8KGq2tbeNvPhRFsUToSN1jb1DSy5ym3hdpkyZMmXKlCnzf8J/AXtkHzBzE+/pAAAAAElFTkSuQmCC'); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_info_icon_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 36; el.userData.height = 36; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_info_icon'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_info_icon.material.opacity = v; me._ht_info_icon.visible = (v>0 && me._ht_info_icon.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_info_icon.visible let parentEl = me._ht_info_icon.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info_icon.userData.opacity = v; v = v * me._ht_info_icon.userData.parentOpacity; me._ht_info_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_icon.children.length; i++) { let child = me._ht_info_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info_icon.userData.parentOpacity = v; v = v * me._ht_info_icon.userData.opacity me._ht_info_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_icon.children.length; i++) { let child = me._ht_info_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info_icon = el; el.userData.ggId="ht_info_icon"; me._ht_info_icon.userData.ggUpdatePosition=function (useTransition) { } me._ht_info_bg.add(me._ht_info_icon); geometry = new THREE.PlaneBufferGeometry(1, 0.2, 5, 5 ); geometry.name = 'ht_info_title_geometry'; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_info_title_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 1; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_info_title.material.opacity = v; if (me._ht_info_title.userData.hasScrollbar) { me._ht_info_title.userData.scrollbar.material.opacity = v; me._ht_info_title.userData.scrollbarBg.material.opacity = v; } if (me._ht_info_title.userData.ggSubElement) { me._ht_info_title.userData.ggSubElement.material.opacity = v me._ht_info_title.userData.ggSubElement.visible = (v>0 && me._ht_info_title.userData.visible); } me._ht_info_title.visible = (v>0 && me._ht_info_title.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_info_title.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_info_title.userData.backgroundColorAlpha = v; me._ht_info_title.userData.setOpacity(me._ht_info_title.userData.opacity); } el.translateX(0); el.translateY(-0.325); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 100; el.userData.height = 20; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_info_title'; el.userData.x = 0; el.userData.y = -0.325; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_info_title.visible let parentEl = me._ht_info_title.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info_title.userData.opacity = v; v = v * me._ht_info_title.userData.parentOpacity; me._ht_info_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_title.children.length; i++) { let child = me._ht_info_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info_title.userData.parentOpacity = v; v = v * me._ht_info_title.userData.opacity me._ht_info_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_title.children.length; i++) { let child = me._ht_info_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info_title = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(1, 1, 1); el.userData.textColor = new THREE.Color(0.760784, 0.909804, 0.0705882); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 100; canvas.height = 20; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._ht_info_title.userData.totalHeight = 3; me._ht_info_title.userData.textLines = []; var ctx = me._ht_info_title.userData.textCanvasContext; var words = me._ht_info_title.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._ht_info_title.userData.width - 0 - (scrollbar ? 25 : 0)) && i > 0) { me._ht_info_title.userData.textLines.push(line); line = words[i]; me._ht_info_title.userData.totalHeight += me._ht_info_title.userData.lineHeight; } else { line = testLine; } } me._ht_info_title.userData.textLines.push(line); me._ht_info_title.userData.totalHeight += me._ht_info_title.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._ht_info_title.userData.textCanvas; var ctx = me._ht_info_title.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_info_title.userData.textColor.r * 255 + ', ' + me._ht_info_title.userData.textColor.g * 255 + ', ' + me._ht_info_title.userData.textColor.b * 255 + ', ' + me._ht_info_title.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = (me._ht_info_title.userData.boxWidth - (me._ht_info_title.userData.hasScrollbar ? 25 : 0)) / 2; ctx.textAlign = 'center'; var y = 3; for (var i = 0; i < me._ht_info_title.userData.textLines.length; i++) { ctx.fillText(me._ht_info_title.userData.textLines[i], x, y); y += me._ht_info_title.userData.lineHeight; } geometry = new THREE.PlaneBufferGeometry(me._ht_info_title.userData.boxWidth / 100.0, me._ht_info_title.userData.boxHeight / 100.0, 5, 5 ); geometry.name = 'ht_info_title_geometry'; me._ht_info_title.geometry.dispose(); me._ht_info_title.geometry = geometry; var diffY = me._ht_info_title.userData.boxHeight - me._ht_info_title.userData.height; me._ht_info_title.position.y = me._ht_info_title.userData.y - ((diffY / 2.0) / 100.0); var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'ht_info_title_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._ht_info_title.material.map) { me._ht_info_title.material.map.dispose(); } me._ht_info_title.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._ht_info_title.userData.textCanvas; var ctx = me._ht_info_title.userData.textCanvasContext; ctx.font = '18px Verdana'; me._ht_info_title.userData.lineHeight = 18 * 1.2; me._ht_info_title.userData.textLines = []; me._ht_info_title.userData.textLines.push(me._ht_info_title.userData.ggText); me._ht_info_title.userData.totalHeight = 3; me._ht_info_title.userData.totalHeight += me._ht_info_title.userData.lineHeight; me._ht_info_title.userData.boxWidth = ctx.measureText(me._ht_info_title.userData.ggText).width + 0; me._ht_info_title.userData.boxHeight = me._ht_info_title.userData.totalHeight; canv.width = me._ht_info_title.userData.boxWidth; canv.height = me._ht_info_title.userData.boxHeight; ctx.font = '18px Verdana'; me._ht_info_title.userData.ggPaintCanvasText(); } me._ht_info_title.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(player._(me.hotspot.title)))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._ht_info_title.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._ht_info_title.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_info_title.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._ht_info_title.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._ht_info_title.userData.textColorAlpha = v; } el.userData.ggId="ht_info_title"; me._ht_info_title.logicBlock_alpha = function() { var newLogicStateAlpha; if ( ((me.elementMouseOver['ht_info_bg'] == true)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_info_title.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_info_title.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_info_title.ggCurrentLogicStateAlpha == 0) { me._ht_info_title.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_info_title.userData.transitions.length; i++) { if (me._ht_info_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_info_title.userData.transitions[i].interval); me._ht_info_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_info_title.material ? me._ht_info_title.material.opacity : me._ht_info_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_info_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_info_title.userData.transitions.splice(me._ht_info_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_info_title.userData.transitions.push(transition_alpha); } else { me._ht_info_title.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_info_title.userData.transitions.length; i++) { if (me._ht_info_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_info_title.userData.transitions[i].interval); me._ht_info_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_info_title.material ? me._ht_info_title.material.opacity : me._ht_info_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_info_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_info_title.userData.transitions.splice(me._ht_info_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_info_title.userData.transitions.push(transition_alpha); } } } me._ht_info_title.userData.ggUpdatePosition=function (useTransition) { } me._ht_info_bg.add(me._ht_info_title); me._ht_info.add(me._ht_info_bg); width = 6.6; height = 4.8; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.3, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.3, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.3); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.3, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.3, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.3); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.3, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_info_popup_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.666667)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_info_popup_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.666667; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_info_popup_bg.material.opacity = v * me._ht_info_popup_bg.userData.backgroundColorAlpha; if (me._ht_info_popup_bg.userData.ggSubElement) { me._ht_info_popup_bg.userData.ggSubElement.material.opacity = v me._ht_info_popup_bg.userData.ggSubElement.visible = (v>0 && me._ht_info_popup_bg.userData.visible); } me._ht_info_popup_bg.visible = (v>0 && me._ht_info_popup_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_info_popup_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_info_popup_bg.userData.backgroundColorAlpha = v; me._ht_info_popup_bg.userData.setOpacity(me._ht_info_popup_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(0.10, 0.10, 1.0); el.userData.width = 660; el.userData.height = 480; el.userData.scale = {x: 0.10, y: 0.10, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_info_popup_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_info_popup_bg.visible let parentEl = me._ht_info_popup_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info_popup_bg.userData.opacity = v; v = v * me._ht_info_popup_bg.userData.parentOpacity; me._ht_info_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_popup_bg.children.length; i++) { let child = me._ht_info_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info_popup_bg.userData.parentOpacity = v; v = v * me._ht_info_popup_bg.userData.opacity me._ht_info_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_popup_bg.children.length; i++) { let child = me._ht_info_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info_popup_bg = el; el.userData.ggId="ht_info_popup_bg"; me._ht_info_popup_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( (((player.getVariableValue('open_info_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_info_popup_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_info_popup_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_info_popup_bg.ggCurrentLogicStateScaling == 0) { me._ht_info_popup_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_info_popup_bg.userData.transitions.length; i++) { if (me._ht_info_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_info_popup_bg.userData.transitions[i].interval); me._ht_info_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_info_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_info_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_info_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_info_popup_bg.position.x = (me._ht_info_popup_bg.position.x - me._ht_info_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_info_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_info_popup_bg.position.y = (me._ht_info_popup_bg.position.y - me._ht_info_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_info_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_info_popup_bg.userData.transitions.splice(me._ht_info_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_info_popup_bg.userData.transitions.push(transition_scale); } else { me._ht_info_popup_bg.userData.transitionValue_scale = {x: 0.1, y: 0.1, z: 1.0}; for (var i = 0; i < me._ht_info_popup_bg.userData.transitions.length; i++) { if (me._ht_info_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_info_popup_bg.userData.transitions[i].interval); me._ht_info_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_info_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_info_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_info_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_info_popup_bg.position.x = (me._ht_info_popup_bg.position.x - me._ht_info_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_info_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_info_popup_bg.position.y = (me._ht_info_popup_bg.position.y - me._ht_info_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_info_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_info_popup_bg.userData.transitions.splice(me._ht_info_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_info_popup_bg.userData.transitions.push(transition_scale); } } } me._ht_info_popup_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_info_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_info_popup_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_info_popup_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_info_popup_bg.ggCurrentLogicStateAlpha == 0) { me._ht_info_popup_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_info_popup_bg.userData.transitions.length; i++) { if (me._ht_info_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_info_popup_bg.userData.transitions[i].interval); me._ht_info_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_info_popup_bg.material ? me._ht_info_popup_bg.material.opacity : me._ht_info_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_info_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_info_popup_bg.userData.transitions.splice(me._ht_info_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_info_popup_bg.userData.transitions.push(transition_alpha); } else { me._ht_info_popup_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_info_popup_bg.userData.transitions.length; i++) { if (me._ht_info_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_info_popup_bg.userData.transitions[i].interval); me._ht_info_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_info_popup_bg.material ? me._ht_info_popup_bg.material.opacity : me._ht_info_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_info_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_info_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_info_popup_bg.userData.transitions.splice(me._ht_info_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_info_popup_bg.userData.transitions.push(transition_alpha); } } } me._ht_info_popup_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(6, 4, 5, 5 ); geometry.name = 'ht_info_popup_geometry'; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_info_popup_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 1; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_info_popup.material.opacity = v; if (me._ht_info_popup.userData.hasScrollbar) { me._ht_info_popup.userData.scrollbar.material.opacity = v; me._ht_info_popup.userData.scrollbarBg.material.opacity = v; } if (me._ht_info_popup.userData.ggSubElement) { me._ht_info_popup.userData.ggSubElement.material.opacity = v me._ht_info_popup.userData.ggSubElement.visible = (v>0 && me._ht_info_popup.userData.visible); } me._ht_info_popup.visible = (v>0 && me._ht_info_popup.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_info_popup.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_info_popup.userData.backgroundColorAlpha = v; me._ht_info_popup.userData.setOpacity(me._ht_info_popup.userData.opacity); } el.translateX(0); el.translateY(-0.2); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 600; el.userData.height = 400; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_info_popup'; el.userData.x = 0; el.userData.y = -0.2; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_info_popup.visible let parentEl = me._ht_info_popup.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info_popup.userData.opacity = v; v = v * me._ht_info_popup.userData.parentOpacity; me._ht_info_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_popup.children.length; i++) { let child = me._ht_info_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info_popup.userData.parentOpacity = v; v = v * me._ht_info_popup.userData.opacity me._ht_info_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_popup.children.length; i++) { let child = me._ht_info_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info_popup = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(1, 1, 1); el.userData.textColor = new THREE.Color(0, 0, 0); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 600; canvas.height = 400; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._ht_info_popup.userData.totalHeight = 33; me._ht_info_popup.userData.textLines = []; var ctx = me._ht_info_popup.userData.textCanvasContext; var words = me._ht_info_popup.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._ht_info_popup.userData.width - 30 - (scrollbar ? 25 : 0)) && i > 0) { me._ht_info_popup.userData.textLines.push(line); line = words[i]; me._ht_info_popup.userData.totalHeight += me._ht_info_popup.userData.lineHeight; } else { line = testLine; } } me._ht_info_popup.userData.textLines.push(line); me._ht_info_popup.userData.totalHeight += me._ht_info_popup.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._ht_info_popup.userData.textCanvas; var ctx = me._ht_info_popup.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_info_popup.userData.backgroundColor.r * 255 + ', ' + me._ht_info_popup.userData.backgroundColor.g * 255 + ', ' + me._ht_info_popup.userData.backgroundColor.b * 255 + ', ' + me._ht_info_popup.userData.backgroundColorAlpha + ')'; ctx.fillRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_info_popup.userData.textColor.r * 255 + ', ' + me._ht_info_popup.userData.textColor.g * 255 + ', ' + me._ht_info_popup.userData.textColor.b * 255 + ', ' + me._ht_info_popup.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = 15; ctx.textAlign = 'left'; var y = 18; y -= me._ht_info_popup.userData.scrollPosPercent * me._ht_info_popup.userData.totalHeight; for (var i = 0; i < me._ht_info_popup.userData.textLines.length; i++) { ctx.fillText(me._ht_info_popup.userData.textLines[i], x, y); y += me._ht_info_popup.userData.lineHeight; } var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'ht_info_popup_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._ht_info_popup.material.map) { me._ht_info_popup.material.map.dispose(); } me._ht_info_popup.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._ht_info_popup.userData.textCanvas; var ctx = me._ht_info_popup.userData.textCanvasContext; ctx.font = '22px Verdana'; me._ht_info_popup.userData.lineHeight = 22 * 1.2; me._ht_info_popup.userData.ggWrapText(false); me._ht_info_popup.userData.boxWidth = me._ht_info_popup.userData.width; me._ht_info_popup.userData.boxHeight = me._ht_info_popup.userData.height; me._ht_info_popup.userData.scrollPosPercent = 0.0 if (me._ht_info_popup.userData.totalHeight > me._ht_info_popup.userData.height) { me._ht_info_popup.userData.ggWrapText(true); me._ht_info_popup.userData.pagePercent = me._ht_info_popup.userData.height / me._ht_info_popup.userData.totalHeight; me._ht_info_popup.userData.maxScrollPercent = (me._ht_info_popup.userData.totalHeight - me._ht_info_popup.userData.height) / me._ht_info_popup.userData.totalHeight; geometry = new THREE.PlaneBufferGeometry(25 / 100.0, me._ht_info_popup.userData.height / 100.0, 5, 5 ); geometry.name = 'ht_info_popup_scrollbarBgGeometry'; material = new THREE.MeshBasicMaterial( {color: 0x7f7f7f, side: THREE.DoubleSide, transparent: true } ); material.name = 'ht_info_popup_scrollbarBgMaterial'; me._ht_info_popup.userData.scrollbarBg = new THREE.Mesh( geometry, material ); me._ht_info_popup.userData.scrollbarBg.name = 'ht_info_popup_scrollbarBg'; me._ht_info_popup.add(me._ht_info_popup.userData.scrollbarBg); me._ht_info_popup.userData.scrollbarXPos = (me._ht_info_popup.userData.width - 25) / 200.0; me._ht_info_popup.userData.scrollbarBg.position.x = me._ht_info_popup.userData.scrollbarXPos; me._ht_info_popup.userData.scrollbarBg.position.z = me._ht_info_popup.position.z + 0.01; me._ht_info_popup.userData.scrollbarBg.userData.stopPropagation = true; me._ht_info_popup.userData.scrollbarHeight = (me._ht_info_popup.userData.height / me._ht_info_popup.userData.totalHeight) * me._ht_info_popup.userData.height; geometry = new THREE.PlaneBufferGeometry(25 / 100.0, me._ht_info_popup.userData.scrollbarHeight / 100.0, 5, 5 ); geometry.name = 'ht_info_popup_scrollbarGeometry'; material = new THREE.MeshBasicMaterial( {color: 0xbfbfbf, side: THREE.DoubleSide, transparent: true } ); material.name = 'ht_info_popup_scrollbarMaterial'; me._ht_info_popup.userData.scrollbar = new THREE.Mesh( geometry, material ); me._ht_info_popup.userData.scrollbar.name = 'ht_info_popup_scrollbar'; me._ht_info_popup.add(me._ht_info_popup.userData.scrollbar); me._ht_info_popup.userData.scrollbar.position.x = me._ht_info_popup.userData.scrollbarXPos; me._ht_info_popup.userData.scrollbar.position.z = me._ht_info_popup.position.z + 0.02; me._ht_info_popup.userData.scrollbarYPosMin = (me._ht_info_popup.userData.height - me._ht_info_popup.userData.scrollbarHeight) / 200.0; me._ht_info_popup.userData.scrollbarYPosMax = me._ht_info_popup.userData.scrollbarYPosMin - (me._ht_info_popup.userData.height - me._ht_info_popup.userData.scrollbarHeight) / 100.0; me._ht_info_popup.userData.scrollbar.position.y = me._ht_info_popup.userData.scrollbarYPosMin; geometry = new THREE.PlaneBufferGeometry(25 / 100.0, me._ht_info_popup.userData.height / 200.0, 5, 5 ); geometry.name = 'ht_info_popup_scrollbarPageDownGeometry'; material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide, transparent: true } ); material.name = 'ht_info_popup_scrollbarPageDownMaterial'; me._ht_info_popup.userData.scrollbarPageDown = new THREE.Mesh( geometry, material ); me._ht_info_popup.userData.scrollbarPageDown.name = 'ht_info_popup_scrollbarPageDown'; me._ht_info_popup.userData.scrollbarPageDown.userData.onclick = function() { me._ht_info_popup.userData.scrollPosPercent -= me._ht_info_popup.userData.pagePercent; me._ht_info_popup.userData.scrollPosPercent = Math.max(me._ht_info_popup.userData.scrollPosPercent, 0); me._ht_info_popup.userData.ggPaintCanvasText(); me._ht_info_popup.userData.scrollbar.position.y += (me._ht_info_popup.userData.height * me._ht_info_popup.userData.pagePercent) / 100.0; me._ht_info_popup.userData.scrollbar.position.y = Math.min(me._ht_info_popup.userData.scrollbar.position.y, me._ht_info_popup.userData.scrollbarYPosMin); } me._ht_info_popup.userData.scrollbarPageDown.position.x = me._ht_info_popup.userData.scrollbarXPos; me._ht_info_popup.userData.scrollbarPageDown.position.y = me._ht_info_popup.userData.height / 400.0; me._ht_info_popup.userData.scrollbarPageDown.position.z = me._ht_info_popup.position.z + 0.05; me._ht_info_popup.userData.scrollbarPageDown.userData.stopPropagation = true; me._ht_info_popup.userData.scrollbarPageDown.userData.clickInvisible = true; me._ht_info_popup.userData.scrollbarPageDown.visible = false; me._ht_info_popup.add(me._ht_info_popup.userData.scrollbarPageDown); geometry = new THREE.PlaneBufferGeometry(25 / 100.0, me._ht_info_popup.userData.height / 200.0, 5, 5 ); geometry.name = 'ht_info_popup_scrollbarPageUpGeometry'; material = new THREE.MeshBasicMaterial( {color: 0x000000, side: THREE.DoubleSide, transparent: true } ); material.name = 'ht_info_popup_scrollbarPageUpMaterial'; me._ht_info_popup.userData.scrollbarPageUp = new THREE.Mesh( geometry, material ); me._ht_info_popup.userData.scrollbarPageUp.name = 'ht_info_popup_scrollbarPageUp'; me._ht_info_popup.userData.scrollbarPageUp.userData.onclick = function() { me._ht_info_popup.userData.scrollPosPercent += me._ht_info_popup.userData.pagePercent; me._ht_info_popup.userData.scrollPosPercent = Math.min(me._ht_info_popup.userData.scrollPosPercent, me._ht_info_popup.userData.maxScrollPercent); me._ht_info_popup.userData.ggPaintCanvasText(); me._ht_info_popup.userData.scrollbar.position.y -= (me._ht_info_popup.userData.height * me._ht_info_popup.userData.pagePercent) / 100.0; me._ht_info_popup.userData.scrollbar.position.y = Math.max(me._ht_info_popup.userData.scrollbar.position.y, me._ht_info_popup.userData.scrollbarYPosMax); } me._ht_info_popup.userData.scrollbarPageUp.position.x = me._ht_info_popup.userData.scrollbarXPos; me._ht_info_popup.userData.scrollbarPageUp.position.y = -me._ht_info_popup.userData.height / 400.0; me._ht_info_popup.userData.scrollbarPageUp.position.z = me._ht_info_popup.position.z + 0.05; me._ht_info_popup.userData.scrollbarPageUp.userData.stopPropagation = true; me._ht_info_popup.userData.scrollbarPageUp.userData.clickInvisible = true; me._ht_info_popup.userData.scrollbarPageUp.visible = false; me._ht_info_popup.add(me._ht_info_popup.userData.scrollbarPageUp); me._ht_info_popup.userData.hasScrollbar = true; } else { me._ht_info_popup.userData.hasScrollbar = false; } canv.width = me._ht_info_popup.userData.boxWidth; canv.height = me._ht_info_popup.userData.boxHeight; ctx.font = '22px Verdana'; me._ht_info_popup.userData.ggPaintCanvasText(); } me._ht_info_popup.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(player._(me.hotspot.description)))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._ht_info_popup.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._ht_info_popup.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_info_popup.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._ht_info_popup.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._ht_info_popup.userData.textColorAlpha = v; } el.userData.ggId="ht_info_popup"; me._ht_info_popup.userData.ggUpdatePosition=function (useTransition) { } me._ht_info_popup_bg.add(me._ht_info_popup); geometry = new THREE.PlaneBufferGeometry(0.4, 0.4, 5, 5 ); geometry.name = 'ht_info_popup_close_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABJElEQVR4nO3bSw6DMBAEUSs341icfrLJSJGFAeNfY9c7QU9JiJVDAAAAAAAAAADgdcxsM7Nt9I4U6X2/cW4fvSdmZvvfPr2IUUCpiFE8zYAhHA4dHlFx0ymlwUpbsigMV9hQZOQBr4/nRhwyTTzX86Dp4rkeh00bz7U8cPp4rsWhy8RzNQ9eLp6rcfiy8VxJgOXjuSchiBfJCUK8hDthiHfhLBDxbjoKRbxMB8GIlysRUTLeZ/QAVMYnXICfSIGzUES8cCcQERNywhAx8iQIEX9KQiwfsUaAZSPWPHy5iC0OXiZiy0Onj9jjwGkj9jxsuogjDpom4shDXh9R4QCFDY8oDVfacoviYMVNh4xnDmWMhzblTPkpVdDfBwAAAAAAAABA2hcaGfeSY++bsA'+ 'AAAABJRU5ErkJggg=='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_info_popup_close_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(2.85); el.translateY(2.05); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 40; el.userData.height = 40; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_info_popup_close'; el.userData.x = 2.85; el.userData.y = 2.05; el.userData.hanchor = 2; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_info_popup_close.material.opacity = v; me._ht_info_popup_close.visible = (v>0 && me._ht_info_popup_close.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_info_popup_close.visible let parentEl = me._ht_info_popup_close.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_info_popup_close.userData.opacity = v; v = v * me._ht_info_popup_close.userData.parentOpacity; me._ht_info_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_popup_close.children.length; i++) { let child = me._ht_info_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_info_popup_close.userData.parentOpacity = v; v = v * me._ht_info_popup_close.userData.opacity me._ht_info_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_info_popup_close.children.length; i++) { let child = me._ht_info_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_info_popup_close = el; textureOver = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABo0lEQVR4nO3bT07CQBhA8VcOZsQtpPfBA8B9CGyBcDBxYWqIIlG/+fMZ32+Hi3bmoRRnWpAkSZIkSZIk6c8Zd6f5uDvNe4/jKzXGNyt1oHF3mg/D7DAMs8O4P69KHbeUcX9evY+vYMRiAa8NsM4UcdyfVwOsaxy7WMDt8vF4gefpdZaIH+Nd4Hm7fDyWOv5Q6kCTmwNePGxKnyfLWIoHhBwRW42hSkDoG7HluasFhD4RW5+zakBoO6Eeb1j1gNBmYr0+MpoEhLoT7Pl52ywg1Jlo7yt+04BQdsK940GHgFBm4hniQaeAEAuQJR50DAi/C5EpHnQOCD8Lki0eJAgI3wuTMR4kCQj3A2WNB4kCwu1Q8La2eP2zLPEgWUC4v3qcLR4kDAi3I2aMB5X2RP'+ '6TdL+B/gkHeBEJ8GtMgF+kA/xXLsDFhACXswJcUA1wST/ATaUAtzUD3FgP8NaOAG8uCvD2toDeV8aWY/AW36CiATPFazWmYgGn50Sm1xniTT5FvLw8lbpTv8qeSKZ4ANvFw+b6EYy0/uOjXpIkSZIkSZIktfEKpbbYV1i0uZQAAAAASUVORK5CYII='); el.userData.materialOver = new THREE.MeshBasicMaterial( {map: textureOver, side: THREE.DoubleSide, transparent: true} ); el.userData.materialOver.name = 'ht_info_popup_close_materialOver'; el.userData.ggId="ht_info_popup_close"; me._ht_info_popup_close.userData.onclick=function (e) { player.setVariableValue('open_info_hs', player.getVariableValue('open_info_hs').replace("<"+me.hotspot.id+">", '')); } me._ht_info_popup_close.userData.onmouseover=function (e) { me._ht_info_popup_close.material = me._ht_info_popup_close.userData.materialOver; me.elementMouseOver['ht_info_popup_close']=true; } me._ht_info_popup_close.userData.onmouseout=function (e) { me._ht_info_popup_close.material = me._ht_info_popup_close.userData.materialNormal; me.elementMouseOver['ht_info_popup_close']=false; } me._ht_info_popup_close.userData.ggUpdatePosition=function (useTransition) { } me._ht_info_popup_bg.add(me._ht_info_popup_close); me._ht_info.add(me._ht_info_popup_bg); me._ht_info.userData.setOpacity(1.00); me._ht_info_bg.userData.setOpacity(1.00); me._ht_info_icon.userData.setOpacity(1.00); me._ht_info_title.userData.setOpacity(0.00); me._ht_info_popup_bg.userData.setOpacity(0.00); me._ht_info_popup.userData.setOpacity(1.00); me._ht_info_popup_close.userData.setOpacity(1.00); me.ggEvent_changenode=function() { me._ht_info_bg.logicBlock_alpha(); me._ht_info_popup_bg.logicBlock_scaling(); me._ht_info_popup_bg.logicBlock_alpha(); }; me.ggEvent_configloaded=function() { me._ht_info_bg.logicBlock_alpha(); me._ht_info_popup_bg.logicBlock_scaling(); me._ht_info_popup_bg.logicBlock_alpha(); }; me.ggEvent_varchanged_open_image_hs=function() { me._ht_info_bg.logicBlock_alpha(); }; me.ggEvent_varchanged_open_info_hs=function() { me._ht_info_popup_bg.logicBlock_scaling(); me._ht_info_popup_bg.logicBlock_alpha(); }; me.__obj = me._ht_info; me.__obj.userData.hotspot = hotspot; me.__obj.userData.fromSkin = true; }; function SkinHotspotClass_ht_image(parentScope,hotspot) { var me=this; var flag=false; var hs=''; me.parentScope=parentScope; me.hotspot=hotspot; var nodeId=String(hotspot.url); nodeId=(nodeId.charAt(0)=='{')?nodeId.substr(1, nodeId.length - 2):''; // } me.ggUserdata=skin.player.getNodeUserdata(nodeId); me.ggUserdata.nodeId=nodeId; me.elementMouseDown={}; me.elementMouseOver={}; me.findElements=function(id,regex) { return skin.findElements(id,regex); } el = new THREE.Group(); el.userData.setOpacityInternal = function(v) {}; el.name = 'ht_image'; el.userData.x = -1.17; el.userData.y = 2.1; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_image.visible let parentEl = me._ht_image.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image.userData.opacity = v; v = v * me._ht_image.userData.parentOpacity; me._ht_image.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image.children.length; i++) { let child = me._ht_image.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image.userData.parentOpacity = v; v = v * me._ht_image.userData.opacity me._ht_image.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image.children.length; i++) { let child = me._ht_image.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image = el; el.userData.ggId="ht_image"; el.userData.ggElementNodeId=function() { if (me.hotspot.url!='' && me.hotspot.url.charAt(0)=='{') { // } return me.hotspot.url.substr(1, me.hotspot.url.length - 2); } else { if ((this.parentNode) && (this.parentNode.userData.ggElementNodeId)) { return this.parentNode.userData.ggElementNodeId(); } else { return player.getCurrentNode(); } } } me._ht_image.userData.onclick=function (e) { player.triggerEvent('hsproxyclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_image.userData.ondblclick=function (e) { player.triggerEvent('hsproxydblclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_image.userData.onmouseover=function (e) { player.setActiveHotspot(me.hotspot); me.elementMouseOver['ht_image']=true; player.triggerEvent('hsproxyover', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_image.userData.onmouseout=function (e) { player.setActiveHotspot(null); me.elementMouseOver['ht_image']=false; player.triggerEvent('hsproxyout', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_image.userData.ggUpdatePosition=function (useTransition) { } width = 0.45; height = 0.45; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_image_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_image_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_image_bg.material.opacity = v * me._ht_image_bg.userData.backgroundColorAlpha; if (me._ht_image_bg.userData.ggSubElement) { me._ht_image_bg.userData.ggSubElement.material.opacity = v me._ht_image_bg.userData.ggSubElement.visible = (v>0 && me._ht_image_bg.userData.visible); } me._ht_image_bg.visible = (v>0 && me._ht_image_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_image_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_image_bg.userData.backgroundColorAlpha = v; me._ht_image_bg.userData.setOpacity(me._ht_image_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 45; el.userData.height = 45; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_image_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.010); el.renderOrder = 1; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_image_bg.visible let parentEl = me._ht_image_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image_bg.userData.opacity = v; v = v * me._ht_image_bg.userData.parentOpacity; me._ht_image_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_bg.children.length; i++) { let child = me._ht_image_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image_bg.userData.parentOpacity = v; v = v * me._ht_image_bg.userData.opacity me._ht_image_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_bg.children.length; i++) { let child = me._ht_image_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image_bg = el; el.userData.ggId="ht_image_bg"; me._ht_image_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['ht_image_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_image_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_image_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_image_bg.ggCurrentLogicStateScaling == 0) { me._ht_image_bg.userData.transitionValue_scale = {x: 1.2, y: 1.2, z: 1.0}; for (var i = 0; i < me._ht_image_bg.userData.transitions.length; i++) { if (me._ht_image_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_image_bg.userData.transitions[i].interval); me._ht_image_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_image_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_bg.scale.set(transition_scale.startScale.x + (me._ht_image_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_image_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_image_bg.position.x = (me._ht_image_bg.position.x - me._ht_image_bg.userData.curScaleOffX) + scaleOffX; me._ht_image_bg.userData.curScaleOffX = scaleOffX; me._ht_image_bg.position.y = (me._ht_image_bg.position.y - me._ht_image_bg.userData.curScaleOffY) + scaleOffY; me._ht_image_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_image_bg.userData.transitions.splice(me._ht_image_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_image_bg.userData.transitions.push(transition_scale); } else { me._ht_image_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_image_bg.userData.transitions.length; i++) { if (me._ht_image_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_image_bg.userData.transitions[i].interval); me._ht_image_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_image_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_bg.scale.set(transition_scale.startScale.x + (me._ht_image_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_image_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_image_bg.position.x = (me._ht_image_bg.position.x - me._ht_image_bg.userData.curScaleOffX) + scaleOffX; me._ht_image_bg.userData.curScaleOffX = scaleOffX; me._ht_image_bg.position.y = (me._ht_image_bg.position.y - me._ht_image_bg.userData.curScaleOffY) + scaleOffY; me._ht_image_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_image_bg.userData.transitions.splice(me._ht_image_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_image_bg.userData.transitions.push(transition_scale); } } } me._ht_image_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_image_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_image_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_image_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_image_bg.ggCurrentLogicStateAlpha == 0) { me._ht_image_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_image_bg.userData.transitions.length; i++) { if (me._ht_image_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_image_bg.userData.transitions[i].interval); me._ht_image_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_image_bg.material ? me._ht_image_bg.material.opacity : me._ht_image_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_image_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_image_bg.userData.transitions.splice(me._ht_image_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_image_bg.userData.transitions.push(transition_alpha); } else { me._ht_image_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_image_bg.userData.transitions.length; i++) { if (me._ht_image_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_image_bg.userData.transitions[i].interval); me._ht_image_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_image_bg.material ? me._ht_image_bg.material.opacity : me._ht_image_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 200; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_image_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_image_bg.userData.transitions.splice(me._ht_image_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_image_bg.userData.transitions.push(transition_alpha); } } } me._ht_image_bg.userData.onclick=function (e) { player.setVariableValue('open_image_hs', player.getVariableValue('open_image_hs') + "<"+me.hotspot.id+">"); } me._ht_image_bg.userData.onmouseover=function (e) { me.elementMouseOver['ht_image_bg']=true; me._ht_image_title.logicBlock_alpha(); me._ht_image_bg.logicBlock_scaling(); } me._ht_image_bg.userData.ontouchend=function (e) { me._ht_image_bg.logicBlock_scaling(); } me._ht_image_bg.userData.onmouseout=function (e) { me.elementMouseOver['ht_image_bg']=false; me._ht_image_title.logicBlock_alpha(); me._ht_image_bg.logicBlock_scaling(); } me._ht_image_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.36, 0.36, 5, 5 ); geometry.name = 'ht_image_icon_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAGzElEQVR4nO2b328cVxXHP+fu2kRIieKxvbt2RNWHRKIozQOixKrrdYJJq1IUFJf3BIMovMFjaQOSUdM/AYqUOOaFB5REoFYVaYLrXRscqEBKrVLJkWgrOd7x2tM0rdpovXsPDzMTb4zjtb0z68Tez9O9M3fPvfPdOffHuXegSZMmTZo0abJNkUZVNDa399EkyUejsGVl6cP+zCf/jcJWLRoiUO5mx9cx9u9Aa1Q2RWSwL714KSp798PEXcH0NK0Ye54IxQFQ1dHp6WhtrkYy7gq8dudl4HEAhJxY86t67KnY3wNfAXZ77c5L4NVlrxaxuljgWv8AEsB1Z8F74uBBSvXYnJ6m1etw3sEXvazGfrM/devfUbR3NWJzsSrXSuA/yKl6xQE4eJAS1pwCKk'+ 'BSrDkfp6vFJtA9rqWcifJfznYv/AvlTJA95LtaPMTiYnG41koa5WqRv0FxudZKGuVqa75Bk4V0qiKlA2ITLes3aYdV6ANAGc52xTvK5OacYYTTwIZHSTWVpYS2zvRm3Pn7lVlVoPFCx3HB/gI4vNEGVxGLa61khattlmuKOdOfWfjzyhv3CPSO0vK567wG/KCOygBKamxPnMNvNRHO1Ee+nPZe+IawFF64R6BcwTlHII7CLOh5kHeNGncjtZQpf3C069YHdTZ2Q2xmrWfFpkEfBzklsC+4PJLNeENhmbsCBW71JwCFP36phR/1tHu3o2j8g87UorOnVOYsyvcBFPO90N3ujmJBn4PC7E4SB6Cn3bvdmuSHvtcA2BfDewb80Yq7HbKe30nihPS0e7cFHQUQ6Ak08QWqSOnAclF5dysa+CCgyPUwHWpiAKrnORvtkLcT'+ '1c8eahJ7uGM9qGLeLnamkmXdB1BOyuyRzuK8CHar27ZlAk0UO3bbsj6P2BN5V55OUNmlwZCRsJB3nTu5gl5GzSWTlAtPdS58uhXtjD2iuJIxJTnutr1gK/YGoiMgx4FdqxTdBXIc0ZFKxc7kC20/HtPG/6ENrXCykE5V3KVLwJNVl2eANwT9DzAXXOtS5DHQ74LsF0gr8lrCdU5OFlpOrLV2ipqGCZSbc75WYelN4JHg0hVBXu7LLF5b42c/zxfaDyv6CjAAPFlh6Z+5OefZbJf3XuyNpkEudsVNpRFCcUqiDGUz3rEa4gDQl1m8ls143xZlCCgBjyC8Gc5T4iZ2gcaUZKuWLxKIo9Ye6+vyRjZqp6/LG1FrjxGIVGHpYiP6pNgFSrptQwR9jig/6e++ldusrf7uWzmBnwbZ3oTr1Bt1qEmsAk0UO3ZbZDjIXt3Mm7'+ 'OSvox3DvgrgMKvJ4odu+u1uRaxCmTL+rxAGkCQyALrBl7ybZKulHUwKrv3qStGxJ4IUjPr6ZDXS2/auwZ6A0CW64iF2ARSxYA8HWTfiNK2CAryepB7xq8rHmIz/HaxM0UwQw4mgZGiou8HyV1X51OdUdsPiU2gcOEZMHffgpvEKDfDdGvF7lurbF31xGV4uxCbQOWkzFZlu6K2b4XuMF1KmNm1ytZDbAId6SzOA3cA/IVntIjKV4PkFwOp+WLU9kNiE8gPdunlIPtclLZVEX+lD6CX4wysxdsHqQmPyB3IF9rr2aW9h0nXOQyyH0CX64iFWAUySbmg4AIEIYtIsPCKbxPXJsyFqOyuRqwCPdW58KlBfxlkB/Jz9S8u8wVnCPgWgMDpo6niZ/XaXIvYh/ly+uNzwN8AVPjt+M292c3aGr+5N6vwmyA7WUnXv/itRewC'+ 'HRXKCVpOAB8BrWLMW8FbsCHyBWdIjHkL/4DChwlaBo8K5ajbu5KGTBR7M+48yrMEIimczRWcKxMFp8cfkVZHFZkoOD25gnNV4Sy+OB+hfKdRcemGxaSzXd57k4X0ExWWLgK9wICFgbzbdiNXkNdV9P1w+WCFbqPyWN7V54D9VWYmE7QM9nZtw6A9+G/SmHIk6bYNWWTYjxXJfuBnooIG5UQJ0v7LpeAKnK6kvZFsA9yqmobvM/n9xse/myh2/KFS1kE/niPP8P97Y3dA/6JqLiWScnGrNg63bGc1eOBRYFQVc3U+1RmuyksJMzuQmi/u6K3nanwh5l2CSeWDRDPcUYOmQDVoClQDA/6B6vCCf/JzZ1L97KEmBiChrTPLxbSeA9kPNYIeCtOhJgaCpQAE+1ZyamrR2bMF7dtSphadPYqcBFCYCpcyd/sgxZwBENhXKn'+ 'N2J4kUnpNePkxuXg3vrXnSXtBRRa5v14OdVmxa0EOKnKx50h4i/VbjYWXtbzVCxgsdx8G+KNDTuLZtHQpTYF6t+bXPSjb3vdjDw3q+F2vSpEmTJk2abFv+B1jmuY0F3uXXAAAAAElFTkSuQmCC'); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_image_icon_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 36; el.userData.height = 36; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_image_icon'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_image_icon.material.opacity = v; me._ht_image_icon.visible = (v>0 && me._ht_image_icon.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_image_icon.visible let parentEl = me._ht_image_icon.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image_icon.userData.opacity = v; v = v * me._ht_image_icon.userData.parentOpacity; me._ht_image_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_icon.children.length; i++) { let child = me._ht_image_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image_icon.userData.parentOpacity = v; v = v * me._ht_image_icon.userData.opacity me._ht_image_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_icon.children.length; i++) { let child = me._ht_image_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image_icon = el; el.userData.ggId="ht_image_icon"; me._ht_image_icon.userData.ggUpdatePosition=function (useTransition) { } me._ht_image_bg.add(me._ht_image_icon); geometry = new THREE.PlaneBufferGeometry(1, 0.2, 5, 5 ); geometry.name = 'ht_image_title_geometry'; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_image_title_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 1; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_image_title.material.opacity = v; if (me._ht_image_title.userData.hasScrollbar) { me._ht_image_title.userData.scrollbar.material.opacity = v; me._ht_image_title.userData.scrollbarBg.material.opacity = v; } if (me._ht_image_title.userData.ggSubElement) { me._ht_image_title.userData.ggSubElement.material.opacity = v me._ht_image_title.userData.ggSubElement.visible = (v>0 && me._ht_image_title.userData.visible); } me._ht_image_title.visible = (v>0 && me._ht_image_title.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_image_title.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_image_title.userData.backgroundColorAlpha = v; me._ht_image_title.userData.setOpacity(me._ht_image_title.userData.opacity); } el.translateX(0); el.translateY(-0.325); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 100; el.userData.height = 20; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_image_title'; el.userData.x = 0; el.userData.y = -0.325; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_image_title.visible let parentEl = me._ht_image_title.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image_title.userData.opacity = v; v = v * me._ht_image_title.userData.parentOpacity; me._ht_image_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_title.children.length; i++) { let child = me._ht_image_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image_title.userData.parentOpacity = v; v = v * me._ht_image_title.userData.opacity me._ht_image_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_title.children.length; i++) { let child = me._ht_image_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image_title = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(1, 1, 1); el.userData.textColor = new THREE.Color(0.760784, 0.909804, 0.0705882); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 100; canvas.height = 20; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._ht_image_title.userData.totalHeight = 3; me._ht_image_title.userData.textLines = []; var ctx = me._ht_image_title.userData.textCanvasContext; var words = me._ht_image_title.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._ht_image_title.userData.width - 0 - (scrollbar ? 25 : 0)) && i > 0) { me._ht_image_title.userData.textLines.push(line); line = words[i]; me._ht_image_title.userData.totalHeight += me._ht_image_title.userData.lineHeight; } else { line = testLine; } } me._ht_image_title.userData.textLines.push(line); me._ht_image_title.userData.totalHeight += me._ht_image_title.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._ht_image_title.userData.textCanvas; var ctx = me._ht_image_title.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_image_title.userData.textColor.r * 255 + ', ' + me._ht_image_title.userData.textColor.g * 255 + ', ' + me._ht_image_title.userData.textColor.b * 255 + ', ' + me._ht_image_title.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = (me._ht_image_title.userData.boxWidth - (me._ht_image_title.userData.hasScrollbar ? 25 : 0)) / 2; ctx.textAlign = 'center'; var y = 3; for (var i = 0; i < me._ht_image_title.userData.textLines.length; i++) { ctx.fillText(me._ht_image_title.userData.textLines[i], x, y); y += me._ht_image_title.userData.lineHeight; } geometry = new THREE.PlaneBufferGeometry(me._ht_image_title.userData.boxWidth / 100.0, me._ht_image_title.userData.boxHeight / 100.0, 5, 5 ); geometry.name = 'ht_image_title_geometry'; me._ht_image_title.geometry.dispose(); me._ht_image_title.geometry = geometry; var diffY = me._ht_image_title.userData.boxHeight - me._ht_image_title.userData.height; me._ht_image_title.position.y = me._ht_image_title.userData.y - ((diffY / 2.0) / 100.0); var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'ht_image_title_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._ht_image_title.material.map) { me._ht_image_title.material.map.dispose(); } me._ht_image_title.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._ht_image_title.userData.textCanvas; var ctx = me._ht_image_title.userData.textCanvasContext; ctx.font = '18px Verdana'; me._ht_image_title.userData.lineHeight = 18 * 1.2; me._ht_image_title.userData.textLines = []; me._ht_image_title.userData.textLines.push(me._ht_image_title.userData.ggText); me._ht_image_title.userData.totalHeight = 3; me._ht_image_title.userData.totalHeight += me._ht_image_title.userData.lineHeight; me._ht_image_title.userData.boxWidth = ctx.measureText(me._ht_image_title.userData.ggText).width + 0; me._ht_image_title.userData.boxHeight = me._ht_image_title.userData.totalHeight; canv.width = me._ht_image_title.userData.boxWidth; canv.height = me._ht_image_title.userData.boxHeight; ctx.font = '18px Verdana'; me._ht_image_title.userData.ggPaintCanvasText(); } me._ht_image_title.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(player._(me.hotspot.title)))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._ht_image_title.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._ht_image_title.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_image_title.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._ht_image_title.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._ht_image_title.userData.textColorAlpha = v; } el.userData.ggId="ht_image_title"; me._ht_image_title.logicBlock_alpha = function() { var newLogicStateAlpha; if ( ((me.elementMouseOver['ht_image_bg'] == true)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_image_title.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_image_title.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_image_title.ggCurrentLogicStateAlpha == 0) { me._ht_image_title.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_image_title.userData.transitions.length; i++) { if (me._ht_image_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_image_title.userData.transitions[i].interval); me._ht_image_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_image_title.material ? me._ht_image_title.material.opacity : me._ht_image_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_image_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_image_title.userData.transitions.splice(me._ht_image_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_image_title.userData.transitions.push(transition_alpha); } else { me._ht_image_title.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_image_title.userData.transitions.length; i++) { if (me._ht_image_title.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_image_title.userData.transitions[i].interval); me._ht_image_title.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_image_title.material ? me._ht_image_title.material.opacity : me._ht_image_title.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_title.userData.setOpacity(transition_alpha.startAlpha + (me._ht_image_title.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_image_title.userData.transitions.splice(me._ht_image_title.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_image_title.userData.transitions.push(transition_alpha); } } } me._ht_image_title.userData.ggUpdatePosition=function (useTransition) { } me._ht_image_bg.add(me._ht_image_title); me._ht_image.add(me._ht_image_bg); width = 6.6; height = 4.8; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.3, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.3, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.3); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.3, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.3, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.3); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.3); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.3, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_image_popup_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.666667)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_image_popup_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.666667; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_image_popup_bg.material.opacity = v * me._ht_image_popup_bg.userData.backgroundColorAlpha; if (me._ht_image_popup_bg.userData.ggSubElement) { me._ht_image_popup_bg.userData.ggSubElement.material.opacity = v me._ht_image_popup_bg.userData.ggSubElement.visible = (v>0 && me._ht_image_popup_bg.userData.visible); } me._ht_image_popup_bg.visible = (v>0 && me._ht_image_popup_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_image_popup_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_image_popup_bg.userData.backgroundColorAlpha = v; me._ht_image_popup_bg.userData.setOpacity(me._ht_image_popup_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(0.10, 0.10, 1.0); el.userData.width = 660; el.userData.height = 480; el.userData.scale = {x: 0.10, y: 0.10, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_image_popup_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_image_popup_bg.visible let parentEl = me._ht_image_popup_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image_popup_bg.userData.opacity = v; v = v * me._ht_image_popup_bg.userData.parentOpacity; me._ht_image_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_popup_bg.children.length; i++) { let child = me._ht_image_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image_popup_bg.userData.parentOpacity = v; v = v * me._ht_image_popup_bg.userData.opacity me._ht_image_popup_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_popup_bg.children.length; i++) { let child = me._ht_image_popup_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image_popup_bg = el; el.userData.ggId="ht_image_popup_bg"; me._ht_image_popup_bg.logicBlock_scaling = function() { var newLogicStateScaling; if ( (((player.getVariableValue('open_image_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_image_popup_bg.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_image_popup_bg.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_image_popup_bg.ggCurrentLogicStateScaling == 0) { me._ht_image_popup_bg.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_image_popup_bg.userData.transitions.length; i++) { if (me._ht_image_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_image_popup_bg.userData.transitions[i].interval); me._ht_image_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_image_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_image_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_image_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_image_popup_bg.position.x = (me._ht_image_popup_bg.position.x - me._ht_image_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_image_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_image_popup_bg.position.y = (me._ht_image_popup_bg.position.y - me._ht_image_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_image_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_image_popup_bg.userData.transitions.splice(me._ht_image_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_image_popup_bg.userData.transitions.push(transition_scale); } else { me._ht_image_popup_bg.userData.transitionValue_scale = {x: 0.1, y: 0.1, z: 1.0}; for (var i = 0; i < me._ht_image_popup_bg.userData.transitions.length; i++) { if (me._ht_image_popup_bg.userData.transitions[i].property == 'scale') { clearInterval(me._ht_image_popup_bg.userData.transitions[i].interval); me._ht_image_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_image_popup_bg.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_popup_bg.scale.set(transition_scale.startScale.x + (me._ht_image_popup_bg.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_image_popup_bg.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_image_popup_bg.position.x = (me._ht_image_popup_bg.position.x - me._ht_image_popup_bg.userData.curScaleOffX) + scaleOffX; me._ht_image_popup_bg.userData.curScaleOffX = scaleOffX; me._ht_image_popup_bg.position.y = (me._ht_image_popup_bg.position.y - me._ht_image_popup_bg.userData.curScaleOffY) + scaleOffY; me._ht_image_popup_bg.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_image_popup_bg.userData.transitions.splice(me._ht_image_popup_bg.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_image_popup_bg.userData.transitions.push(transition_scale); } } } me._ht_image_popup_bg.logicBlock_alpha = function() { var newLogicStateAlpha; if ( (((player.getVariableValue('open_image_hs')).indexOf("<"+me.hotspot.id+">") != -1)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_image_popup_bg.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_image_popup_bg.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_image_popup_bg.ggCurrentLogicStateAlpha == 0) { me._ht_image_popup_bg.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_image_popup_bg.userData.transitions.length; i++) { if (me._ht_image_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_image_popup_bg.userData.transitions[i].interval); me._ht_image_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_image_popup_bg.material ? me._ht_image_popup_bg.material.opacity : me._ht_image_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_image_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_image_popup_bg.userData.transitions.splice(me._ht_image_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_image_popup_bg.userData.transitions.push(transition_alpha); } else { me._ht_image_popup_bg.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_image_popup_bg.userData.transitions.length; i++) { if (me._ht_image_popup_bg.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_image_popup_bg.userData.transitions[i].interval); me._ht_image_popup_bg.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_image_popup_bg.material ? me._ht_image_popup_bg.material.opacity : me._ht_image_popup_bg.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 500; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_image_popup_bg.userData.setOpacity(transition_alpha.startAlpha + (me._ht_image_popup_bg.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_image_popup_bg.userData.transitions.splice(me._ht_image_popup_bg.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_image_popup_bg.userData.transitions.push(transition_alpha); } } } me._ht_image_popup_bg.userData.ggUpdatePosition=function (useTransition) { } el = new THREE.Group(); el.userData.backgroundColorAlpha = 1; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { if (me._ht_image_popup.userData.ggSubElement) { me._ht_image_popup.userData.ggSubElement.material.opacity = v me._ht_image_popup.userData.ggSubElement.visible = (v>0 && me._ht_image_popup.userData.visible); } me._ht_image_popup.visible = (v>0 && me._ht_image_popup.userData.visible); } el.translateX(0); el.translateY(-0.2); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 600; el.userData.height = 400; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_image_popup'; el.userData.x = 0; el.userData.y = -0.2; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_image_popup.visible let parentEl = me._ht_image_popup.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image_popup.userData.opacity = v; v = v * me._ht_image_popup.userData.parentOpacity; me._ht_image_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_popup.children.length; i++) { let child = me._ht_image_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image_popup.userData.parentOpacity = v; v = v * me._ht_image_popup.userData.opacity me._ht_image_popup.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_popup.children.length; i++) { let child = me._ht_image_popup.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image_popup = el; currentWidth = 600; currentHeight = 400; var img = {}; width = currentWidth / 100.0; height = currentHeight / 100.0; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.2, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.2, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.2); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.2); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.2, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_image_popup_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; img.geometry = geometry; loader = new THREE.TextureLoader(); el.userData.ggSetUrl = function(extUrl) { loader.load(extUrl, function (texture) { var loadedMaterial = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); loadedMaterial.name = 'ht_image_popup_subElementMaterial'; me._ht_image_popup.userData.ggSubElement.material = loadedMaterial; me._ht_image_popup.userData.ggUpdatePosition(); me._ht_image_popup.userData.ggText = extUrl; me._ht_image_popup.userData.setOpacity(me._ht_image_popup.userData.opacity); }); }; var extUrl=basePath + ""+player._(me.hotspot.url)+""; el.userData.ggSetUrl(extUrl); material = new THREE.MeshBasicMaterial( {color: 0xffffff, side: THREE.DoubleSide, transparent: true } ); material.name = 'ht_image_popup_subElementMaterial'; el.userData.ggSubElement = new THREE.Mesh( img.geometry, material ); el.userData.ggSubElement.name = 'ht_image_popup_subElement'; el.add(el.userData.ggSubElement); el.userData.clientWidth = 600; el.userData.clientHeight = 400; el.userData.ggId="ht_image_popup"; me._ht_image_popup.userData.ggUpdatePosition=function (useTransition) { var parentWidth = me._ht_image_popup.userData.clientWidth; var parentHeight = me._ht_image_popup.userData.clientHeight; var img = me._ht_image_popup.userData.ggSubElement; var imgWidth = img.material.map.image.naturalWidth; var imgHeight = img.material.map.image.naturalHeight; var aspectRatioDiv = parentWidth / parentHeight; var aspectRatioImg = imgWidth / imgHeight; var currentWidth, currentHeight; img.geometry.dispose(); if (aspectRatioDiv > aspectRatioImg) { currentHeight = parentHeight; currentWidth = parentHeight * aspectRatioImg; width = currentWidth / 100.0; height = currentHeight / 100.0; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.2, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.2, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.2); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.2); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.2, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_image_popup_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; img.geometry = geometry; } else { currentWidth = parentWidth; currentHeight = parentWidth / aspectRatioImg; width = currentWidth / 100.0; height = currentHeight / 100.0; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.2, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.2, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.2); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.2); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.2, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_image_popup_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; img.geometry = geometry; }; } me._ht_image_popup_bg.add(me._ht_image_popup); geometry = new THREE.PlaneBufferGeometry(0.4, 0.4, 5, 5 ); geometry.name = 'ht_image_popup_close_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABJElEQVR4nO3bSw6DMBAEUSs341icfrLJSJGFAeNfY9c7QU9JiJVDAAAAAAAAAADgdcxsM7Nt9I4U6X2/cW4fvSdmZvvfPr2IUUCpiFE8zYAhHA4dHlFx0ymlwUpbsigMV9hQZOQBr4/nRhwyTTzX86Dp4rkeh00bz7U8cPp4rsWhy8RzNQ9eLp6rcfiy8VxJgOXjuSchiBfJCUK8hDthiHfhLBDxbjoKRbxMB8GIlysRUTLeZ/QAVMYnXICfSIGzUES8cCcQERNywhAx8iQIEX9KQiwfsUaAZSPWPHy5iC0OXiZiy0Onj9jjwGkj9jxsuogjDpom4shDXh9R4QCFDY8oDVfacoviYMVNh4xnDmWMhzblTPkpVdDfBwAAAAAAAABA2hcaGfeSY++bsA'+ 'AAAABJRU5ErkJggg=='); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_image_popup_close_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(2.85); el.translateY(2.05); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 40; el.userData.height = 40; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_image_popup_close'; el.userData.x = 2.85; el.userData.y = 2.05; el.userData.hanchor = 2; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_image_popup_close.material.opacity = v; me._ht_image_popup_close.visible = (v>0 && me._ht_image_popup_close.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_image_popup_close.visible let parentEl = me._ht_image_popup_close.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_image_popup_close.userData.opacity = v; v = v * me._ht_image_popup_close.userData.parentOpacity; me._ht_image_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_popup_close.children.length; i++) { let child = me._ht_image_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_image_popup_close.userData.parentOpacity = v; v = v * me._ht_image_popup_close.userData.opacity me._ht_image_popup_close.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_image_popup_close.children.length; i++) { let child = me._ht_image_popup_close.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_image_popup_close = el; textureOver = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAABo0lEQVR4nO3bT07CQBhA8VcOZsQtpPfBA8B9CGyBcDBxYWqIIlG/+fMZ32+Hi3bmoRRnWpAkSZIkSZIk6c8Zd6f5uDvNe4/jKzXGNyt1oHF3mg/D7DAMs8O4P69KHbeUcX9evY+vYMRiAa8NsM4UcdyfVwOsaxy7WMDt8vF4gefpdZaIH+Nd4Hm7fDyWOv5Q6kCTmwNePGxKnyfLWIoHhBwRW42hSkDoG7HluasFhD4RW5+zakBoO6Eeb1j1gNBmYr0+MpoEhLoT7Pl52ywg1Jlo7yt+04BQdsK940GHgFBm4hniQaeAEAuQJR50DAi/C5EpHnQOCD8Lki0eJAgI3wuTMR4kCQj3A2WNB4kCwu1Q8La2eP2zLPEgWUC4v3qcLR4kDAi3I2aMB5X2RP'+ '6TdL+B/gkHeBEJ8GtMgF+kA/xXLsDFhACXswJcUA1wST/ATaUAtzUD3FgP8NaOAG8uCvD2toDeV8aWY/AW36CiATPFazWmYgGn50Sm1xniTT5FvLw8lbpTv8qeSKZ4ANvFw+b6EYy0/uOjXpIkSZIkSZIktfEKpbbYV1i0uZQAAAAASUVORK5CYII='); el.userData.materialOver = new THREE.MeshBasicMaterial( {map: textureOver, side: THREE.DoubleSide, transparent: true} ); el.userData.materialOver.name = 'ht_image_popup_close_materialOver'; el.userData.ggId="ht_image_popup_close"; me._ht_image_popup_close.userData.onclick=function (e) { player.setVariableValue('open_image_hs', player.getVariableValue('open_image_hs').replace("<"+me.hotspot.id+">", '')); } me._ht_image_popup_close.userData.onmouseover=function (e) { me._ht_image_popup_close.material = me._ht_image_popup_close.userData.materialOver; me.elementMouseOver['ht_image_popup_close']=true; } me._ht_image_popup_close.userData.onmouseout=function (e) { me._ht_image_popup_close.material = me._ht_image_popup_close.userData.materialNormal; me.elementMouseOver['ht_image_popup_close']=false; } me._ht_image_popup_close.userData.ggUpdatePosition=function (useTransition) { } me._ht_image_popup_bg.add(me._ht_image_popup_close); me._ht_image.add(me._ht_image_popup_bg); me._ht_image.userData.setOpacity(1.00); me._ht_image_bg.userData.setOpacity(1.00); me._ht_image_icon.userData.setOpacity(1.00); me._ht_image_title.userData.setOpacity(0.00); me._ht_image_popup_bg.userData.setOpacity(0.00); me._ht_image_popup.userData.setOpacity(1.00); me._ht_image_popup_close.userData.setOpacity(1.00); me.ggEvent_changenode=function() { me._ht_image_bg.logicBlock_alpha(); me._ht_image_popup_bg.logicBlock_scaling(); me._ht_image_popup_bg.logicBlock_alpha(); }; me.ggEvent_configloaded=function() { me._ht_image_bg.logicBlock_alpha(); me._ht_image_popup_bg.logicBlock_scaling(); me._ht_image_popup_bg.logicBlock_alpha(); }; me.ggEvent_varchanged_open_image_hs=function() { me._ht_image_bg.logicBlock_alpha(); me._ht_image_popup_bg.logicBlock_scaling(); me._ht_image_popup_bg.logicBlock_alpha(); }; me.__obj = me._ht_image; me.__obj.userData.hotspot = hotspot; me.__obj.userData.fromSkin = true; }; function SkinHotspotClass_ht_node(parentScope,hotspot) { var me=this; var flag=false; var hs=''; me.parentScope=parentScope; me.hotspot=hotspot; var nodeId=String(hotspot.url); nodeId=(nodeId.charAt(0)=='{')?nodeId.substr(1, nodeId.length - 2):''; // } me.ggUserdata=skin.player.getNodeUserdata(nodeId); me.ggUserdata.nodeId=nodeId; me.elementMouseDown={}; me.elementMouseOver={}; me.findElements=function(id,regex) { return skin.findElements(id,regex); } el = new THREE.Group(); el.userData.setOpacityInternal = function(v) {}; el.name = 'ht_node'; el.userData.x = -3.06; el.userData.y = 2.11; el.userData.hanchor = 0; el.userData.vanchor = 0; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_node.visible let parentEl = me._ht_node.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_node.userData.opacity = v; v = v * me._ht_node.userData.parentOpacity; me._ht_node.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node.children.length; i++) { let child = me._ht_node.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_node.userData.parentOpacity = v; v = v * me._ht_node.userData.opacity me._ht_node.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node.children.length; i++) { let child = me._ht_node.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_node = el; el.userData.ggId="ht_node"; el.userData.ggElementNodeId=function() { if (me.hotspot.url!='' && me.hotspot.url.charAt(0)=='{') { // } return me.hotspot.url.substr(1, me.hotspot.url.length - 2); } else { if ((this.parentNode) && (this.parentNode.userData.ggElementNodeId)) { return this.parentNode.userData.ggElementNodeId(); } else { return player.getCurrentNode(); } } } me._ht_node.userData.onclick=function (e) { player.triggerEvent('hsproxyclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_node.userData.ondblclick=function (e) { player.triggerEvent('hsproxydblclick', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_node.userData.onmouseover=function (e) { player.setActiveHotspot(me.hotspot); me.elementMouseOver['ht_node']=true; player.triggerEvent('hsproxyover', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_node.userData.onmouseout=function (e) { player.setActiveHotspot(null); me.elementMouseOver['ht_node']=false; player.triggerEvent('hsproxyout', {'id': me.hotspot.id, 'url': me.hotspot.url}); } me._ht_node.userData.ggUpdatePosition=function (useTransition) { } width = 0.45; height = 0.45; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.12, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.12, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.12); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.12, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.12, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.12); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.12); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.12, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_node_bg_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( { color: new THREE.Color('rgba(74,74,74,0.588235)').convertSRGBToLinear(), side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_node_bg_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.588235; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_node_bg.material.opacity = v * me._ht_node_bg.userData.backgroundColorAlpha; if (me._ht_node_bg.userData.ggSubElement) { me._ht_node_bg.userData.ggSubElement.material.opacity = v me._ht_node_bg.userData.ggSubElement.visible = (v>0 && me._ht_node_bg.userData.visible); } me._ht_node_bg.visible = (v>0 && me._ht_node_bg.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_node_bg.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_node_bg.userData.backgroundColorAlpha = v; me._ht_node_bg.userData.setOpacity(me._ht_node_bg.userData.opacity); } el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 45; el.userData.height = 45; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_node_bg'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.010); el.renderOrder = 1; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_node_bg.visible let parentEl = me._ht_node_bg.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_node_bg.userData.opacity = v; v = v * me._ht_node_bg.userData.parentOpacity; me._ht_node_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_bg.children.length; i++) { let child = me._ht_node_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_node_bg.userData.parentOpacity = v; v = v * me._ht_node_bg.userData.opacity me._ht_node_bg.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_bg.children.length; i++) { let child = me._ht_node_bg.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_node_bg = el; el.userData.ggId="ht_node_bg"; me._ht_node_bg.userData.onclick=function (e) { player.openNext(player._(me.hotspot.url),player._(me.hotspot.target)); } me._ht_node_bg.userData.onmouseover=function (e) { me.elementMouseOver['ht_node_bg']=true; me._ht_node_image.logicBlock_alpha(); me._ht_node_image.logicBlock_scaling(); } me._ht_node_bg.userData.onmouseout=function (e) { me.elementMouseOver['ht_node_bg']=false; me._ht_node_image.logicBlock_alpha(); me._ht_node_image.logicBlock_scaling(); } me._ht_node_bg.userData.ggUpdatePosition=function (useTransition) { } geometry = new THREE.PlaneBufferGeometry(0.36, 0.36, 5, 5 ); geometry.name = 'ht_node_icon_geometry'; loader = new THREE.TextureLoader(); texture = loader.load('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAN+0lEQVR4nO2cbXBc5XXHf+feu+s3CdCupF1he5I4U5txPYVM7EyQ2ZUV02Aykxdi4sKH4JY2BUPGJSllJjF1IDP2B15CaTMYSgo1+dCJCjVJZmK7NZG1QnYGkwE6asaGqSm1je7qZZcgxVi7997TD/euJEsr7V1pZTsd/z/dl3Oe59z/Pm/nPOdZuIzLuIzLuHiQi21AZ39TneEVmkSMekXqfKN0RNUb9ozoQHvzwMjFtO+CEtTZ31QXcZ2Uh3wO4TqEa1CWzagknEY5jvKmgf6yaFrdF5K0eSfooJ1Yslicr6rqHcAGwJpjkQ5wGNG9H2l0303J7O/mbOQMmDeCOk/HlpmWPgDyZ0DdpGpHFX1DhBOonFDlfQyGQYOWIXV41ItwNaKrVFklyKdAF0'+ 'yqZgT0edeRR9qX5U7Px3fUnKBD2eZE1HMfQvROIDr2QnlbhA7UeMU5V/er9k/8z7lqyu189+MLrYUjn0W8jQp/AvzBhNcFVJ4rGOZDNyb6s7X5Eh81I6hDMRN2/G4R3QVcGTwuAHs9lWfbkkOvi6C1qEsV6bLjaw3RbwBbGf8hfqsqO7LJoae3CG4t6qoJQT3vX/Ux1zD+Bbg+eFQAnrIseay1cehMLeqYDkcG40sdR+8H7mGcqKOm592+/uoP3ptr+XMmqNtu+KIie4EGAJQDaprb25oH3plr2VXZMdC4Uh3v7xFuCh7lBd2aSuZ/Ppdy50RQxo7dBzwR3J5VlXvSyaEXatWVqoUqkrHjd4joU8BiAIX72pK5J2db5qwIUkW6sw27QL4TFHJclc3pltxvZmtILZHpi60W4SWFa/wnujuVyD84mx9uVgRl7IZdIN8N'+ 'bntk1P1i6mO/zc+mrPlC93tXNugC8+fAegBFd7Ul8w9WW07VBE3sVirsjxQWb25dfvqjasu5EHj9TMvi31mjL4pyM8yuu1VFUDAg/yy47VnsLvj82qV9Z6spoxw6FDM52NgsRa4G0Ajv242D/bWYql8/07L4rDn67wQtSdAvVTNwhyYomMrfABoEjjPqts62W3X2N9VZrnuzCrcopAVaAGOSmKfQJ5ARZZ9jmvtn64N1v3dlAwvMI8GYlBdXr0stzf9vGN1QBHUoZjIb68Zf55xFWTebAbl7oHGlut73Qb5Sxm2oZOoo6MtiGjtTTYNvV1t3pi+2GuEY/ux21E7kUmFaaCiCuvri94roDwFU5U/bWob2VmNcj51odsT5nqjeBZgTXtkIB4CTKLagfQCKtCAkgRUom4DkBB1HRJ9Rr/hwumVkoBo7uvriW0X0nwFE9d'+ '5US/6pSjoVCTqUbU5E1TkBXIlyIJXMfaGa6fJwNvbHhtIBXBU8GkHYgycvpnz3w5tJXxWj246vxdBbUbYx7vjmBdmSSg4dCmuLKtJtx/YHi8kPTCKr1iez/TPpTO73UxD13IfwfauCmub2sOSoIpm++DcNZT8+OQWBJ9HCinQi90C6Zei1SuQAiOClW4ZeSydyD5hEPinwJFAEGhQ90NUXvzeMPUFZKpaxPdC/ylXn4Yo6M730Qxb8N76P83fpZO5bYQwJfqnHEL4dPDrpol9uT+Z7w+hXQqfdsMZEfgqsABDl8VRL7v6w+hk79gRwH1CwLFkxk784Ywvy4zlEgYJhGo+GNyB+T4kcQTsLTvEztSIHoD2Z7y04xc+AHgZQ4a+7+xruCatvWfIYvkMdLTr6wEyy07agg3ZiySKKNn6ffzadzP1lmMqDMWc/YArauSiR'+ 'v2mtUAxrfDXo7SWaa2w4CLIBcAXZFHZMytixfwS+AQx/RKRlusjktC1osThfJRgQPZVnw1TaYyeagwHZBE6OOs7X5oscgDVrKLiu8zXgXcBUtCPTV9cUSlnlR8FV/SIp3DKd2LQEBTFkUN5uSw69HqZOTwo7CQZkF/3yjcuGh0IZOwe0Lx0edNEvEQzcSGRnGL1UcugY8A6AqNwxnVxZgjr7m+rwA+yI0BFm5uoeaFypKncBCOyp5ZhTCe3JfK/CHv9O7u4eaFxZSUcEVbQDQGHDQTuxpJxcWYIirpOitPugxithjPRXyFjAiGphVxidiTh0uj7elY21dmVjrYdO18er1beI7AJGACuwpSJUzdK3RRYbxVQ5mbIEecjn/CsZdc7V/apSRa8ONNb77gMg7KlmhdtpN6zJ2PHDUSsyKEqPKD1RKzKYseOHO+2GNWHLWZ'+ '/M9iNjregrQS+YEXqu7qjvwoC6bCwnU34MEq4DUPSNMLsP6nibxnwrT16sJA/+CrkrG7vfRH4N2lZGos1Eft2Vjd2vWnlBCyAqLwW6C0zX3VRJ3v82fRNAhGvLyUxH0DWB0okwhqlQmgXsVMgBPdMf+7YojwJRhSzoboXbFG4LrrNAVJRHM/2xUAvUGxJDxwI9RGTamek821VPAIxHH8/HFII6+5vqxraDVcIRBGkAhANh3IdOu2GNKKVx6heRorM6nczvaEvmftKWzP0knczviBSd1cAvAETZHaa7ieCJ7/zilW2V5XSM0jcuL9ctpxBkeIWxdYQq71eqoEMxg3gOwMkwRpkYPyRoOVbR+Xrr8g9zk2Val3+Ys4rO10stKdAJg5MAAskOPS9yUBaqjLsZbrFx8vspBIkY9RPeDleqIDnY2DxWjmJXkvdnKP/XFfSf'+ 'ypFTQuvyD3OCPuffaVuY2U1USzaYTQNNFReNYuhYEM4QqZ/8fgpBpRSU4K5iBK8UJgUoxXNmQiQSWTWhrv+sJK/IW6VrKxKpuL4BxmywHF0aQn78G8MQdBnnY2oXO6/VSOW1RGR8nFKkZSZZgGKxODbwC/pHleQFHZt+nWIxTKh1zAbHkjDb3uPfqDplSJnaxdQbF/KY0uQmw24c7Idg5pLzQqNl4ftn0gWgyJ8fOXVFbDrZQ6fr44rc6d9JVxjfTkVKNrgDTQMVF6zqjTcCLwxBnhEdK1RkfHyZDlsEV8f7/YpK8gAu3jfxI4wJJ2L9uBxJR05dEYtakRcEEiCjhmrYyOEKAAU7VFBeGB+nzMjg5PdTsr3amwdGMtnYaZRliK6a/L5sJZABbkfZpIpRaS3Unsz3dmVjO4KF4heKEes3GbvhudKALOi1ReROnxxQ0R'+ '03JHP/VckOVYxMlk0CGEErrazjrRIRgFPltpXKp8Mpx4FlqoQjSNmnwu1AstuOr4Wh1yrppJtzP8j0x1SU3UEr+c549E5KkbyCCt9NN+eemKaY8/BqNr5OUJ9U1X2hbBdZ5dfI8XLvy89iypuBmZ/qfPfjCytV4pjm/pLTh6G3hjMMry2Re9xFP03ZX1u6XPTTbYnc42FW5wAqujnQHXVN80Alef/bxPc7lbfKyZQlyEB/GVS5wFo48tlKFflNU1/2VdgWOqqH393SyaENBafY6AmtntBacIqN6eTQhmpiSj12ojnYFgL05TC7sLJw5PqSky0mZcM6ZbtY0bS6Tc91AAvxNgKHK1ZmGjvV9TYDdSLRHfi7BqERzFBHq9GZCIfiDvGnbEcN82/D6Ii4G4OwfPGsF+kuJ1O2BQXsHwZQZYtq5Q3GVNPg2yL6DIDCtmpi'+ 'OXNFp92wRhhrPU+HyW5TRQTZAiBwuOqgvYi84F+wssuOrw1jqHrFh4E8EDWRn84mMlgtOs/UN5p+xkkEyKPFUNHEbju+jiBTVkVfmE5uWoLOqvVvBH5KkE1aEemWkYHgV3GBFVHLerG3d0IqcI3R20vUNK1/BT6Bv+2zJXQ0U/QvgqvhjzQ67Yw3LUF+k9Png9utRwbjYRw/UsmhQ6ryV4EVG/KNDQfmoyV1nqlvnLAnhqhuD7snFnzLVgCF52fK1p/RWXUdeYRgBzJItQ2FdHLoKZQf+AZIe9SKHKvlmNRpN6wxzchr4+TweJhMjRKCb4kChYglj8wkW3HwzfTF9yB6N1BQw1xTTXpvkDbzJP5GYlFhj0VkV6WMiunQYyeag9lqG/6Y44rq9mrICXKUeoEIKk+nW4a2zSRfbfrLwVQyd3M16S/ddvzGYP+pIXg0gr'+ 'BHVF66ITF0LEz6y6vZ+DoV3VyT9Jds7ADweUKmv1ywBCpPCjuDjcWxtZdCNoghnwwigSWntyXwyleosqnkkwVwQJ9Gi9+/JBKo4P9HCt6rfbE/9PwUvEXUOgUPap/EabruJhG5xUPbxE+xmxxgdxVsA+lS1X2uaR6YbRLnkVNXxNyI1TNvSZwlzGcacNNAU1MphuxYcmagaWCghmnA/wG0wjymAZcwOZF8ibPg1lqQNB+44InkJfw+HEU4cuqKmBOxfsYcjyLMalcjlcg/CLo7uF3PAvNIpi+2ejZlzQcyfbHVbsTqYQI56UQ+lIc/GbMiSARNJ/M7gG/5BnANwrGuvvjWMJ7/fEEV6eqLb0U4Vtpr97vV7E76wPwcqDsolrF9NlPxnOzwlxD/gL8IhEvhQF0Jl8iRzHvx3Q+Ao+LqbWGn8plQ00O9LXbDXSqym0mH'+ 'elH5USo5dKyWh3q77fi6IGQx8VDvB6K6oy+Zf+aSOtQ7ET12otlV5+Epx8LhHUU7VM1X9Fzd0dkcC5eFI9eLuBuDmNOUY+GmWN+brSM8Heb1jwUMi78RuJMyfywA+qaqnhAxTqhyJsiyKK2U69STOhGWBvtWq/zdhynuybDC857Do783fywwGQftxJJFUrhFVO5QP3M2UkmnAooChz3RvUuchfvme5F6Qafkg3ZiyWKjmFKXjSJcG0zFyyuonQoODb8lJq+c9SLd8/1/HRNxSfw9Dm6x0RCpH8vPUR32VIcxI4MX++9xLuMyLuMyLib+Dz1IWCdo+VRMAAAAAElFTkSuQmCC'); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_node_icon_material'; el = new THREE.Mesh( geometry, material ); el.userData.materialNormal = material; el.translateX(0); el.translateY(0); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 36; el.userData.height = 36; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_node_icon'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.020); el.renderOrder = 2; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_node_icon.material.opacity = v; me._ht_node_icon.visible = (v>0 && me._ht_node_icon.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_node_icon.visible let parentEl = me._ht_node_icon.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_node_icon.userData.opacity = v; v = v * me._ht_node_icon.userData.parentOpacity; me._ht_node_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_icon.children.length; i++) { let child = me._ht_node_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_node_icon.userData.parentOpacity = v; v = v * me._ht_node_icon.userData.opacity me._ht_node_icon.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_icon.children.length; i++) { let child = me._ht_node_icon.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_node_icon = el; el.userData.ggId="ht_node_icon"; me._ht_node_icon.userData.ggUpdatePosition=function (useTransition) { } me._ht_node_bg.add(me._ht_node_icon); width = 1.5; height = 1.5; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0.2, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0.2, (height / 2.0)); roundedRectShape.quadraticCurveTo((width / 2.0), (height / 2.0), (width / 2.0), (height / 2.0) - 0.2); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0.2); roundedRectShape.quadraticCurveTo((-width / 2.0), (height / 2.0), (-width / 2.0) + 0.2, (height / 2.0)); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_node_image_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; loader = new THREE.TextureLoader(); el.userData.ggNodeId=nodeId; texture = loader.load(basePath + 'images_vr/ht_node_image_' + nodeId + '.png'); material = new THREE.MeshBasicMaterial( {map: texture, side: THREE.DoubleSide, transparent: true} ); material.name = 'ht_node_image_material'; el = new THREE.Mesh( geometry, material ); el.translateX(0); el.translateY(0); el.scale.set(0.30, 0.30, 1.0); el.userData.width = 150; el.userData.height = 150; el.userData.scale = {x: 0.30, y: 0.30, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_node_image'; el.userData.x = 0; el.userData.y = 0; el.userData.hanchor = 1; el.userData.vanchor = 1; el.translateZ(0.030); el.renderOrder = 3; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.setOpacityInternal = function(v) { me._ht_node_image.material.opacity = v; me._ht_node_image.visible = (v>0 && me._ht_node_image.userData.visible); } el.userData.isVisible = function() { let vis = me._ht_node_image.visible let parentEl = me._ht_node_image.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_node_image.userData.opacity = v; v = v * me._ht_node_image.userData.parentOpacity; me._ht_node_image.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_image.children.length; i++) { let child = me._ht_node_image.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_node_image.userData.parentOpacity = v; v = v * me._ht_node_image.userData.opacity me._ht_node_image.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_image.children.length; i++) { let child = me._ht_node_image.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 0.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_node_image = el; el.userData.ggId="ht_node_image"; me._ht_node_image.userData.ggIsActive=function() { return player.getCurrentNode()==this.userData.ggElementNodeId(); } el.userData.ggElementNodeId=function() { return this.userData.ggNodeId; } me._ht_node_image.logicBlock_scaling = function() { var newLogicStateScaling; if ( ((me.elementMouseOver['ht_node_bg'] == true)) ) { newLogicStateScaling = 0; } else { newLogicStateScaling = -1; } if (me._ht_node_image.ggCurrentLogicStateScaling != newLogicStateScaling) { me._ht_node_image.ggCurrentLogicStateScaling = newLogicStateScaling; if (me._ht_node_image.ggCurrentLogicStateScaling == 0) { me._ht_node_image.userData.transitionValue_scale = {x: 1, y: 1, z: 1.0}; for (var i = 0; i < me._ht_node_image.userData.transitions.length; i++) { if (me._ht_node_image.userData.transitions[i].property == 'scale') { clearInterval(me._ht_node_image.userData.transitions[i].interval); me._ht_node_image.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_node_image.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_node_image.scale.set(transition_scale.startScale.x + (me._ht_node_image.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_node_image.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_node_image.position.x = (me._ht_node_image.position.x - me._ht_node_image.userData.curScaleOffX) + scaleOffX; me._ht_node_image.userData.curScaleOffX = scaleOffX; me._ht_node_image.position.y = (me._ht_node_image.position.y - me._ht_node_image.userData.curScaleOffY) + scaleOffY; me._ht_node_image.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_node_image.userData.transitions.splice(me._ht_node_image.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_node_image.userData.transitions.push(transition_scale); } else { me._ht_node_image.userData.transitionValue_scale = {x: 0.3, y: 0.3, z: 1.0}; for (var i = 0; i < me._ht_node_image.userData.transitions.length; i++) { if (me._ht_node_image.userData.transitions[i].property == 'scale') { clearInterval(me._ht_node_image.userData.transitions[i].interval); me._ht_node_image.userData.transitions.splice(i, 1); break; } } let transition_scale = {}; transition_scale.property = 'scale'; transition_scale.startTime = Date.now(); transition_scale.startScale = me._ht_node_image.scale; transition_scale.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_scale.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_node_image.scale.set(transition_scale.startScale.x + (me._ht_node_image.userData.transitionValue_scale.x - transition_scale.startScale.x) * tfval, transition_scale.startScale.y + (me._ht_node_image.userData.transitionValue_scale.y - transition_scale.startScale.y) * tfval, 1.0); var scaleOffX = 0; var scaleOffY = 0; me._ht_node_image.position.x = (me._ht_node_image.position.x - me._ht_node_image.userData.curScaleOffX) + scaleOffX; me._ht_node_image.userData.curScaleOffX = scaleOffX; me._ht_node_image.position.y = (me._ht_node_image.position.y - me._ht_node_image.userData.curScaleOffY) + scaleOffY; me._ht_node_image.userData.curScaleOffY = scaleOffY; if (percentDone >= 1.0) { clearInterval(transition_scale.interval); me._ht_node_image.userData.transitions.splice(me._ht_node_image.userData.transitions.indexOf(transition_scale), 1); } }, 20); me._ht_node_image.userData.transitions.push(transition_scale); } } } me._ht_node_image.logicBlock_alpha = function() { var newLogicStateAlpha; if ( ((me.elementMouseOver['ht_node_bg'] == true)) ) { newLogicStateAlpha = 0; } else { newLogicStateAlpha = -1; } if (me._ht_node_image.ggCurrentLogicStateAlpha != newLogicStateAlpha) { me._ht_node_image.ggCurrentLogicStateAlpha = newLogicStateAlpha; if (me._ht_node_image.ggCurrentLogicStateAlpha == 0) { me._ht_node_image.userData.transitionValue_alpha = 1; for (var i = 0; i < me._ht_node_image.userData.transitions.length; i++) { if (me._ht_node_image.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_node_image.userData.transitions[i].interval); me._ht_node_image.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_node_image.material ? me._ht_node_image.material.opacity : me._ht_node_image.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_node_image.userData.setOpacity(transition_alpha.startAlpha + (me._ht_node_image.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_node_image.userData.transitions.splice(me._ht_node_image.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_node_image.userData.transitions.push(transition_alpha); } else { me._ht_node_image.userData.transitionValue_alpha = 0; for (var i = 0; i < me._ht_node_image.userData.transitions.length; i++) { if (me._ht_node_image.userData.transitions[i].property == 'alpha') { clearInterval(me._ht_node_image.userData.transitions[i].interval); me._ht_node_image.userData.transitions.splice(i, 1); break; } } let transition_alpha = {}; transition_alpha.property = 'alpha'; transition_alpha.startTime = Date.now(); transition_alpha.startAlpha = me._ht_node_image.material ? me._ht_node_image.material.opacity : me._ht_node_image.userData.opacity; transition_alpha.interval = setInterval(() => { let currentTime = Date.now() - 0; let percentDone = 1.0 * (currentTime - transition_alpha.startTime) / 300; percentDone = Math.max(percentDone, 0.0); percentDone = Math.min(percentDone, 1.0); let tfval = -(Math.cos(Math.PI * percentDone) - 1) / 2; me._ht_node_image.userData.setOpacity(transition_alpha.startAlpha + (me._ht_node_image.userData.transitionValue_alpha - transition_alpha.startAlpha) * tfval); if (percentDone >= 1.0) { clearInterval(transition_alpha.interval); me._ht_node_image.userData.transitions.splice(me._ht_node_image.userData.transitions.indexOf(transition_alpha), 1); } }, 20); me._ht_node_image.userData.transitions.push(transition_alpha); } } } me._ht_node_image.userData.onclick=function (e) { player.openNext(player._(me.hotspot.url),player._(me.hotspot.target)); } me._ht_node_image.userData.ggUpdatePosition=function (useTransition) { } width = 1.5; height = 0.51; roundedRectShape = new THREE.Shape(); roundedRectShape.moveTo((-width / 2.0) + 0, (height / 2.0)); roundedRectShape.lineTo((width / 2.0) - 0, (height / 2.0)); roundedRectShape.lineTo((width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.quadraticCurveTo((width / 2.0), (-height / 2.0), (width / 2.0) - 0.2, (-height / 2.0)); roundedRectShape.lineTo((-width / 2.0) + 0.2, (-height / 2.0)); roundedRectShape.quadraticCurveTo((-width / 2.0), (-height / 2.0), (-width / 2.0), (-height / 2.0) + 0.2); roundedRectShape.lineTo((-width / 2.0), (height / 2.0) - 0); geometry = new THREE.ShapeGeometry(roundedRectShape); geometry.name = 'ht_node_title_geometry'; geometry.computeBoundingBox(); var min = geometry.boundingBox.min; var max = geometry.boundingBox.max; var offset = new THREE.Vector2(0 - min.x, 0 - min.y); var range = new THREE.Vector2(max.x - min.x, max.y - min.y); var vertexPositions = geometry.getAttribute('position'); var vertexUVs = geometry.getAttribute('uv'); for (var i = 0; i < vertexPositions.count; i++) { var v1 = vertexPositions.getX(i); var v2 = vertexPositions.getY(i); vertexUVs.setX(i, (v1 + offset.x) / range.x); vertexUVs.setY(i, (v2 + offset.y) / range.y); } geometry.uvsNeedUpdate = true; material = new THREE.MeshBasicMaterial( {side : THREE.DoubleSide, transparent : true } ); material.name = 'ht_node_title_material'; el = new THREE.Mesh( geometry, material ); el.userData.backgroundColorAlpha = 0.666667; el.userData.borderColorAlpha = 1; el.userData.setOpacityInternal = function(v) { me._ht_node_title.material.opacity = v; if (me._ht_node_title.userData.hasScrollbar) { me._ht_node_title.userData.scrollbar.material.opacity = v; me._ht_node_title.userData.scrollbarBg.material.opacity = v; } if (me._ht_node_title.userData.ggSubElement) { me._ht_node_title.userData.ggSubElement.material.opacity = v me._ht_node_title.userData.ggSubElement.visible = (v>0 && me._ht_node_title.userData.visible); } me._ht_node_title.visible = (v>0 && me._ht_node_title.userData.visible); } el.userData.setBackgroundColor = function(v) { me._ht_node_title.material.color = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_node_title.userData.backgroundColorAlpha = v; me._ht_node_title.userData.setOpacity(me._ht_node_title.userData.opacity); } el.translateX(0); el.translateY(-0.495); el.scale.set(1.00, 1.00, 1.0); el.userData.width = 150; el.userData.height = 51; el.userData.scale = {x: 1.00, y: 1.00, z: 1.0}; el.userData.curScaleOffX = 0; el.userData.curScaleOffY = 0; el.name = 'ht_node_title'; el.userData.x = 0; el.userData.y = -0.495; el.userData.hanchor = 1; el.userData.vanchor = 2; el.translateZ(0.040); el.renderOrder = 4; el.rotateZ(0.00); el.userData.angle = 0.00; el.userData.isVisible = function() { let vis = me._ht_node_title.visible let parentEl = me._ht_node_title.parent; while (vis && parentEl) { if (!parentEl.visible) { vis = false; break; } parentEl = parentEl.parent; } return vis; } el.userData.setOpacity = function(v) { me._ht_node_title.userData.opacity = v; v = v * me._ht_node_title.userData.parentOpacity; me._ht_node_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_title.children.length; i++) { let child = me._ht_node_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.userData.setParentOpacity = function(v) { me._ht_node_title.userData.parentOpacity = v; v = v * me._ht_node_title.userData.opacity me._ht_node_title.userData.setOpacityInternal(v); for (let i = 0; i < me._ht_node_title.children.length; i++) { let child = me._ht_node_title.children[i]; if (child.userData.setParentOpacity) { child.userData.setParentOpacity(v); } }; } el.visible = true; el.userData.visible = true; el.userData.opacity = 1.00; el.userData.parentOpacity = 1.0; el.userData.transitions = []; me._ht_node_title = el; el.userData.textLines = []; el.userData.backgroundColor = new THREE.Color(0, 0, 0); el.userData.textColor = new THREE.Color(0.760784, 0.909804, 0.0705882); el.userData.textColorAlpha = 1; var canvas = document.createElement('canvas'); canvas.width = 150; canvas.height = 51; el.userData.textCanvas = canvas; el.userData.textCanvasContext = canvas.getContext('2d'); el.userData.ggWrapText = function(scrollbar) { me._ht_node_title.userData.totalHeight = 18; me._ht_node_title.userData.textLines = []; var ctx = me._ht_node_title.userData.textCanvasContext; var words = me._ht_node_title.userData.ggText.split(' '); var line = ''; for (var i = 0; i < words.length; i++) { var testLine; if (line == '') { testLine = words[i] } else { testLine = line + ' ' + words[i]; } var metrics = ctx.measureText(testLine); var testWidth = metrics.width; if (testWidth > (me._ht_node_title.userData.width - 10 - (scrollbar ? 25 : 0)) && i > 0) { me._ht_node_title.userData.textLines.push(line); line = words[i]; me._ht_node_title.userData.totalHeight += me._ht_node_title.userData.lineHeight; } else { line = testLine; } } me._ht_node_title.userData.textLines.push(line); me._ht_node_title.userData.totalHeight += me._ht_node_title.userData.lineHeight; } el.userData.ggPaintCanvasText = function() { var canv = me._ht_node_title.userData.textCanvas; var ctx = me._ht_node_title.userData.textCanvasContext; ctx.clearRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_node_title.userData.backgroundColor.r * 255 + ', ' + me._ht_node_title.userData.backgroundColor.g * 255 + ', ' + me._ht_node_title.userData.backgroundColor.b * 255 + ', ' + me._ht_node_title.userData.backgroundColorAlpha + ')'; ctx.fillRect(0, 0, canv.width, canv.height); ctx.fillStyle = 'rgba(' + me._ht_node_title.userData.textColor.r * 255 + ', ' + me._ht_node_title.userData.textColor.g * 255 + ', ' + me._ht_node_title.userData.textColor.b * 255 + ', ' + me._ht_node_title.userData.textColorAlpha + ')'; ctx.textBaseline = 'top'; var x = (me._ht_node_title.userData.boxWidth - (me._ht_node_title.userData.hasScrollbar ? 25 : 0)) / 2; ctx.textAlign = 'center'; var y = 13; y += (canv.height - me._ht_node_title.userData.totalHeight - 5) / 2; for (var i = 0; i < me._ht_node_title.userData.textLines.length; i++) { ctx.fillText(me._ht_node_title.userData.textLines[i], x, y); y += me._ht_node_title.userData.lineHeight; } var textTexture = new THREE.CanvasTexture(canv); textTexture.name = 'ht_node_title_texture'; textTexture.minFilter = THREE.LinearFilter; textTexture.encoding = THREE.sRGBEncoding; textTexture.wrapS = THREE.ClampToEdgeWrapping; textTexture.wrapT = THREE.ClampToEdgeWrapping; if (me._ht_node_title.material.map) { me._ht_node_title.material.map.dispose(); } me._ht_node_title.material.map = textTexture; } el.userData.ggRenderText = function() { var canv = me._ht_node_title.userData.textCanvas; var ctx = me._ht_node_title.userData.textCanvasContext; ctx.font = '20px Verdana'; me._ht_node_title.userData.lineHeight = 20 * 1.2; me._ht_node_title.userData.ggWrapText(false); me._ht_node_title.userData.boxWidth = me._ht_node_title.userData.width; me._ht_node_title.userData.boxHeight = me._ht_node_title.userData.height; me._ht_node_title.userData.hasScrollbar = false; canv.width = me._ht_node_title.userData.boxWidth; canv.height = me._ht_node_title.userData.boxHeight; ctx.font = '20px Verdana'; me._ht_node_title.userData.ggPaintCanvasText(); } me._ht_node_title.userData.ggUpdateText=function(force) { var params = []; params.push(player._(String(player._(me.hotspot.title)))); var hs = player._("%1", params); if (hs!=this.ggText || force) { this.ggText=hs; this.ggRenderText(); } } me._ht_node_title.userData.ggUpdateText(); el.userData.setBackgroundColor = function(v) { me._ht_node_title.userData.backgroundColor = v; } el.userData.setBackgroundColorAlpha = function(v) { me._ht_node_title.userData.backgroundColorAlpha = v; } el.userData.setTextColor = function(v) { me._ht_node_title.userData.textColor = v; } el.userData.setTextColorAlpha = function(v) { me._ht_node_title.userData.textColorAlpha = v; } el.userData.ggId="ht_node_title"; me._ht_node_title.userData.ggUpdatePosition=function (useTransition) { } me._ht_node_image.add(me._ht_node_title); me._ht_node_bg.add(me._ht_node_image); me._ht_node.add(me._ht_node_bg); me._ht_node.userData.setOpacity(1.00); me._ht_node_bg.userData.setOpacity(1.00); me._ht_node_icon.userData.setOpacity(1.00); me._ht_node_image.userData.setOpacity(0.00); me._ht_node_title.userData.setOpacity(1.00); me.__obj = me._ht_node; me.__obj.userData.hotspot = hotspot; me.__obj.userData.fromSkin = true; }; me.addSkinHotspot=function(hotspot) { var hsinst = null; if (hotspot.skinid=='ht_node') { hotspot.skinid = 'ht_node'; hsinst = new SkinHotspotClass_ht_node(me, hotspot); if (!hotspotTemplates.hasOwnProperty(hotspot.skinid)) { hotspotTemplates[hotspot.skinid] = []; } hotspotTemplates[hotspot.skinid].push(hsinst); } else if (hotspot.skinid=='ht_image') { hotspot.skinid = 'ht_image'; hsinst = new SkinHotspotClass_ht_image(me, hotspot); if (!hotspotTemplates.hasOwnProperty(hotspot.skinid)) { hotspotTemplates[hotspot.skinid] = []; } hotspotTemplates[hotspot.skinid].push(hsinst); } else if (hotspot.skinid=='ht_info') { hotspot.skinid = 'ht_info'; hsinst = new SkinHotspotClass_ht_info(me, hotspot); if (!hotspotTemplates.hasOwnProperty(hotspot.skinid)) { hotspotTemplates[hotspot.skinid] = []; } hotspotTemplates[hotspot.skinid].push(hsinst); } else if (hotspot.skinid=='ht_video_file') { hotspot.skinid = 'ht_video_file'; hsinst = new SkinHotspotClass_ht_video_file(me, hotspot); if (!hotspotTemplates.hasOwnProperty(hotspot.skinid)) { hotspotTemplates[hotspot.skinid] = []; } hotspotTemplates[hotspot.skinid].push(hsinst); } else if (hotspot.skinid=='ht_video_url') { hotspot.skinid = 'ht_video_url'; hsinst = new SkinHotspotClass_ht_video_url(me, hotspot); if (!hotspotTemplates.hasOwnProperty(hotspot.skinid)) { hotspotTemplates[hotspot.skinid] = []; } hotspotTemplates[hotspot.skinid].push(hsinst); } return (hsinst ? hsinst.__obj : null); } me.removeSkinHotspots=function() { hotspotTemplates = []; } player.addListener('changenode', function() { me.ggUserdata=player.userdata; }); me.skinTimerEvent=function() { if (!player.isInVR()) return; me.ggCurrentTime=new Date().getTime(); }; player.addListener('timer', me.skinTimerEvent); player.addListener('entervr', function() { me.addSkin(); player.triggerEvent('changenode'); }); player.addListener('exitvr', function() { me.removeSkin(); }); me.skinTimerEvent(); };