summaryrefslogtreecommitdiff
path: root/new-reality/public/assets/js/grid/env.js
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2016-11-29 22:44:58 -0500
committerJules Laplace <jules@okfoc.us>2016-11-29 22:44:58 -0500
commitcf08a9dab5d27e6d3fb76e169f679446f03f1055 (patch)
tree9c26dfa319a144baae34e9d23a365360626475b5 /new-reality/public/assets/js/grid/env.js
parentf4215bbc1a602ab19172950a29fc8ad5504b93fb (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.js155
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
+
+})()