@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
27 lines (26 loc) • 1.35 kB
JavaScript
;
import { CorePhysicsAttribute, PhysicsRBDColliderType } from "../PhysicsAttribute";
import { getPhysicsRBDHeight, getPhysicsRBDRadius, setPhysicsRBDHeightRadiusProperty } from "./_CommonHeightRadius";
const EXPECTED_TYPE = PhysicsRBDColliderType.CONE;
export function createPhysicsCone(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.cone(halfHeight, radius);
} else {
const borderRadius2 = Math.min(borderRadius, Math.min(halfHeight, radius));
const halfHeight2 = halfHeight - borderRadius2;
const radius2 = radius - borderRadius2;
return PhysicsLib2.ColliderDesc.roundCone(halfHeight2, radius2, borderRadius2);
}
}
export function _getPhysicsRBDConeHeight(object) {
return getPhysicsRBDHeight(EXPECTED_TYPE, object);
}
export function _getPhysicsRBDConeRadius(object) {
return getPhysicsRBDRadius(EXPECTED_TYPE, object);
}
export function _setPhysicsRBDConeProperty(object, targetRadius, targetHeight, lerp, updateObjectMatrix) {
setPhysicsRBDHeightRadiusProperty(EXPECTED_TYPE, object, targetRadius, targetHeight, lerp, updateObjectMatrix);
}