immersive2/src/controllers/functions/grabAndClone.ts

20 lines
925 B
TypeScript

import {AbstractMesh, TransformNode} from "@babylonjs/core";
import {DiagramManager} from "../../diagram/diagramManager";
import {DefaultScene} from "../../defaultScene";
export function grabAndClone(diagramManager: DiagramManager, mesh: AbstractMesh, parent: AbstractMesh):
{ transformNode: TransformNode, newMesh: AbstractMesh } {
const scene = DefaultScene.Scene;
const newMesh = diagramManager.createCopy(mesh, true);
const transformNode = new TransformNode("grabAnchor", scene);
transformNode.id = "grabAnchor";
transformNode.position = newMesh.position.clone();
if (newMesh.rotationQuaternion) {
transformNode.rotationQuaternion = newMesh.rotationQuaternion.clone();
} else {
transformNode.rotation = newMesh.rotation.clone();
}
transformNode.setParent(parent);
newMesh.setParent(transformNode);
return {transformNode: transformNode, newMesh: newMesh};
}