diff options
| author | Jules Laplace <jules@okfoc.us> | 2016-11-29 22:44:58 -0500 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2016-11-29 22:44:58 -0500 |
| commit | cf08a9dab5d27e6d3fb76e169f679446f03f1055 (patch) | |
| tree | 9c26dfa319a144baae34e9d23a365360626475b5 /new-reality/public/assets/js/grid/env.js | |
| parent | f4215bbc1a602ab19172950a29fc8ad5504b93fb (diff) | |
pull in holodeck
Diffstat (limited to 'new-reality/public/assets/js/grid/env.js')
| -rw-r--r-- | new-reality/public/assets/js/grid/env.js | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/new-reality/public/assets/js/grid/env.js b/new-reality/public/assets/js/grid/env.js new file mode 100644 index 0000000..3492e97 --- /dev/null +++ b/new-reality/public/assets/js/grid/env.js @@ -0,0 +1,155 @@ +var scene, cam, controls + +var environment = (function(){ + + var environment = {} + var grids + + environment.init = function(){ + environment.ready() + } + + environment.ready = function(){ + scene = new MX.Scene().addTo('#scene') + cam = scene.camera + + controls = new MX.FollowingOrbitCamera({ + center: { x: -100, y: 0, z: 0 }, + radius: 700, + radiusRange: [ 10, 2000 ], + rotationXRange: [ 0.428 * Math.PI, 0.455 * Math.PI ], + rotationYRange: [ 0.083 * Math.PI, 0.100 * Math.PI ], + rotationX: Math.PI * 0.45, + rotationY: Math.PI * 0.125, + wheelEase: 20, + ease: 10 + }) + controls.init() + controls.wheel.lock() + + var grid_opts = { + width: 500, + height: 500, + side: 23, + strokeWidth: 2, + bg: "#000000", + stroke: "#ffffff", + duration: 1000, + delay: [ 0, 500 ], + } + + grids = [ + new Grid ( defaults({ halign: "right", valign: "bottom" }, grid_opts) ), + new Grid ( defaults({ halign: "right", valign: "bottom" }, grid_opts) ), + new Grid ( defaults({ halign: "right", valign: "top" }, grid_opts) ), + ] + + var m = new MX.Object3D( grids[0].snap.node ) + m.z = 250 + m.y = 250 + m.width = m.height = 500 + m.rotationY = -Math.PI/2 + scene.add(m) + + var m = new MX.Object3D( grids[1].snap.node ) + m.x = 250 + m.y = 250 + m.width = m.height = 500 + m.rotationY = Math.PI + scene.add(m) + + var m = new MX.Object3D( grids[2].snap.node ) + m.x = 250 + m.z = 250 + m.width = m.height = 500 + m.rotationX = Math.PI/2 + scene.add(m) + + var dog = new Image () + dog.classList.add("dog") + dog.src = "img/lab_sitting.png" + var m = new MX.Object3D( dog ) + m.x = 250 + m.y = 39 + m.z = 250 + m.rotationY = Math.PI/2 + m.scale = 0.2 + scene.add(m) + + var logo = Snap(480 * 2, 74 * 2) + logo.attr({ 'viewBox': '0 0 480 74.1' }) + logo.node.classList.add("logo") + logo.path('M322.1,0c23.8,0,40.6,13,40.6,37c0,23-15.7,37.1-40.6,37.1c-24.4,0-40.7-13.4-40.7-37.1C281.4,13.7,297.5,0,322.1,0zM322.1,58.8c12.7,0,20.2-8.7,20.2-21.7c0-13.7-7.9-21.7-20.2-21.7c-12.9,0-20.2,8.7-20.2,21.7C301.8,49.5,308.9,58.8,322.1,58.8zM169.9,0.9c-2.4,0-40,0-40,0s0,2.8,0,5.6c0,4.9,2.6,9.6,9.5,9.6c3.1,0,25.5,0,25.5,0c10.7,0,14.5,3.4,14.5,12v1.2h-27c-20,0-27.4,9.3-27.4,21.9c0,15.3,10.2,22,27.5,22l0,0c0,0,11.1,0,18,0c23.5,0,28.5-11.7,28.5-27.3V28C199,11.3,192.8,0.9,169.9,0.9z M179.4,46.1c0,7.3-3.4,12.9-13.1,12.9h-10.2c-7.1,0-11.3-1.9-11.3-7.7c0-5.6,3.9-7.7,11.3-7.7h23.3V46.1z M255.2,16.1c0,0,9.9,0,9.9,0c7.1,0,11.3-2.6,11.3-9.1V0.9h-28.3l0,0c-23.7,0-35,13.9-35,36.2c0,27.7,17.3,36.2,35,36.2h28.3v-6.2c0-6.4-4.4-9-10.8-9c-3,0-10.4,0-10.4,0c-11.3,0-21.7-4-21.7-21C233.5,22.3,241.4,16.1,255.2,16.1z M41.7,53.4c0,0-16.8-43.9-17.8-46.4c-1.3-3.5-3.1-6.1-9.4-6.1H0l29.8,72.3h21.7L82.3,0.9c0,0-9.2,0-12.7,0c-5.5,0-7.6,2.4-9,5.8L42,53.4H41.7zM428.5,52.8c0,0-12.4-35.2-14.6-41.9c-1.5-4.5-3.6-10-13.7-10c-1.3,0-23,0-23,0v72.3h7.8c5.9,0,9.6-2.6,9.6-8.7V14h0.3l22.3,59.2h20.9L460.4,14h0.3c0,0,0,50.6,0,50.6c0,5.1,2.8,8.6,9.7,8.6h9.6V0.9c0,0-17.6,0-21.6,0c-7.6,0-12.3,2.1-14.6,8.9c-1.5,4.4-15,43-15,43H428.5z M91.3,0.9v63.8c0,5,3,8.5,9.4,8.5h10.2V0.9H91.3z') + + var m = new MX.Object3D( logo.node ) + m.x = 220 + m.y = 148 + m.z = 5 + m.scale = 0.6 / 2 + m.rotationY = Math.PI + scene.add(m) + + var tagline = new MX.Object3D () + tagline.el.innerHTML = '<span></span>' + tagline.el.classList.add("text") + tagline.width = 380 + tagline.height = 50 + tagline.x = 140 + tagline.y = 112 + tagline.z = 5 + tagline.scale = 0.4 + tagline.rotationY = Math.PI + scene.add(tagline) + + var cta = new MX.Object3D () + cta.el.innerHTML = '<span>For more information, email </span><a href="mailto:info@newreality.co">info@newreality.co</a>' + cta.el.classList.add("text") + cta.width = 380 + // cta.height = 50 + cta.x = 5 + cta.y = 30 + cta.z = 90 + cta.scale = 0.4 + cta.rotationY = Math.PI/2 + scene.add(cta) + + grids[0].animate({ h: "right", v: "down" }) + grids[1].animate({ h: "right", v: "down" }) + grids[2].animate({ h: "left", v: "down" }) + + dog.addEventListener("click", environment.space) + m.el.addEventListener("click", environment.space) + } + environment.space = function(){ + document.body.classList.toggle('space') + if (document.body.classList.contains("space")) { + grids.forEach(function(g){ + g.bg.animate({ opacity: 0 }, 200) + g.vertical.forEach(function(p){ p.attr({ strokeWidth: 2/devicePixelRatio }) }) + g.horizontal.forEach(function(p){ p.attr({ strokeWidth: 2/devicePixelRatio }) }) + }) + } + else { + grids.forEach(function(g){ + g.bg.animate({ opacity: 1 }, 200) + g.vertical.forEach(function(p){ p.attr({ strokeWidth: 2 }) }) + g.horizontal.forEach(function(p){ p.attr({ strokeWidth: 2 }) }) + }) + } + } + + environment.resize = function(){ + scene.width = window.innerWidth + scene.height = window.innerHeight + scene.perspective = Math.min(window.innerWidth, scene.height) + scene.update() + } + + environment.update = function(t){ + scene.update() + controls.update() + } + + return environment + +})() |
