@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
31 lines (30 loc) • 1.15 kB
JavaScript
;
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);
}
}
}