UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

31 lines (30 loc) 1.15 kB
"use strict"; import { Quaternion } from "three"; import { CoreLookAt } from "../../core/LookAt"; import { isBooleanTrue } from "../../core/Type"; import { touchObjectProperty, GetObjectPropertyJsNodeInputName } from "../../core/reactivity/ObjectPropertyReactivity"; import { ObjectNamedFunction5 } from "./_Base"; const q1 = new Quaternion(); const q2 = new Quaternion(); export class setObjectLookAt extends ObjectNamedFunction5 { static type() { return "setObjectLookAt"; } func(object3D, targetPosition, up, lerp, invertDirection, updateMatrix) { object3D.up.copy(up); if (lerp >= 1) { CoreLookAt.applyLookAt(object3D, targetPosition, invertDirection); } else { q1.copy(object3D.quaternion); CoreLookAt.applyLookAt(object3D, targetPosition, invertDirection); q2.copy(object3D.quaternion); q1.slerp(q2, lerp); object3D.quaternion.copy(q1); } touchObjectProperty(object3D, GetObjectPropertyJsNodeInputName.quaternion); if (isBooleanTrue(updateMatrix)) { object3D.updateMatrix(); touchObjectProperty(object3D, GetObjectPropertyJsNodeInputName.matrix); } } }