immersive2/src/controllers/functions/beforeRenderObserver.ts

26 lines
971 B
TypeScript

import {HavokPlugin} from "@babylonjs/core";
import {DefaultScene} from "../../defaultScene";
import log from "loglevel";
export function beforeRenderObserver() {
const logger = log.getLogger('beforeRenderObserver');
if (this?.grabbedMesh?.physicsBody) {
const scene = DefaultScene.Scene;
const hk = (scene.getPhysicsEngine().getPhysicsPlugin() as HavokPlugin);
this.lastPosition = this?.grabbedMesh?.physicsBody?.transformNode.absolutePosition.clone();
if (this.grabbedMeshParentId) {
const parent = scene.getTransformNodeById(this.grabbedMeshParentId);
if (parent) {
hk.setPhysicsBodyTransformation(this.grabbedMesh.physicsBody, parent);
hk.sync(this.grabbedMesh.physicsBody);
} else {
logger.error("parent not found for " + this.grabbedMeshParentId);
}
} else {
logger.warn("no parent id");
}
}
}