summaryrefslogtreecommitdiff
path: root/client/splash/index.js
blob: a21110f061fe5ae874698ebebda0939482455703 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { Vector3 } from 'three'
import OrbitControls from 'three-orbitcontrols'

import { appendRenderer, render, camera, renderer } from './renderer'

import { toArray } from '../util'

import * as modal from './modal'
import * as cloud from './cloud'
import * as face from './face'

const controls = new OrbitControls(camera, renderer.domElement)
controls.maxDistance = camera.far / 2
controls.enableDamping = true
controls.dampingFactor = 1 / 8
controls.rotateSpeed = 1 / 4
controls.zoomSpeed = 1
controls.keyPanSpeed = 1 / 2

function init() {
  build()
  bind()
  animate()
}

function build() {
  appendRenderer()
  cloud.init()
  face.init()
}

function bind() {
  document.querySelector('.slogan').addEventListener('click', modal.close)
  if (document.querySelector('.about')) {
    toArray(document.querySelectorAll('.aboutLink')).forEach(el => {
      el.addEventListener('click', modal.toggle)
    })
    document.querySelector('.about .inner').addEventListener('click', e => e.stopPropagation())
    document.querySelector('.about').addEventListener('click', modal.close)
    document.querySelector('.close').addEventListener('click', modal.close)
  }
}

function animate() {
  requestAnimationFrame(animate)

  // camera.position.z += -0.0025
  // camera.rotation.y += 0.00001

  controls.update()
  cloud.update()
  // face.update()

  let cameraTarget = new Vector3(0, 0, 0)
  camera.lookAt(cameraTarget)

  render()
}

document.addEventListener('DOMContentLoaded', init)