1 |
- {"ast":null,"code":"import { PhysicsBody } from \"./physicsBody.js\";\nimport { PhysicsShape } from \"./physicsShape.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { Quaternion, TmpVectors, Vector3 } from \"../../Maths/math.vector.js\";\nimport { WithinEpsilon } from \"../../Maths/math.scalar.functions.js\";\nimport { BoundingBox } from \"../../Culling/boundingBox.js\";\n/**\n * Helper class to create and interact with a PhysicsAggregate.\n * This is a transition object that works like Physics Plugin V1 Impostors.\n * This helper instanciate all mandatory physics objects to get a body/shape and material.\n * It's less efficient that handling body and shapes independently but for prototyping or\n * a small numbers of physics objects, it's good enough.\n */\nexport class PhysicsAggregate {\n constructor(\n /**\n * The physics-enabled object used as the physics aggregate\n */\n transformNode,\n /**\n * The type of the physics aggregate\n */\n type, _options = {\n mass: 0\n }, _scene) {\n var _this$_options$startA;\n this.transformNode = transformNode;\n this.type = type;\n this._options = _options;\n this._scene = _scene;\n this._disposeShapeWhenDisposed = true;\n //sanity check!\n if (!this.transformNode) {\n Logger.Error(\"No object was provided. A physics object is obligatory\");\n return;\n }\n const m = transformNode;\n if (this.transformNode.parent && this._options.mass !== 0 && m.hasThinInstances) {\n Logger.Warn(\"A physics body has been created for an object which has a parent and thin instances. Babylon physics currently works in local space so unexpected issues may occur.\");\n }\n // Legacy support for old syntax.\n if (!this._scene && transformNode.getScene) {\n this._scene = transformNode.getScene();\n }\n if (!this._scene) {\n return;\n }\n //default options params\n this._options.mass = _options.mass === void 0 ? 0 : _options.mass;\n this._options.friction = _options.friction === void 0 ? 0.2 : _options.friction;\n this._options.restitution = _options.restitution === void 0 ? 0.2 : _options.restitution;\n const motionType = this._options.mass === 0 ? 0 /* PhysicsMotionType.STATIC */ : 2 /* PhysicsMotionType.DYNAMIC */;\n const startAsleep = (_this$_options$startA = this._options.startAsleep) !== null && _this$_options$startA !== void 0 ? _this$_options$startA : false;\n this.body = new PhysicsBody(transformNode, motionType, startAsleep, this._scene);\n this._addSizeOptions();\n if (type.getClassName && type.getClassName() === \"PhysicsShape\") {\n this.shape = type;\n this._disposeShapeWhenDisposed = false;\n } else {\n this.shape = new PhysicsShape({\n type: type,\n parameters: this._options\n }, this._scene);\n }\n if (this._options.isTriggerShape) {\n this.shape.isTrigger = true;\n }\n this.material = {\n friction: this._options.friction,\n restitution: this._options.restitution\n };\n this.body.shape = this.shape;\n this.shape.material = this.material;\n this.body.setMassProperties({\n mass: this._options.mass\n });\n this._nodeDisposeObserver = this.transformNode.onDisposeObservable.add(() => {\n this.dispose();\n });\n }\n _getObjectBoundingBox() {\n if (this.transformNode.getRawBoundingInfo) {\n return this.transformNode.getRawBoundingInfo().boundingBox;\n } else {\n return new BoundingBox(new Vector3(-0.5, -0.5, -0.5), new Vector3(0.5, 0.5, 0.5));\n }\n }\n _hasVertices(node) {\n return (node === null || node === void 0 ? void 0 : node.getTotalVertices()) > 0;\n }\n _addSizeOptions() {\n var _this$_options$extent, _this$_options$rotati;\n this.transformNode.computeWorldMatrix(true);\n const bb = this._getObjectBoundingBox();\n const extents = TmpVectors.Vector3[0];\n extents.copyFrom(bb.extendSize);\n extents.scaleInPlace(2);\n extents.multiplyInPlace(this.transformNode.absoluteScaling);\n // In case we had any negative scaling, we need to take the absolute value of the extents.\n extents.x = Math.abs(extents.x);\n extents.y = Math.abs(extents.y);\n extents.z = Math.abs(extents.z);\n const min = TmpVectors.Vector3[1];\n min.copyFrom(bb.minimum);\n min.multiplyInPlace(this.transformNode.absoluteScaling);\n if (!this._options.center) {\n const center = new Vector3();\n center.copyFrom(bb.center);\n center.multiplyInPlace(this.transformNode.absoluteScaling);\n this._options.center = center;\n }\n switch (this.type) {\n case 0 /* PhysicsShapeType.SPHERE */:\n if (!this._options.radius && WithinEpsilon(extents.x, extents.y, 0.0001) && WithinEpsilon(extents.x, extents.z, 0.0001)) {\n this._options.radius = extents.x / 2;\n } else if (!this._options.radius) {\n Logger.Warn(\"Non uniform scaling is unsupported for sphere shapes. Setting the radius to the biggest bounding box extent.\");\n this._options.radius = Math.max(extents.x, extents.y, extents.z) / 2;\n }\n break;\n case 1 /* PhysicsShapeType.CAPSULE */:\n {\n var _this$_options$radius, _this$_options$pointA, _this$_options$pointB;\n const capRadius = extents.x / 2;\n this._options.radius = (_this$_options$radius = this._options.radius) !== null && _this$_options$radius !== void 0 ? _this$_options$radius : capRadius;\n this._options.pointA = (_this$_options$pointA = this._options.pointA) !== null && _this$_options$pointA !== void 0 ? _this$_options$pointA : new Vector3(0, min.y + capRadius, 0);\n this._options.pointB = (_this$_options$pointB = this._options.pointB) !== null && _this$_options$pointB !== void 0 ? _this$_options$pointB : new Vector3(0, min.y + extents.y - capRadius, 0);\n }\n break;\n case 2 /* PhysicsShapeType.CYLINDER */:\n {\n var _this$_options$radius2, _this$_options$pointA2, _this$_options$pointB2;\n const capRadius = extents.x / 2;\n this._options.radius = (_this$_options$radius2 = this._options.radius) !== null && _this$_options$radius2 !== void 0 ? _this$_options$radius2 : capRadius;\n this._options.pointA = (_this$_options$pointA2 = this._options.pointA) !== null && _this$_options$pointA2 !== void 0 ? _this$_options$pointA2 : new Vector3(0, min.y, 0);\n this._options.pointB = (_this$_options$pointB2 = this._options.pointB) !== null && _this$_options$pointB2 !== void 0 ? _this$_options$pointB2 : new Vector3(0, min.y + extents.y, 0);\n }\n break;\n case 6 /* PhysicsShapeType.MESH */:\n case 4 /* PhysicsShapeType.CONVEX_HULL */:\n case 7 /* PhysicsShapeType.HEIGHTFIELD */:\n if (!this._options.mesh && this._hasVertices(this.transformNode)) {\n this._options.mesh = this.transformNode;\n } else if (!this._options.mesh || !this._hasVertices(this._options.mesh)) {\n throw new Error(\"No valid mesh was provided for mesh or convex hull shape parameter. Please provide a mesh with valid geometry (number of vertices greater than 0).\");\n }\n break;\n case 3 /* PhysicsShapeType.BOX */:\n this._options.extents = (_this$_options$extent = this._options.extents) !== null && _this$_options$extent !== void 0 ? _this$_options$extent : new Vector3(extents.x, extents.y, extents.z);\n this._options.rotation = (_this$_options$rotati = this._options.rotation) !== null && _this$_options$rotati !== void 0 ? _this$_options$rotati : Quaternion.Identity();\n break;\n }\n }\n /**\n * Releases the body, shape and material\n */\n dispose() {\n if (this._nodeDisposeObserver) {\n this.body.transformNode.onDisposeObservable.remove(this._nodeDisposeObserver);\n this._nodeDisposeObserver = null;\n }\n this.body.dispose();\n if (this._disposeShapeWhenDisposed) {\n this.shape.dispose();\n }\n }\n}","map":{"version":3,"names":["PhysicsBody","PhysicsShape","Logger","Quaternion","TmpVectors","Vector3","WithinEpsilon","BoundingBox","PhysicsAggregate","constructor","transformNode","type","_options","mass","_scene","_this$_options$startA","_disposeShapeWhenDisposed","Error","m","parent","hasThinInstances","Warn","getScene","friction","restitution","motionType","startAsleep","body","_addSizeOptions","getClassName","shape","parameters","isTriggerShape","isTrigger","material","setMassProperties","_nodeDisposeObserver","onDisposeObservable","add","dispose","_getObjectBoundingBox","getRawBoundingInfo","boundingBox","_hasVertices","node","getTotalVertices","_this$_options$extent","_this$_options$rotati","computeWorldMatrix","bb","extents","copyFrom","extendSize","scaleInPlace","multiplyInPlace","absoluteScaling","x","Math","abs","y","z","min","minimum","center","radius","max","_this$_options$radius","_this$_options$pointA","_this$_options$pointB","capRadius","pointA","pointB","_this$_options$radius2","_this$_options$pointA2","_this$_options$pointB2","mesh","rotation","Identity","remove"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Physics/v2/physicsAggregate.js"],"sourcesContent":["import { PhysicsBody } from \"./physicsBody.js\";\nimport { PhysicsShape } from \"./physicsShape.js\";\nimport { Logger } from \"../../Misc/logger.js\";\nimport { Quaternion, TmpVectors, Vector3 } from \"../../Maths/math.vector.js\";\nimport { WithinEpsilon } from \"../../Maths/math.scalar.functions.js\";\nimport { BoundingBox } from \"../../Culling/boundingBox.js\";\n/**\n * Helper class to create and interact with a PhysicsAggregate.\n * This is a transition object that works like Physics Plugin V1 Impostors.\n * This helper instanciate all mandatory physics objects to get a body/shape and material.\n * It's less efficient that handling body and shapes independently but for prototyping or\n * a small numbers of physics objects, it's good enough.\n */\nexport class PhysicsAggregate {\n constructor(\n /**\n * The physics-enabled object used as the physics aggregate\n */\n transformNode, \n /**\n * The type of the physics aggregate\n */\n type, _options = { mass: 0 }, _scene) {\n this.transformNode = transformNode;\n this.type = type;\n this._options = _options;\n this._scene = _scene;\n this._disposeShapeWhenDisposed = true;\n //sanity check!\n if (!this.transformNode) {\n Logger.Error(\"No object was provided. A physics object is obligatory\");\n return;\n }\n const m = transformNode;\n if (this.transformNode.parent && this._options.mass !== 0 && m.hasThinInstances) {\n Logger.Warn(\"A physics body has been created for an object which has a parent and thin instances. Babylon physics currently works in local space so unexpected issues may occur.\");\n }\n // Legacy support for old syntax.\n if (!this._scene && transformNode.getScene) {\n this._scene = transformNode.getScene();\n }\n if (!this._scene) {\n return;\n }\n //default options params\n this._options.mass = _options.mass === void 0 ? 0 : _options.mass;\n this._options.friction = _options.friction === void 0 ? 0.2 : _options.friction;\n this._options.restitution = _options.restitution === void 0 ? 0.2 : _options.restitution;\n const motionType = this._options.mass === 0 ? 0 /* PhysicsMotionType.STATIC */ : 2 /* PhysicsMotionType.DYNAMIC */;\n const startAsleep = this._options.startAsleep ?? false;\n this.body = new PhysicsBody(transformNode, motionType, startAsleep, this._scene);\n this._addSizeOptions();\n if (type.getClassName && type.getClassName() === \"PhysicsShape\") {\n this.shape = type;\n this._disposeShapeWhenDisposed = false;\n }\n else {\n this.shape = new PhysicsShape({ type: type, parameters: this._options }, this._scene);\n }\n if (this._options.isTriggerShape) {\n this.shape.isTrigger = true;\n }\n this.material = { friction: this._options.friction, restitution: this._options.restitution };\n this.body.shape = this.shape;\n this.shape.material = this.material;\n this.body.setMassProperties({ mass: this._options.mass });\n this._nodeDisposeObserver = this.transformNode.onDisposeObservable.add(() => {\n this.dispose();\n });\n }\n _getObjectBoundingBox() {\n if (this.transformNode.getRawBoundingInfo) {\n return this.transformNode.getRawBoundingInfo().boundingBox;\n }\n else {\n return new BoundingBox(new Vector3(-0.5, -0.5, -0.5), new Vector3(0.5, 0.5, 0.5));\n }\n }\n _hasVertices(node) {\n return node?.getTotalVertices() > 0;\n }\n _addSizeOptions() {\n this.transformNode.computeWorldMatrix(true);\n const bb = this._getObjectBoundingBox();\n const extents = TmpVectors.Vector3[0];\n extents.copyFrom(bb.extendSize);\n extents.scaleInPlace(2);\n extents.multiplyInPlace(this.transformNode.absoluteScaling);\n // In case we had any negative scaling, we need to take the absolute value of the extents.\n extents.x = Math.abs(extents.x);\n extents.y = Math.abs(extents.y);\n extents.z = Math.abs(extents.z);\n const min = TmpVectors.Vector3[1];\n min.copyFrom(bb.minimum);\n min.multiplyInPlace(this.transformNode.absoluteScaling);\n if (!this._options.center) {\n const center = new Vector3();\n center.copyFrom(bb.center);\n center.multiplyInPlace(this.transformNode.absoluteScaling);\n this._options.center = center;\n }\n switch (this.type) {\n case 0 /* PhysicsShapeType.SPHERE */:\n if (!this._options.radius && WithinEpsilon(extents.x, extents.y, 0.0001) && WithinEpsilon(extents.x, extents.z, 0.0001)) {\n this._options.radius = extents.x / 2;\n }\n else if (!this._options.radius) {\n Logger.Warn(\"Non uniform scaling is unsupported for sphere shapes. Setting the radius to the biggest bounding box extent.\");\n this._options.radius = Math.max(extents.x, extents.y, extents.z) / 2;\n }\n break;\n case 1 /* PhysicsShapeType.CAPSULE */:\n {\n const capRadius = extents.x / 2;\n this._options.radius = this._options.radius ?? capRadius;\n this._options.pointA = this._options.pointA ?? new Vector3(0, min.y + capRadius, 0);\n this._options.pointB = this._options.pointB ?? new Vector3(0, min.y + extents.y - capRadius, 0);\n }\n break;\n case 2 /* PhysicsShapeType.CYLINDER */:\n {\n const capRadius = extents.x / 2;\n this._options.radius = this._options.radius ?? capRadius;\n this._options.pointA = this._options.pointA ?? new Vector3(0, min.y, 0);\n this._options.pointB = this._options.pointB ?? new Vector3(0, min.y + extents.y, 0);\n }\n break;\n case 6 /* PhysicsShapeType.MESH */:\n case 4 /* PhysicsShapeType.CONVEX_HULL */:\n case 7 /* PhysicsShapeType.HEIGHTFIELD */:\n if (!this._options.mesh && this._hasVertices(this.transformNode)) {\n this._options.mesh = this.transformNode;\n }\n else if (!this._options.mesh || !this._hasVertices(this._options.mesh)) {\n throw new Error(\"No valid mesh was provided for mesh or convex hull shape parameter. Please provide a mesh with valid geometry (number of vertices greater than 0).\");\n }\n break;\n case 3 /* PhysicsShapeType.BOX */:\n this._options.extents = this._options.extents ?? new Vector3(extents.x, extents.y, extents.z);\n this._options.rotation = this._options.rotation ?? Quaternion.Identity();\n break;\n }\n }\n /**\n * Releases the body, shape and material\n */\n dispose() {\n if (this._nodeDisposeObserver) {\n this.body.transformNode.onDisposeObservable.remove(this._nodeDisposeObserver);\n this._nodeDisposeObserver = null;\n }\n this.body.dispose();\n if (this._disposeShapeWhenDisposed) {\n this.shape.dispose();\n }\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|