@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
28 lines (27 loc) • 1.39 kB
JavaScript
;
import { CorePhysicsAttribute, PhysicsRBDColliderType } from "../PhysicsAttribute";
import { getPhysicsRBDHeight, getPhysicsRBDRadius, setPhysicsRBDHeightRadiusProperty } from "./_CommonHeightRadius";
const EXPECTED_TYPE = PhysicsRBDColliderType.CYLINDER;
export function createPhysicsCylinder(PhysicsLib2, object) {
const halfHeight = CorePhysicsAttribute.getHeight(object) * 0.5 * object.scale.y;
const radius = CorePhysicsAttribute.getRadius(object) * object.scale.x;
const borderRadius = CorePhysicsAttribute.getBorderRadius(object);
if (borderRadius <= 0) {
return PhysicsLib2.ColliderDesc.cylinder(halfHeight, radius);
} else {
const borderRadius2 = Math.min(borderRadius, Math.min(halfHeight, radius));
const halfHeight2 = halfHeight - borderRadius2;
const radius2 = radius - borderRadius2;
return PhysicsLib2.ColliderDesc.roundCylinder(halfHeight2, radius2, borderRadius2);
}
return;
}
export function _getPhysicsRBDCylinderHeight(object) {
return getPhysicsRBDHeight(EXPECTED_TYPE, object);
}
export function _getPhysicsRBDCylinderRadius(object) {
return getPhysicsRBDRadius(EXPECTED_TYPE, object);
}
export function _setPhysicsRBDCylinderProperty(object, targetRadius, targetHeight, lerp, updateObjectMatrix) {
setPhysicsRBDHeightRadiusProperty(EXPECTED_TYPE, object, targetRadius, targetHeight, lerp, updateObjectMatrix);
}