(function() { var __moduleName = "js/main"; var __moduleAddress = "http://projects.delimited.io/webgl-globes/js/main.js";System.register(['./common/scene', './common/setEvents', './common/geoHelpers', './common/mapTexture', './common/utils', 'topojson', 'THREE', 'd3'], function (_export) { 'use strict'; var scene, camera, renderer, setEvents, convertToXYZ, getEventCenter, geodecoder, mapTexture, getTween, memoize, topojson, THREE, d3; function animate() { requestAnimationFrame(animate); renderer.render(scene, camera); } return { setters: [function (_commonScene) { scene = _commonScene.scene; camera = _commonScene.camera; renderer = _commonScene.renderer; }, function (_commonSetEvents) { setEvents = _commonSetEvents.setEvents; }, function (_commonGeoHelpers) { convertToXYZ = _commonGeoHelpers.convertToXYZ; getEventCenter = _commonGeoHelpers.getEventCenter; geodecoder = _commonGeoHelpers.geodecoder; }, function (_commonMapTexture) { mapTexture = _commonMapTexture.mapTexture; }, function (_commonUtils) { getTween = _commonUtils.getTween; memoize = _commonUtils.memoize; }, function (_topojson) { topojson = _topojson['default']; }, function (_THREE) { THREE = _THREE['default']; }, function (_d3) { d3 = _d3['default']; }], execute: function () { d3.json('data/world.json', function (err, data) { d3.select('#loading').transition().duration(500).style('opacity', 0).remove(); var currentCountry, overlay; var segments = 155; // number of vertices. Higher = better mouse accuracy // Setup cache for country textures var countries = topojson.feature(data, data.objects.countries); var geo = geodecoder(countries.features); var textureCache = memoize(function (cntryID, color) { var country = geo.find(cntryID); return mapTexture(country, color); }); // Base globe with blue "water" var blueMaterial = new THREE.MeshPhongMaterial({ color: '#2B3B59', transparent: true }); var sphere = new THREE.SphereGeometry(200, segments, segments); var baseGlobe = new THREE.Mesh(sphere, blueMaterial); baseGlobe.rotation.y = Math.PI; baseGlobe.addEventListener('click', onGlobeClick); baseGlobe.addEventListener('mousemove', onGlobeMousemove); // add base map layer with all countries var worldTexture = mapTexture(countries, '#647089'); var mapMaterial = new THREE.MeshPhongMaterial({ map: worldTexture, transparent: true }); var baseMap = new THREE.Mesh(new THREE.SphereGeometry(200, segments, segments), mapMaterial); baseMap.rotation.y = Math.PI; // create a container node and add the two meshes var root = new THREE.Object3D(); root.scale.set(2.5, 2.5, 2.5); root.add(baseGlobe); root.add(baseMap); scene.add(root); function onGlobeClick(event) { // Get pointc, convert to latitude/longitude var latlng = getEventCenter.call(this, event); // Get new camera position var temp = new THREE.Mesh(); temp.position.copy(convertToXYZ(latlng, 900)); temp.lookAt(root.position); temp.rotateY(Math.PI); for (var key in temp.rotation) { if (temp.rotation[key] - camera.rotation[key] > Math.PI) { temp.rotation[key] -= Math.PI * 2; } else if (camera.rotation[key] - temp.rotation[key] > Math.PI) { temp.rotation[key] += Math.PI * 2; } } var tweenPos = getTween.call(camera, 'position', temp.position); d3.timer(tweenPos); var tweenRot = getTween.call(camera, 'rotation', temp.rotation); d3.timer(tweenRot); } function onGlobeMousemove(event) { var map, material; // Get pointc, convert to latitude/longitude var latlng = getEventCenter.call(this, event); // Look for country at that latitude/longitude var country = geo.search(latlng[0], latlng[1]); if (country !== null && country.code !== currentCountry) { // Track the current country displayed currentCountry = country.code; // Update the html d3.select('#msg').html(country.code); // Overlay the selected country map = textureCache(country.code, '#CDC290'); material = new THREE.MeshPhongMaterial({ map: map, transparent: true }); if (!overlay) { overlay = new THREE.Mesh(new THREE.SphereGeometry(201, 40, 40), material); overlay.rotation.y = Math.PI; root.add(overlay); } else { overlay.material = material; } } } setEvents(camera, [baseGlobe], 'click'); setEvents(camera, [baseGlobe], 'mousemove', 10); });animate(); } }; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImh0dHA6Ly9wcm9qZWN0cy5kZWxpbWl0ZWQuaW8vd2ViZ2wtZ2xvYmVzL2pzL21haW4uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE0R0EsV0FBUyxPQUFPLEdBQUc7QUFDakIseUJBQXFCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDL0IsWUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7R0FDaEM7OzsyQkEvR1EsS0FBSzs0QkFBRSxNQUFNOzhCQUFFLFFBQVE7O21DQUN2QixTQUFTOzt1Q0FDVCxZQUFZO3lDQUFFLGNBQWM7cUNBQUUsVUFBVTs7cUNBQ3hDLFVBQVU7OzhCQUNWLFFBQVE7NkJBQUUsT0FBTzs7Ozs7Ozs7OztBQUsxQixRQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsR0FBRyxFQUFFLElBQUksRUFBRTs7QUFFOUMsVUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQzdDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7O0FBRWhDLFlBQUksY0FBYyxFQUFFLE9BQU8sQ0FBQzs7QUFFNUIsWUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDOzs7QUFHbkIsWUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvRCxZQUFJLEdBQUcsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUV6QyxZQUFJLFlBQVksR0FBRyxPQUFPLENBQUMsVUFBVSxPQUFPLEVBQUUsS0FBSyxFQUFFO0FBQ25ELGNBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEMsaUJBQU8sVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFL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QUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMxRSxxQkFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM3QixrQkFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNuQixNQUFNO0FBQ0wscUJBQU8sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2FBQzdCO1dBQ0Y7U0FDRjs7QUFFRCxpQkFBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hDLGlCQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQ2pELENBQUMsQ0FBQyxBQU1ILE9BQU8sRUFBRSxDQUFDIiwiZmlsZSI6Imh0dHA6Ly9wcm9qZWN0cy5kZWxpbWl0ZWQuaW8vd2ViZ2wtZ2xvYmVzL2pzL21haW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzY2VuZSwgY2FtZXJhLCByZW5kZXJlciB9IGZyb20gJy4vY29tbW9uL3NjZW5lJztcbmltcG9ydCB7IHNldEV2ZW50cyB9IGZyb20gJy4vY29tbW9uL3NldEV2ZW50cyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9YWVosIGdldEV2ZW50Q2VudGVyLCBnZW9kZWNvZGVyIH0gZnJvbSAnLi9jb21tb24vZ2VvSGVscGVycyc7XG5pbXBvcnQgeyBtYXBUZXh0dXJlIH0gZnJvbSAnLi9jb21tb24vbWFwVGV4dHVyZSc7XG5pbXBvcnQgeyBnZXRUd2VlbiwgbWVtb2l6ZSB9IGZyb20gJy4vY29tbW9uL3V0aWxzJztcbmltcG9ydCB0b3BvanNvbiBmcm9tICd0b3BvanNvbic7XG5pbXBvcnQgVEhSRUUgZnJvbSAnVEhSRUUnO1xuaW1wb3J0IGQzIGZyb20gJ2QzJztcblxuZDMuanNvbignZGF0YS93b3JsZC5qc29uJywgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuXG4gIGQzLnNlbGVjdChcIiNsb2FkaW5nXCIpLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApXG4gICAgLnN0eWxlKFwib3BhY2l0eVwiLCAwKS5yZW1vdmUoKTtcblxuICB2YXIgY3VycmVudENvdW50cnksIG92ZXJsYXk7XG5cbiAgdmFyIHNlZ21lbnRzID0gMTU1OyAvLyBudW1iZXIgb2YgdmVydGljZXMuIEhpZ2hlciA9IGJldHRlciBtb3VzZSBhY2N1cmFjeVxuXG4gIC8vIFNldHVwIGNhY2hlIGZvciBjb3VudHJ5IHRleHR1cmVzXG4gIHZhciBjb3VudHJpZXMgPSB0b3BvanNvbi5mZWF0dXJlKGRhdGEsIGRhdGEub2JqZWN0cy5jb3VudHJpZXMpO1xuICB2YXIgZ2VvID0gZ2VvZGVjb2Rlcihjb3VudHJpZXMuZmVhdHVyZXMpO1xuXG4gIHZhciB0ZXh0dXJlQ2FjaGUgPSBtZW1vaXplKGZ1bmN0aW9uIChjbnRyeUlELCBjb2xvcikge1xuICAgIHZhciBjb3VudHJ5ID0gZ2VvLmZpbmQoY250cnlJRCk7XG4gICAgcmV0dXJuIG1hcFRleHR1cmUoY291bnRyeSwgY29sb3IpO1xuICB9KTtcblxuICAvLyBCYXNlIGdsb2JlIHdpdGggYmx1ZSBcIndhdGVyXCJcbiAgbGV0IGJsdWVNYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCh7Y29sb3I6ICcjMkIzQjU5JywgdHJhbnNwYXJlbnQ6IHRydWV9KTtcbiAgbGV0IHNwaGVyZSA9IG5ldyBUSFJFRS5TcGhlcmVHZW9tZXRyeSgyMDAsIHNlZ21lbnRzLCBzZWdtZW50cyk7XG4gIGxldCBiYXNlR2xvYmUgPSBuZXcgVEhSRUUuTWVzaChzcGhlcmUsIGJsdWVNYXRlcmlhbCk7XG4gIGJhc2VHbG9iZS5yb3RhdGlvbi55ID0gTWF0aC5QSTtcbiAgYmFzZUdsb2JlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25HbG9iZUNsaWNrKTtcbiAgYmFzZUdsb2JlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIG9uR2xvYmVNb3VzZW1vdmUpO1xuXG4gIC8vIGFkZCBiYXNlIG1hcCBsYXllciB3aXRoIGFsbCBjb3VudHJpZXNcbiAgbGV0IHdvcmxkVGV4dHVyZSA9IG1hcFRleHR1cmUoY291bnRyaWVzLCAnIzY0NzA4OScpO1xuICBsZXQgbWFwTWF0ZXJpYWwgID0gbmV3IFRIUkVFLk1lc2hQaG9uZ01hdGVyaWFsKHttYXA6IHdvcmxkVGV4dHVyZSwgdHJhbnNwYXJlbnQ6IHRydWV9KTtcbiAgdmFyIGJhc2VNYXAgPSBuZXcgVEhSRUUuTWVzaChuZXcgVEhSRUUuU3BoZXJlR2VvbWV0cnkoMjAwLCBzZWdtZW50cywgc2VnbWVudHMpLCBtYXBNYXRlcmlhbCk7XG4gIGJhc2VNYXAucm90YXRpb24ueSA9IE1hdGguUEk7XG5cbiAgLy8gY3JlYXRlIGEgY29udGFpbmVyIG5vZGUgYW5kIGFkZCB0aGUgdHdvIG1lc2hlc1xuICB2YXIgcm9vdCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuICByb290LnNjYWxlLnNldCgyLjUsIDIuNSwgMi41KTtcbiAgcm9vdC5hZGQoYmFzZUdsb2JlKTtcbiAgcm9vdC5hZGQoYmFzZU1hcCk7XG4gIHNjZW5lLmFkZChyb290KTtcblxuICBmdW5jdGlvbiBvbkdsb2JlQ2xpY2soZXZlbnQpIHtcblxuICAgIC8vIEdldCBwb2ludGMsIGNvbnZlcnQgdG8gbGF0aXR1ZGUvbG9uZ2l0dWRlXG4gICAgdmFyIGxhdGxuZyA9IGdldEV2ZW50Q2VudGVyLmNhbGwodGhpcywgZXZlbnQpO1xuXG4gICAgLy8gR2V0IG5ldyBjYW1lcmEgcG9zaXRpb25cbiAgICB2YXIgdGVtcCA9IG5ldyBUSFJFRS5NZXNoKCk7XG4gICAgdGVtcC5wb3NpdGlvbi5jb3B5KGNvbnZlcnRUb1hZWihsYXRsbmcsIDkwMCkpO1xuICAgIHRlbXAubG9va0F0KHJvb3QucG9zaXRpb24pO1xuICAgIHRlbXAucm90YXRlWShNYXRoLlBJKTtcblxuICAgIGZvciAobGV0IGtleSBpbiB0ZW1wLnJvdGF0aW9uKSB7XG4gICAgICBpZiAodGVtcC5yb3RhdGlvbltrZXldIC0gY2FtZXJhLnJvdGF0aW9uW2tleV0gPiBNYXRoLlBJKSB7XG4gICAgICAgIHRlbXAucm90YXRpb25ba2V5XSAtPSBNYXRoLlBJICogMjtcbiAgICAgIH0gZWxzZSBpZiAoY2FtZXJhLnJvdGF0aW9uW2tleV0gLSB0ZW1wLnJvdGF0aW9uW2tleV0gPiBNYXRoLlBJKSB7XG4gICAgICAgIHRlbXAucm90YXRpb25ba2V5XSArPSBNYXRoLlBJICogMjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgdHdlZW5Qb3MgPSBnZXRUd2Vlbi5jYWxsKGNhbWVyYSwgJ3Bvc2l0aW9uJywgdGVtcC5wb3NpdGlvbik7XG4gICAgZDMudGltZXIodHdlZW5Qb3MpO1xuXG4gICAgdmFyIHR3ZWVuUm90ID0gZ2V0VHdlZW4uY2FsbChjYW1lcmEsICdyb3RhdGlvbicsIHRlbXAucm90YXRpb24pO1xuICAgIGQzLnRpbWVyKHR3ZWVuUm90KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uR2xvYmVNb3VzZW1vdmUoZXZlbnQpIHtcbiAgICB2YXIgbWFwLCBtYXRlcmlhbDtcblxuICAgIC8vIEdldCBwb2ludGMsIGNvbnZlcnQgdG8gbGF0aXR1ZGUvbG9uZ2l0dWRlXG4gICAgdmFyIGxhdGxuZyA9IGdldEV2ZW50Q2VudGVyLmNhbGwodGhpcywgZXZlbnQpO1xuXG4gICAgLy8gTG9vayBmb3IgY291bnRyeSBhdCB0aGF0IGxhdGl0dWRlL2xvbmdpdHVkZVxuICAgIHZhciBjb3VudHJ5ID0gZ2VvLnNlYXJjaChsYXRsbmdbMF0sIGxhdGxuZ1sxXSk7XG5cbiAgICBpZiAoY291bnRyeSAhPT0gbnVsbCAmJiBjb3VudHJ5LmNvZGUgIT09IGN1cnJlbnRDb3VudHJ5KSB7XG5cbiAgICAgIC8vIFRyYWNrIHRoZSBjdXJyZW50IGNvdW50cnkgZGlzcGxheWVkXG4gICAgICBjdXJyZW50Q291bnRyeSA9IGNvdW50cnkuY29kZTtcblxuICAgICAgLy8gVXBkYXRlIHRoZSBodG1sXG4gICAgICBkMy5zZWxlY3QoXCIjbXNnXCIpLmh0bWwoY291bnRyeS5jb2RlKTtcblxuICAgICAgIC8vIE92ZXJsYXkgdGhlIHNlbGVjdGVkIGNvdW50cnlcbiAgICAgIG1hcCA9IHRleHR1cmVDYWNoZShjb3VudHJ5LmNvZGUsICcjQ0RDMjkwJyk7XG4gICAgICBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoUGhvbmdNYXRlcmlhbCh7bWFwOiBtYXAsIHRyYW5zcGFyZW50OiB0cnVlfSk7XG4gICAgICBpZiAoIW92ZXJsYXkpIHtcbiAgICAgICAgb3ZlcmxheSA9IG5ldyBUSFJFRS5NZXNoKG5ldyBUSFJFRS5TcGhlcmVHZW9tZXRyeSgyMDEsIDQwLCA0MCksIG1hdGVyaWFsKTtcbiAgICAgICAgb3ZlcmxheS5yb3RhdGlvbi55ID0gTWF0aC5QSTtcbiAgICAgICAgcm9vdC5hZGQob3ZlcmxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvdmVybGF5Lm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RXZlbnRzKGNhbWVyYSwgW2Jhc2VHbG9iZV0sICdjbGljaycpO1xuICBzZXRFdmVudHMoY2FtZXJhLCBbYmFzZUdsb2JlXSwgJ21vdXNlbW92ZScsIDEwKTtcbn0pO1xuXG5mdW5jdGlvbiBhbmltYXRlKCkge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0ZSk7XG4gIHJlbmRlcmVyLnJlbmRlcihzY2VuZSwgY2FtZXJhKTtcbn1cbmFuaW1hdGUoKTtcbiJdfQ== }).call(__global);