UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

28 lines (27 loc) 1.39 kB
"use strict"; 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); }