/** * Copyright (c) 2018 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose */ import { Vec3, Mat4 } from 'mol-math/linear-algebra'; export interface Object3D { readonly view: Mat4 readonly position: Vec3 readonly direction: Vec3 readonly up: Vec3 } export namespace Object3D { export function create(): Object3D { return { view: Mat4.identity(), position: Vec3.create(0, 0, 0), direction: Vec3.create(0, 0, -1), up: Vec3.create(0, 1, 0), } } const center = Vec3.zero() export function update(object3d: Object3D) { Vec3.add(center, object3d.position, object3d.direction) Mat4.lookAt(object3d.view, object3d.position, center, object3d.up) } }