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 = ''
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 = 'For more information, email info@newreality.co'
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
})()