diff options
Diffstat (limited to 'client/splash/face/markers.js')
| -rw-r--r-- | client/splash/face/markers.js | 49 |
1 files changed, 11 insertions, 38 deletions
diff --git a/client/splash/face/markers.js b/client/splash/face/markers.js index 5fdf1777..6e226228 100644 --- a/client/splash/face/markers.js +++ b/client/splash/face/markers.js @@ -4,38 +4,25 @@ import { MeshLine, MeshLineMaterial } from 'three.meshline' import oktween from '../../util/vendor/oktween' import { scene } from '../renderer' -import { getLineGeometry, updateLineGeometry, lerpPoints, updateCubeGeometry, getBounds } from './geometry' +import { getLineGeometry, updateFace, lerpPoints } from './util' -const POINT_SCALE = 1.8 -const FACE_POINT_COUNT = 68 +import { POINT_SCALE, LINE_THICKNESS, FACE_POINT_COUNT, MARKER_COLORS } from '../constants' let cubes let meshes = [] const faceBuffer = Array.from({ length: FACE_POINT_COUNT }, () => new THREE.Vector3()) -let colors = [ - 0xff3333, - 0xff8833, - 0xffff33, - 0x338833, - 0x3388ff, - 0x3333ff, - 0x8833ff, - 0xff3388, - 0xffffff, -] let swapFrom let swapTo export function build(points) { - swapFrom = points swapTo = points const matrix = new THREE.Matrix4() const quaternion = new THREE.Quaternion() - cubes = points.map((p, i) => { + cubes = points.map((p) => { let geometry = new THREE.BoxBufferGeometry() let position = new THREE.Vector3(p[0], p[1], p[2]) let rotation = new THREE.Euler() @@ -56,18 +43,22 @@ export function build(points) { meshes = getLineGeometry(points).map((geometry, i) => { const color = new THREE.Color() const material = new MeshLineMaterial({ - color: color.setHex(colors[i % colors.length]), + color: color.setHex(MARKER_COLORS[i % MARKER_COLORS.length]), }) const line = new MeshLine() - line.setGeometry(geometry, _ => 1.5) + line.setGeometry(geometry, () => LINE_THICKNESS) const mesh = new THREE.Mesh(line.geometry, material) mesh.geometry.dynamic = true scene.add(mesh) return [line, mesh] }) + + updateFace(points, cubes, meshes) } -export function swap() { +export function swap(face) { + swapFrom = swapTo + swapTo = face oktween.add({ from: { n: 0 }, to: { n: 1 }, @@ -75,28 +66,10 @@ export function swap() { easing: oktween.easing.quad_in_out, update: (obj) => { lerpPoints(obj.n, swapFrom, swapTo, faceBuffer) - updateFace(faceBuffer) + updateFace(faceBuffer, cubes, meshes) }, finished: () => { setTimeout(swap, 2000) } }) } - -export function updateFace(buf) { - updateCubeGeometry(buf, cubes) - updateLineGeometry(buf, meshes) -} - -function recenter(obj) { - const bounds = getBounds(obj) - const x_width = (bounds[1] - bounds[0]) / 2 - const y_width = (bounds[3] - bounds[2]) / -3 - const z_width = (bounds[5] - bounds[4]) / 2 - return obj.map(p => { - p[0] = p[0] - bounds[0] - x_width - p[1] = -p[1] + bounds[1] + y_width - p[2] = p[2] - bounds[2] + z_width - return new THREE.Vector3(p[0], p[1], p[2]) - }) -} |
