@iwsdk/core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/asset/asset-manager.d.ts +72 -0
- package/dist/asset/asset-manager.d.ts.map +1 -0
- package/dist/asset/asset-manager.js +138 -0
- package/dist/asset/asset-manager.js.map +1 -0
- package/dist/asset/cache-manager.d.ts +44 -0
- package/dist/asset/cache-manager.d.ts.map +1 -0
- package/dist/asset/cache-manager.js +80 -0
- package/dist/asset/cache-manager.js.map +1 -0
- package/dist/asset/index.d.ts +9 -0
- package/dist/asset/index.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.d.ts +21 -0
- package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.js +57 -0
- package/dist/asset/loaders/audio-loader.js.map +1 -0
- package/dist/asset/loaders/gltf-loader.d.ts +33 -0
- package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
- package/dist/asset/loaders/gltf-loader.js +79 -0
- package/dist/asset/loaders/gltf-loader.js.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.js +65 -0
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
- package/dist/asset/loaders/texture-loader.d.ts +21 -0
- package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/texture-loader.js +57 -0
- package/dist/asset/loaders/texture-loader.js.map +1 -0
- package/dist/audio/audio-pool.d.ts +59 -0
- package/dist/audio/audio-pool.d.ts.map +1 -0
- package/dist/audio/audio-pool.js +105 -0
- package/dist/audio/audio-pool.js.map +1 -0
- package/dist/audio/audio-system.d.ts +326 -0
- package/dist/audio/audio-system.d.ts.map +1 -0
- package/dist/audio/audio-system.js +478 -0
- package/dist/audio/audio-system.js.map +1 -0
- package/dist/audio/audio-utils.d.ts +71 -0
- package/dist/audio/audio-utils.d.ts.map +1 -0
- package/dist/audio/audio-utils.js +145 -0
- package/dist/audio/audio-utils.js.map +1 -0
- package/dist/audio/audio.d.ts +178 -0
- package/dist/audio/audio.d.ts.map +1 -0
- package/dist/audio/audio.js +104 -0
- package/dist/audio/audio.js.map +1 -0
- package/dist/audio/index.d.ts +11 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/ecs/component-registry.d.ts +54 -0
- package/dist/ecs/component-registry.d.ts.map +1 -0
- package/dist/ecs/component-registry.js +86 -0
- package/dist/ecs/component-registry.js.map +1 -0
- package/dist/ecs/component.d.ts +12 -0
- package/dist/ecs/component.d.ts.map +1 -0
- package/dist/ecs/entity.d.ts +17 -0
- package/dist/ecs/entity.d.ts.map +1 -0
- package/dist/ecs/entity.js +13 -0
- package/dist/ecs/entity.js.map +1 -0
- package/dist/ecs/index.d.ts +12 -0
- package/dist/ecs/index.d.ts.map +1 -0
- package/dist/ecs/system.d.ts +70 -0
- package/dist/ecs/system.d.ts.map +1 -0
- package/dist/ecs/system.js +79 -0
- package/dist/ecs/system.js.map +1 -0
- package/dist/ecs/world.d.ts +101 -0
- package/dist/ecs/world.d.ts.map +1 -0
- package/dist/ecs/world.js +165 -0
- package/dist/ecs/world.js.map +1 -0
- package/dist/environment/dome-gradient.d.ts +39 -0
- package/dist/environment/dome-gradient.d.ts.map +1 -0
- package/dist/environment/dome-gradient.js +30 -0
- package/dist/environment/dome-gradient.js.map +1 -0
- package/dist/environment/dome-texture.d.ts +39 -0
- package/dist/environment/dome-texture.d.ts.map +1 -0
- package/dist/environment/dome-texture.js +30 -0
- package/dist/environment/dome-texture.js.map +1 -0
- package/dist/environment/environment-system.d.ts +82 -0
- package/dist/environment/environment-system.d.ts.map +1 -0
- package/dist/environment/environment-system.js +389 -0
- package/dist/environment/environment-system.js.map +1 -0
- package/dist/environment/gradient-environment.d.ts +37 -0
- package/dist/environment/gradient-environment.d.ts.map +1 -0
- package/dist/environment/gradient-environment.js +99 -0
- package/dist/environment/gradient-environment.js.map +1 -0
- package/dist/environment/ibl-gradient.d.ts +38 -0
- package/dist/environment/ibl-gradient.d.ts.map +1 -0
- package/dist/environment/ibl-gradient.js +29 -0
- package/dist/environment/ibl-gradient.js.map +1 -0
- package/dist/environment/ibl-texture.d.ts +36 -0
- package/dist/environment/ibl-texture.d.ts.map +1 -0
- package/dist/environment/ibl-texture.js +30 -0
- package/dist/environment/ibl-texture.js.map +1 -0
- package/dist/environment/index.d.ts +12 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.d.ts +115 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js +102 -0
- package/dist/grab/distance-grabbable.js.map +1 -0
- package/dist/grab/grab-system.d.ts +320 -0
- package/dist/grab/grab-system.d.ts.map +1 -0
- package/dist/grab/grab-system.js +239 -0
- package/dist/grab/grab-system.js.map +1 -0
- package/dist/grab/handles.d.ts +43 -0
- package/dist/grab/handles.d.ts.map +1 -0
- package/dist/grab/handles.js +132 -0
- package/dist/grab/handles.js.map +1 -0
- package/dist/grab/index.d.ts +13 -0
- package/dist/grab/index.d.ts.map +1 -0
- package/dist/grab/index.js +23 -0
- package/dist/grab/index.js.map +1 -0
- package/dist/grab/one-hand-grabbable.d.ts +80 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
- package/dist/grab/one-hand-grabbable.js +80 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -0
- package/dist/grab/pointer-events-patch.d.ts +16 -0
- package/dist/grab/pointer-events-patch.d.ts.map +1 -0
- package/dist/grab/pointer-events-patch.js +223 -0
- package/dist/grab/pointer-events-patch.js.map +1 -0
- package/dist/grab/two-hands-grabbable.d.ts +103 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
- package/dist/grab/two-hands-grabbable.js +100 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/init/index.d.ts +9 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/world-initializer.d.ts +76 -0
- package/dist/init/world-initializer.d.ts.map +1 -0
- package/dist/init/world-initializer.js +403 -0
- package/dist/init/world-initializer.js.map +1 -0
- package/dist/init/xr.d.ts +87 -0
- package/dist/init/xr.d.ts.map +1 -0
- package/dist/init/xr.js +193 -0
- package/dist/init/xr.js.map +1 -0
- package/dist/input/index.d.ts +9 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/input-system.d.ts +52 -0
- package/dist/input/input-system.d.ts.map +1 -0
- package/dist/input/input-system.js +176 -0
- package/dist/input/input-system.js.map +1 -0
- package/dist/input/state-tags.d.ts +56 -0
- package/dist/input/state-tags.d.ts.map +1 -0
- package/dist/input/state-tags.js +63 -0
- package/dist/input/state-tags.js.map +1 -0
- package/dist/level/index.d.ts +12 -0
- package/dist/level/index.d.ts.map +1 -0
- package/dist/level/level-entity-creator.d.ts +27 -0
- package/dist/level/level-entity-creator.d.ts.map +1 -0
- package/dist/level/level-entity-creator.js +110 -0
- package/dist/level/level-entity-creator.js.map +1 -0
- package/dist/level/level-glxf-importer.d.ts +22 -0
- package/dist/level/level-glxf-importer.d.ts.map +1 -0
- package/dist/level/level-glxf-importer.js +40 -0
- package/dist/level/level-glxf-importer.js.map +1 -0
- package/dist/level/level-root.d.ts +18 -0
- package/dist/level/level-root.d.ts.map +1 -0
- package/dist/level/level-root.js +25 -0
- package/dist/level/level-root.js.map +1 -0
- package/dist/level/level-system.d.ts +54 -0
- package/dist/level/level-system.d.ts.map +1 -0
- package/dist/level/level-system.js +134 -0
- package/dist/level/level-system.js.map +1 -0
- package/dist/level/level-tag.d.ts +25 -0
- package/dist/level/level-tag.d.ts.map +1 -0
- package/dist/level/level-tag.js +28 -0
- package/dist/level/level-tag.js.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
- package/dist/locomotion/index.d.ts +11 -0
- package/dist/locomotion/index.d.ts.map +1 -0
- package/dist/locomotion/locomotion.d.ts +239 -0
- package/dist/locomotion/locomotion.d.ts.map +1 -0
- package/dist/locomotion/locomotion.js +256 -0
- package/dist/locomotion/locomotion.js.map +1 -0
- package/dist/locomotion/materials/line.d.ts +24 -0
- package/dist/locomotion/materials/line.d.ts.map +1 -0
- package/dist/locomotion/materials/line.js +307 -0
- package/dist/locomotion/materials/line.js.map +1 -0
- package/dist/locomotion/slide.d.ts +76 -0
- package/dist/locomotion/slide.d.ts.map +1 -0
- package/dist/locomotion/slide.js +131 -0
- package/dist/locomotion/slide.js.map +1 -0
- package/dist/locomotion/teleport.d.ts +68 -0
- package/dist/locomotion/teleport.d.ts.map +1 -0
- package/dist/locomotion/teleport.js +150 -0
- package/dist/locomotion/teleport.js.map +1 -0
- package/dist/locomotion/turn.d.ts +77 -0
- package/dist/locomotion/turn.d.ts.map +1 -0
- package/dist/locomotion/turn.js +126 -0
- package/dist/locomotion/turn.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
- package/dist/physics/index.d.ts +11 -0
- package/dist/physics/index.d.ts.map +1 -0
- package/dist/physics/physics-system.d.ts +314 -0
- package/dist/physics/physics-system.d.ts.map +1 -0
- package/dist/physics/physics-system.js +419 -0
- package/dist/physics/physics-system.js.map +1 -0
- package/dist/physics/physicsBody.d.ts +83 -0
- package/dist/physics/physicsBody.d.ts.map +1 -0
- package/dist/physics/physicsBody.js +60 -0
- package/dist/physics/physicsBody.js.map +1 -0
- package/dist/physics/physicsManipulation.d.ts +51 -0
- package/dist/physics/physicsManipulation.d.ts.map +1 -0
- package/dist/physics/physicsManipulation.js +46 -0
- package/dist/physics/physicsManipulation.js.map +1 -0
- package/dist/physics/physicsShape.d.ts +133 -0
- package/dist/physics/physicsShape.d.ts.map +1 -0
- package/dist/physics/physicsShape.js +97 -0
- package/dist/physics/physicsShape.js.map +1 -0
- package/dist/physics/utils.d.ts +21 -0
- package/dist/physics/utils.d.ts.map +1 -0
- package/dist/physics/utils.js +130 -0
- package/dist/physics/utils.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/three.d.ts +8 -0
- package/dist/runtime/three.d.ts.map +1 -0
- package/dist/runtime/three.js +18 -0
- package/dist/runtime/three.js.map +1 -0
- package/dist/scene-understanding/anchor.d.ts +42 -0
- package/dist/scene-understanding/anchor.d.ts.map +1 -0
- package/dist/scene-understanding/anchor.js +45 -0
- package/dist/scene-understanding/anchor.js.map +1 -0
- package/dist/scene-understanding/index.d.ts +11 -0
- package/dist/scene-understanding/index.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.d.ts +67 -0
- package/dist/scene-understanding/mesh.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.js +55 -0
- package/dist/scene-understanding/mesh.js.map +1 -0
- package/dist/scene-understanding/plane.d.ts +39 -0
- package/dist/scene-understanding/plane.d.ts.map +1 -0
- package/dist/scene-understanding/plane.js +42 -0
- package/dist/scene-understanding/plane.js.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.js +342 -0
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
- package/dist/transform/index.d.ts +10 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.d.ts +35 -0
- package/dist/transform/synced-quaternion.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.js +128 -0
- package/dist/transform/synced-quaternion.js.map +1 -0
- package/dist/transform/synced-vector3.d.ts +34 -0
- package/dist/transform/synced-vector3.d.ts.map +1 -0
- package/dist/transform/synced-vector3.js +106 -0
- package/dist/transform/synced-vector3.js.map +1 -0
- package/dist/transform/transform.d.ts +100 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/transform/transform.js +194 -0
- package/dist/transform/transform.js.map +1 -0
- package/dist/types/webxr-augmentations.d.ts +23 -0
- package/dist/types/webxr-augmentations.d.ts.map +1 -0
- package/dist/ui/document.d.ts +112 -0
- package/dist/ui/document.d.ts.map +1 -0
- package/dist/ui/document.js +298 -0
- package/dist/ui/document.js.map +1 -0
- package/dist/ui/follow.d.ts +197 -0
- package/dist/ui/follow.d.ts.map +1 -0
- package/dist/ui/follow.js +143 -0
- package/dist/ui/follow.js.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/screenspace.d.ts +219 -0
- package/dist/ui/screenspace.d.ts.map +1 -0
- package/dist/ui/screenspace.js +215 -0
- package/dist/ui/screenspace.js.map +1 -0
- package/dist/ui/ui.d.ts +209 -0
- package/dist/ui/ui.d.ts.map +1 -0
- package/dist/ui/ui.js +185 -0
- package/dist/ui/ui.js.map +1 -0
- package/dist/vendor/basis/README.md +46 -0
- package/dist/vendor/basis/basis_transcoder.js +19 -0
- package/dist/vendor/basis/basis_transcoder.wasm +0 -0
- package/dist/vendor/draco/README.md +32 -0
- package/dist/vendor/draco/draco_decoder.js +34 -0
- package/dist/vendor/draco/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/draco_encoder.js +33 -0
- package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
- package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/visibility/index.d.ts +8 -0
- package/dist/visibility/index.d.ts.map +1 -0
- package/dist/visibility/visibility.d.ts +37 -0
- package/dist/visibility/visibility.d.ts.map +1 -0
- package/dist/visibility/visibility.js +52 -0
- package/dist/visibility/visibility.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { PhysicsBody, DEFAULT_LINEAR_DAMPING, DEFAULT_GRAVITY_FACTOR, PhysicsState } from './physicsBody.js';
|
|
2
|
+
import { PhysicsShape, PhysicsShapeType } from './physicsShape.js';
|
|
3
|
+
import '../index.js';
|
|
4
|
+
import '../runtime/three.js';
|
|
5
|
+
import { detectShapeFromGeometry, generateMergedGeometry } from './utils.js';
|
|
6
|
+
import { PhysicsManipulation } from './physicsManipulation.js';
|
|
7
|
+
import { Types, ne } from 'elics';
|
|
8
|
+
import { Pressed } from '../input/state-tags.js';
|
|
9
|
+
import '../grab/index.js';
|
|
10
|
+
import { createSystem } from '../ecs/system.js';
|
|
11
|
+
import { Vector3, Matrix4, Mesh } from 'three';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
15
|
+
*
|
|
16
|
+
* This source code is licensed under the MIT license found in the
|
|
17
|
+
* LICENSE file in the root directory of this source tree.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Manages physics simulation using the Havok physics engine.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* - Initializes Havok physics engine and creates a physics world with gravity.
|
|
24
|
+
* - Supports automatic physics shapes creation based on entity geometry when {@link PhysicsShapeType.Auto} is used.
|
|
25
|
+
* - Supports multiple collision shapes: Sphere, Box, Cylinder, ConvexHull, and TriMesh.
|
|
26
|
+
* - Synchronizes physics body transforms with Three.js Object3D positions and rotations using {@link PhysicsBody}.
|
|
27
|
+
* - Handles physics manipulations like applying forces and setting velocities in {@link PhysicsManipulation}.
|
|
28
|
+
* - Automatically cleans up physics resources when entities are removed.
|
|
29
|
+
*
|
|
30
|
+
* @example Basic physics setup
|
|
31
|
+
* ```ts
|
|
32
|
+
* // Add to your world to enable physics
|
|
33
|
+
* world.addSystem(PhysicsSystem)
|
|
34
|
+
*
|
|
35
|
+
* // Create a dynamic box that falls due to gravity
|
|
36
|
+
* const box = world.createTransformEntity(boxMesh)
|
|
37
|
+
* box.addComponent(PhysicsShape, {
|
|
38
|
+
* shape: PhysicsShapeType.Box,
|
|
39
|
+
* dimensions: [1, 1, 1]
|
|
40
|
+
* })
|
|
41
|
+
* box.addComponent(PhysicsBody, { state: PhysicsState.Dynamic })
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @category Physics
|
|
45
|
+
* @see {@link PhysicsBody}
|
|
46
|
+
* @see {@link PhysicsShape}
|
|
47
|
+
* @see {@link PhysicsManipulation}
|
|
48
|
+
*/
|
|
49
|
+
class PhysicsSystem extends createSystem({
|
|
50
|
+
physicsEntities: {
|
|
51
|
+
required: [PhysicsBody, PhysicsShape],
|
|
52
|
+
},
|
|
53
|
+
manipluatedEntities: {
|
|
54
|
+
required: [PhysicsBody, PhysicsManipulation],
|
|
55
|
+
where: [ne(PhysicsBody, '_engineBody', 0)],
|
|
56
|
+
},
|
|
57
|
+
}, {
|
|
58
|
+
gravity: { type: Types.Vec3, default: [0, -9.81, 0] },
|
|
59
|
+
}) {
|
|
60
|
+
constructor() {
|
|
61
|
+
super(...arguments);
|
|
62
|
+
this.scaleBuffer = new Vector3();
|
|
63
|
+
this.matrixBuffer = new Matrix4();
|
|
64
|
+
}
|
|
65
|
+
async init() {
|
|
66
|
+
const { default: HavokPhysics } = await import('@babylonjs/havok');
|
|
67
|
+
this.havok = await HavokPhysics();
|
|
68
|
+
this.havokWorld = this.havok.HP_World_Create()[1];
|
|
69
|
+
this.havok.HP_World_SetGravity(this.havokWorld, this.config.gravity.value);
|
|
70
|
+
// Unified cleanup
|
|
71
|
+
this.queries.physicsEntities.subscribe('disqualify', (entity) => {
|
|
72
|
+
if (!this.havok || !this.havokWorld) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const engineShape = entity.getValue(PhysicsShape, '_engineShape');
|
|
76
|
+
if (engineShape) {
|
|
77
|
+
this.havok.HP_Shape_Release([BigInt(engineShape)]);
|
|
78
|
+
}
|
|
79
|
+
const engineBody = entity.getValue(PhysicsBody, '_engineBody');
|
|
80
|
+
if (engineBody) {
|
|
81
|
+
this.havok.HP_World_RemoveBody(this.havokWorld, [BigInt(engineBody)]);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
update(delta) {
|
|
86
|
+
if (this.havok && this.havokWorld) {
|
|
87
|
+
this.havok.HP_World_SetIdealStepTime(this.havokWorld, delta);
|
|
88
|
+
this.havok.HP_World_Step(this.havokWorld, delta);
|
|
89
|
+
this.bodyBuffer = this.havok.HP_World_GetBodyBuffer(this.havokWorld)[1];
|
|
90
|
+
}
|
|
91
|
+
this.queries.physicsEntities.entities.forEach((entity) => {
|
|
92
|
+
var _a, _b, _c;
|
|
93
|
+
if (!entity.object3D || !this.havok || !this.havokWorld) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const engineShape = entity.getValue(PhysicsShape, '_engineShape');
|
|
97
|
+
const engineBody = entity.getValue(PhysicsBody, '_engineBody');
|
|
98
|
+
if (!engineShape) {
|
|
99
|
+
const dimensionsView = entity.getVectorView(PhysicsShape, 'dimensions');
|
|
100
|
+
this.createHavokShapes(entity, dimensionsView);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
if (!engineBody && engineShape) {
|
|
105
|
+
const bodyRepsonse = this.createBody([BigInt(engineShape)], entity.object3D.position, entity.object3D.quaternion, entity.getValue(PhysicsBody, 'state'), (_a = entity.getValue(PhysicsBody, 'linearDamping')) !== null && _a !== void 0 ? _a : DEFAULT_LINEAR_DAMPING, (_b = entity.getValue(PhysicsBody, 'gravityFactor')) !== null && _b !== void 0 ? _b : DEFAULT_GRAVITY_FACTOR);
|
|
106
|
+
if (bodyRepsonse) {
|
|
107
|
+
entity.setValue(PhysicsBody, '_engineBody', Number(bodyRepsonse.createdBody));
|
|
108
|
+
entity.setValue(PhysicsBody, '_engineOffset', bodyRepsonse.offset);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else if (engineBody && this.bodyBuffer) {
|
|
112
|
+
const linearVelocity = this.havok.HP_Body_GetLinearVelocity([
|
|
113
|
+
BigInt(engineBody),
|
|
114
|
+
]);
|
|
115
|
+
const angularVelocity = this.havok.HP_Body_GetAngularVelocity([
|
|
116
|
+
BigInt(engineBody),
|
|
117
|
+
]);
|
|
118
|
+
const linearVelocityView = entity.getVectorView(PhysicsBody, '_linearVelocity');
|
|
119
|
+
const angularVelocityView = entity.getVectorView(PhysicsBody, '_angularVelocity');
|
|
120
|
+
linearVelocityView.set(linearVelocity[1]);
|
|
121
|
+
angularVelocityView.set(angularVelocity[1]);
|
|
122
|
+
// Processing physics body motion here
|
|
123
|
+
const position = entity.object3D.position;
|
|
124
|
+
const quaternion = entity.object3D.quaternion;
|
|
125
|
+
if (entity.hasComponent(Pressed)) {
|
|
126
|
+
this.havok.HP_Body_SetTargetQTransform([BigInt(engineBody)], [
|
|
127
|
+
[position.x, position.y, position.z],
|
|
128
|
+
[quaternion.x, quaternion.y, quaternion.z, quaternion.w],
|
|
129
|
+
]);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const bodyOffset = (_c = entity.getValue(PhysicsBody, '_engineOffset')) !== null && _c !== void 0 ? _c : 0;
|
|
133
|
+
const transformBuffer = new Float32Array(this.havok.HEAPU8.buffer, this.bodyBuffer + bodyOffset, 16);
|
|
134
|
+
for (let mi = 0; mi < 15; mi++) {
|
|
135
|
+
if ((mi & 3) != 3) {
|
|
136
|
+
this.matrixBuffer.elements[mi] = transformBuffer[mi];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
this.matrixBuffer.elements[15] = 1.0;
|
|
140
|
+
this.matrixBuffer.decompose(position, quaternion, this.scaleBuffer);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
this.queries.manipluatedEntities.entities.forEach((entity) => {
|
|
145
|
+
const engineBody = entity.getValue(PhysicsBody, '_engineBody');
|
|
146
|
+
if (!entity.object3D || !this.havok || !this.havokWorld || !engineBody) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
// Applying one time force to the body
|
|
150
|
+
if (!entity
|
|
151
|
+
.getVectorView(PhysicsManipulation, 'force')
|
|
152
|
+
.every((element) => element === 0)) {
|
|
153
|
+
const force = entity.getVectorView(PhysicsManipulation, 'force');
|
|
154
|
+
this.havok.HP_Body_ApplyImpulse([BigInt(engineBody)], [
|
|
155
|
+
entity.object3D.position.x,
|
|
156
|
+
entity.object3D.position.y,
|
|
157
|
+
entity.object3D.position.z,
|
|
158
|
+
], [force[0] * delta, force[1] * delta, force[2] * delta]);
|
|
159
|
+
}
|
|
160
|
+
// Applying one time linear velocity to the body
|
|
161
|
+
if (!entity
|
|
162
|
+
.getVectorView(PhysicsManipulation, 'linearVelocity')
|
|
163
|
+
.every((element) => element === 0)) {
|
|
164
|
+
const linearVelocity = entity.getVectorView(PhysicsManipulation, 'linearVelocity');
|
|
165
|
+
this.havok.HP_Body_SetLinearVelocity([BigInt(engineBody)], [linearVelocity[0], linearVelocity[1], linearVelocity[2]]);
|
|
166
|
+
}
|
|
167
|
+
// Applying one time angular velocity to the body
|
|
168
|
+
if (!entity
|
|
169
|
+
.getVectorView(PhysicsManipulation, 'angularVelocity')
|
|
170
|
+
.every((element) => element === 0)) {
|
|
171
|
+
const angularVelocity = entity.getVectorView(PhysicsManipulation, 'angularVelocity');
|
|
172
|
+
this.havok.HP_Body_SetAngularVelocity([BigInt(engineBody)], [angularVelocity[0], angularVelocity[1], angularVelocity[2]]);
|
|
173
|
+
}
|
|
174
|
+
entity.removeComponent(PhysicsManipulation);
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
createBody(shape, position, quaternion, state, linearDamping, gravityFactor) {
|
|
178
|
+
if (!this.havok || !this.havokWorld) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const body = this.havok.HP_Body_Create()[1];
|
|
182
|
+
this.havok.HP_Body_SetShape(body, shape);
|
|
183
|
+
this.havok.HP_Body_SetQTransform(body, [
|
|
184
|
+
[position.x, position.y, position.z],
|
|
185
|
+
[quaternion.x, quaternion.y, quaternion.z, quaternion.w],
|
|
186
|
+
]);
|
|
187
|
+
this.havok.HP_Body_SetLinearDamping(body, linearDamping);
|
|
188
|
+
this.havok.HP_Body_SetGravityFactor(body, gravityFactor);
|
|
189
|
+
this.havok.HP_World_AddBody(this.havokWorld, body, false);
|
|
190
|
+
let motionType;
|
|
191
|
+
switch (state) {
|
|
192
|
+
case PhysicsState.Static:
|
|
193
|
+
motionType = this.havok.MotionType.STATIC;
|
|
194
|
+
break;
|
|
195
|
+
case PhysicsState.Kinematic:
|
|
196
|
+
motionType = this.havok.MotionType.KINEMATIC;
|
|
197
|
+
break;
|
|
198
|
+
case PhysicsState.Dynamic:
|
|
199
|
+
default:
|
|
200
|
+
motionType = this.havok.MotionType.DYNAMIC;
|
|
201
|
+
}
|
|
202
|
+
this.havok.HP_Body_SetMotionType(body, motionType);
|
|
203
|
+
return {
|
|
204
|
+
offset: this.havok.HP_Body_GetWorldTransformOffset(body)[1],
|
|
205
|
+
createdBody: body,
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
createHavokShapes(entity, dimensionsView) {
|
|
209
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
210
|
+
if (!entity.object3D) {
|
|
211
|
+
console.warn('PhysicsSystem: No object3D attached to entity', entity.index);
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
// Determine the actual shape type (resolve Auto if needed)
|
|
215
|
+
let shapeType = entity.getValue(PhysicsShape, 'shape');
|
|
216
|
+
if (shapeType === PhysicsShapeType.Auto) {
|
|
217
|
+
const detection = detectShapeFromGeometry(entity.object3D);
|
|
218
|
+
// Update the entity's shape type and dimensions if they were auto-detected
|
|
219
|
+
entity.setValue(PhysicsShape, 'shape', detection.shapeType);
|
|
220
|
+
shapeType = detection.shapeType;
|
|
221
|
+
if (detection.dimensions) {
|
|
222
|
+
// Re-read the updated dimensions view
|
|
223
|
+
dimensionsView.set(detection.dimensions);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
switch (shapeType) {
|
|
227
|
+
case PhysicsShapeType.Sphere: {
|
|
228
|
+
const ballShape = this.createBallShape(dimensionsView[0], (_a = entity.getValue(PhysicsShape, 'density')) !== null && _a !== void 0 ? _a : 1.0, (_b = entity.getValue(PhysicsShape, 'restitution')) !== null && _b !== void 0 ? _b : 0, (_c = entity.getValue(PhysicsShape, 'friction')) !== null && _c !== void 0 ? _c : 0.5);
|
|
229
|
+
if (ballShape) {
|
|
230
|
+
PhysicsShape.data._engineShape[entity.index] = Number(ballShape);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.warn('PhysicsSystem: Failed to create ball shape for entity', entity.index);
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
case PhysicsShapeType.Box: {
|
|
238
|
+
const boxShape = this.createBoxShape(dimensionsView, (_d = entity.getValue(PhysicsShape, 'density')) !== null && _d !== void 0 ? _d : 1.0, (_e = entity.getValue(PhysicsShape, 'restitution')) !== null && _e !== void 0 ? _e : 0, (_f = entity.getValue(PhysicsShape, 'friction')) !== null && _f !== void 0 ? _f : 0.5);
|
|
239
|
+
if (boxShape) {
|
|
240
|
+
PhysicsShape.data._engineShape[entity.index] = Number(boxShape);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
console.warn('PhysicsSystem: Failed to create box shape for entity', entity.index);
|
|
244
|
+
}
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
case PhysicsShapeType.Cylinder: {
|
|
248
|
+
const cylinderShape = this.createCylinderShape(dimensionsView[0], // radius
|
|
249
|
+
dimensionsView[1], // height
|
|
250
|
+
(_g = entity.getValue(PhysicsShape, 'density')) !== null && _g !== void 0 ? _g : 1.0, (_h = entity.getValue(PhysicsShape, 'restitution')) !== null && _h !== void 0 ? _h : 0, (_j = entity.getValue(PhysicsShape, 'friction')) !== null && _j !== void 0 ? _j : 0.5);
|
|
251
|
+
if (cylinderShape) {
|
|
252
|
+
PhysicsShape.data._engineShape[entity.index] = Number(cylinderShape);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
console.warn('PhysicsSystem: Failed to create cylinder shape for entity', entity.index);
|
|
256
|
+
}
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
case PhysicsShapeType.ConvexHull: {
|
|
260
|
+
const convexHullShape = this.createConvexHullShape(entity.object3D, (_k = entity.getValue(PhysicsShape, 'density')) !== null && _k !== void 0 ? _k : 1.0, (_l = entity.getValue(PhysicsShape, 'restitution')) !== null && _l !== void 0 ? _l : 0, (_m = entity.getValue(PhysicsShape, 'friction')) !== null && _m !== void 0 ? _m : 0.5);
|
|
261
|
+
if (convexHullShape) {
|
|
262
|
+
PhysicsShape.data._engineShape[entity.index] =
|
|
263
|
+
Number(convexHullShape);
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
console.warn('PhysicsSystem: Failed to create convex hull shape for entity', entity.index);
|
|
267
|
+
}
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
case PhysicsShapeType.TriMesh: {
|
|
271
|
+
const triMeshShape = this.createTriMeshShape(entity.object3D, (_o = entity.getValue(PhysicsShape, 'density')) !== null && _o !== void 0 ? _o : 1.0, (_p = entity.getValue(PhysicsShape, 'restitution')) !== null && _p !== void 0 ? _p : 0, (_q = entity.getValue(PhysicsShape, 'friction')) !== null && _q !== void 0 ? _q : 0.5);
|
|
272
|
+
if (triMeshShape) {
|
|
273
|
+
PhysicsShape.data._engineShape[entity.index] = Number(triMeshShape);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
console.warn('PhysicsSystem: Failed to create tri-mesh shape for entity', entity.index);
|
|
277
|
+
}
|
|
278
|
+
break;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
createBallShape(radius, density, restitution, friction) {
|
|
283
|
+
if (!this.havok) {
|
|
284
|
+
console.warn('PhysicsSystem: Cannot create ball shape - Havok physics engine not initialized');
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const ballShape = this.havok.HP_Shape_CreateSphere([0, 0, 0], radius)[1];
|
|
288
|
+
this.havok.HP_Shape_SetDensity(ballShape, density);
|
|
289
|
+
this.havok.HP_Shape_SetMaterial(ballShape, [
|
|
290
|
+
friction,
|
|
291
|
+
friction,
|
|
292
|
+
restitution,
|
|
293
|
+
this.havok.MaterialCombine.MINIMUM,
|
|
294
|
+
this.havok.MaterialCombine.MAXIMUM,
|
|
295
|
+
]);
|
|
296
|
+
return ballShape;
|
|
297
|
+
}
|
|
298
|
+
createBoxShape(scale, density, restitution, friction) {
|
|
299
|
+
if (!this.havok) {
|
|
300
|
+
console.warn('PhysicsSystem: Cannot create box shape - Havok physics engine not initialized');
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
const boxShape = this.havok.HP_Shape_CreateBox([0, 0, 0], [0, 0, 0, 1], [scale[0], scale[1], scale[2]])[1];
|
|
304
|
+
this.havok.HP_Shape_SetDensity(boxShape, density);
|
|
305
|
+
this.havok.HP_Shape_SetMaterial(boxShape, [
|
|
306
|
+
friction,
|
|
307
|
+
friction,
|
|
308
|
+
restitution,
|
|
309
|
+
this.havok.MaterialCombine.MINIMUM,
|
|
310
|
+
this.havok.MaterialCombine.MAXIMUM,
|
|
311
|
+
]);
|
|
312
|
+
return boxShape;
|
|
313
|
+
}
|
|
314
|
+
createCylinderShape(radius, height, density, restitution, friction) {
|
|
315
|
+
if (!this.havok) {
|
|
316
|
+
console.warn('PhysicsSystem: Cannot create cylinder shape - Havok physics engine not initialized');
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
const cylinderShape = this.havok.HP_Shape_CreateCylinder([0, 0, 0], [0, height, 0], radius)[1];
|
|
320
|
+
this.havok.HP_Shape_SetDensity(cylinderShape, density);
|
|
321
|
+
this.havok.HP_Shape_SetMaterial(cylinderShape, [
|
|
322
|
+
friction,
|
|
323
|
+
friction,
|
|
324
|
+
restitution,
|
|
325
|
+
this.havok.MaterialCombine.MINIMUM,
|
|
326
|
+
this.havok.MaterialCombine.MAXIMUM,
|
|
327
|
+
]);
|
|
328
|
+
return cylinderShape;
|
|
329
|
+
}
|
|
330
|
+
createConvexHullShape(object3D, density, restitution, friction) {
|
|
331
|
+
if (!this.havok) {
|
|
332
|
+
console.warn('PhysicsSystem: Cannot create convex hull shape - Havok physics engine not initialized');
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
const geometry = object3D instanceof Mesh
|
|
336
|
+
? object3D.geometry
|
|
337
|
+
: generateMergedGeometry(object3D);
|
|
338
|
+
const vertices = this.getVertices(geometry.attributes.position.array);
|
|
339
|
+
if (!vertices) {
|
|
340
|
+
console.warn('PhysicsSystem: Failed to get vertices for convex hull shape with object3D name ' +
|
|
341
|
+
object3D.name +
|
|
342
|
+
' &id ' +
|
|
343
|
+
object3D.id);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const convexHullShape = this.havok.HP_Shape_CreateConvexHull(vertices.offset, vertices.numObjects / 3)[1];
|
|
347
|
+
this.havok._free(vertices.offset);
|
|
348
|
+
this.havok.HP_Shape_SetDensity(convexHullShape, density);
|
|
349
|
+
this.havok.HP_Shape_SetMaterial(convexHullShape, [
|
|
350
|
+
friction,
|
|
351
|
+
friction,
|
|
352
|
+
restitution,
|
|
353
|
+
this.havok.MaterialCombine.MINIMUM,
|
|
354
|
+
this.havok.MaterialCombine.MAXIMUM,
|
|
355
|
+
]);
|
|
356
|
+
return convexHullShape;
|
|
357
|
+
}
|
|
358
|
+
createTriMeshShape(object3D, density, restitution, friction) {
|
|
359
|
+
if (!this.havok) {
|
|
360
|
+
console.warn('PhysicsSystem: Cannot create tri-mesh shape - Havok physics engine not initialized');
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
const geometry = object3D instanceof Mesh
|
|
364
|
+
? object3D.geometry
|
|
365
|
+
: generateMergedGeometry(object3D);
|
|
366
|
+
const vertices = this.getVertices(geometry.attributes.position.array);
|
|
367
|
+
const indices = this.getIndices(geometry.index.array);
|
|
368
|
+
if (!vertices || !indices) {
|
|
369
|
+
if (!vertices) {
|
|
370
|
+
console.warn('PhysicsSystem: Failed to get vertices for tri-mesh shape with object3D name ' +
|
|
371
|
+
object3D.name +
|
|
372
|
+
' &id ' +
|
|
373
|
+
object3D.id);
|
|
374
|
+
}
|
|
375
|
+
if (!indices) {
|
|
376
|
+
console.warn('PhysicsSystem: Failed to get indices for tri-mesh shape with object3D name ' +
|
|
377
|
+
object3D.name +
|
|
378
|
+
' &id ' +
|
|
379
|
+
object3D.id);
|
|
380
|
+
}
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const triMeshShape = this.havok.HP_Shape_CreateMesh(vertices.offset, vertices.numObjects / 3, indices.offset, indices.numObjects / 3)[1];
|
|
384
|
+
this.havok._free(vertices.offset);
|
|
385
|
+
this.havok._free(indices.offset);
|
|
386
|
+
this.havok.HP_Shape_SetDensity(triMeshShape, density);
|
|
387
|
+
this.havok.HP_Shape_SetMaterial(triMeshShape, [
|
|
388
|
+
friction,
|
|
389
|
+
friction,
|
|
390
|
+
restitution,
|
|
391
|
+
this.havok.MaterialCombine.MINIMUM,
|
|
392
|
+
this.havok.MaterialCombine.MAXIMUM,
|
|
393
|
+
]);
|
|
394
|
+
return triMeshShape;
|
|
395
|
+
}
|
|
396
|
+
getVertices(vertices) {
|
|
397
|
+
const bytesPerFloat = 4;
|
|
398
|
+
const nBytes = vertices.length * bytesPerFloat;
|
|
399
|
+
const bufferBegin = this.havok._malloc(nBytes);
|
|
400
|
+
const ret = new Float32Array(this.havok.HEAPU8.buffer, bufferBegin, vertices.length);
|
|
401
|
+
for (let i = 0; i < vertices.length; i++) {
|
|
402
|
+
ret[i] = vertices[i];
|
|
403
|
+
}
|
|
404
|
+
return { offset: bufferBegin, numObjects: vertices.length };
|
|
405
|
+
}
|
|
406
|
+
getIndices(indices) {
|
|
407
|
+
const bytesPerInt = 4;
|
|
408
|
+
const nBytes = indices.length * bytesPerInt;
|
|
409
|
+
const bufferBegin = this.havok._malloc(nBytes);
|
|
410
|
+
const ret = new Int32Array(this.havok.HEAPU8.buffer, bufferBegin, indices.length);
|
|
411
|
+
for (let i = 0; i < indices.length; i++) {
|
|
412
|
+
ret[i] = indices[i];
|
|
413
|
+
}
|
|
414
|
+
return { offset: bufferBegin, numObjects: indices.length };
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
export { PhysicsSystem };
|
|
419
|
+
//# sourceMappingURL=physics-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physics-system.js","sources":["../../src/physics/physics-system.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Types } from '.././index.js';
|
|
8
|
+
/** Motion type for {@link PhysicsBody}. @category Physics */
|
|
9
|
+
export declare const PhysicsState: {
|
|
10
|
+
/** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.
|
|
11
|
+
* It would still affect other bodies in the engine. */
|
|
12
|
+
readonly Static: "STATIC";
|
|
13
|
+
/** Bodies which can move and respond to forces, collisions, and gravity. */
|
|
14
|
+
readonly Dynamic: "DYNAMIC";
|
|
15
|
+
/** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.
|
|
16
|
+
* Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */
|
|
17
|
+
readonly Kinematic: "KINEMATIC";
|
|
18
|
+
};
|
|
19
|
+
export declare const DEFAULT_LINEAR_DAMPING = 0;
|
|
20
|
+
export declare const DEFAULT_GRAVITY_FACTOR = 1;
|
|
21
|
+
/**
|
|
22
|
+
* Component for physics bodies. A physics body is a virtual object that represents a physical
|
|
23
|
+
* object in a simulation.
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* - Static bodies are used for immovable objects like walls and floors.
|
|
27
|
+
* - Dynamic bodies respond to forces, collisions, and gravity.
|
|
28
|
+
* - Kinematic bodies can be moved programmatically but don't respond to physics forces.
|
|
29
|
+
* - Internal properties like `_engineBody` are managed automatically by {@link PhysicsSystem}.
|
|
30
|
+
*
|
|
31
|
+
* @example Add a dynamic physics body to an entity
|
|
32
|
+
* ```ts
|
|
33
|
+
* entity.addComponent(PhysicsBody, {
|
|
34
|
+
* state: PhysicsState.Dynamic
|
|
35
|
+
* })
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @category Physics
|
|
39
|
+
* @see {@link PhysicsSystem}
|
|
40
|
+
* @see {@link PhysicsShape}
|
|
41
|
+
*/
|
|
42
|
+
export declare const PhysicsBody: import("elics").Component<{
|
|
43
|
+
/** The body's motion type in Physics Engine. {@link PhysicsState} */
|
|
44
|
+
state: {
|
|
45
|
+
type: Types.Enum;
|
|
46
|
+
enum: {
|
|
47
|
+
/** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.
|
|
48
|
+
* It would still affect other bodies in the engine. */
|
|
49
|
+
readonly Static: "STATIC";
|
|
50
|
+
/** Bodies which can move and respond to forces, collisions, and gravity. */
|
|
51
|
+
readonly Dynamic: "DYNAMIC";
|
|
52
|
+
/** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.
|
|
53
|
+
* Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */
|
|
54
|
+
readonly Kinematic: "KINEMATIC";
|
|
55
|
+
};
|
|
56
|
+
default: "DYNAMIC";
|
|
57
|
+
};
|
|
58
|
+
linearDamping: {
|
|
59
|
+
type: Types.Float32;
|
|
60
|
+
default: number;
|
|
61
|
+
};
|
|
62
|
+
gravityFactor: {
|
|
63
|
+
type: Types.Float32;
|
|
64
|
+
default: number;
|
|
65
|
+
};
|
|
66
|
+
_linearVelocity: {
|
|
67
|
+
type: Types.Vec3;
|
|
68
|
+
default: [number, number, number];
|
|
69
|
+
};
|
|
70
|
+
_angularVelocity: {
|
|
71
|
+
type: Types.Vec3;
|
|
72
|
+
default: [number, number, number];
|
|
73
|
+
};
|
|
74
|
+
_engineBody: {
|
|
75
|
+
type: Types.Float64;
|
|
76
|
+
default: number;
|
|
77
|
+
};
|
|
78
|
+
_engineOffset: {
|
|
79
|
+
type: Types.Float64;
|
|
80
|
+
default: number;
|
|
81
|
+
};
|
|
82
|
+
}>;
|
|
83
|
+
//# sourceMappingURL=physicsBody.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physicsBody.d.ts","sourceRoot":"","sources":["../../src/physics/physicsBody.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,eAAe,CAAC;AAEvD,6DAA6D;AAC7D,eAAO,MAAM,YAAY;IACvB;4DACwD;;IAExD,6EAA6E;;IAE7E;wIACoI;;CAE5H,CAAC;AAEX,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAC1C,eAAO,MAAM,sBAAsB,IAAM,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,WAAW;IAGpB,sEAAsE;;;;YArCxE;oEACwD;;YAExD,6EAA6E;;YAE7E;gJACoI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CrI,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import '../index.js';
|
|
2
|
+
import { createComponent, Types } from 'elics';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
6
|
+
*
|
|
7
|
+
* This source code is licensed under the MIT license found in the
|
|
8
|
+
* LICENSE file in the root directory of this source tree.
|
|
9
|
+
*/
|
|
10
|
+
/** Motion type for {@link PhysicsBody}. @category Physics */
|
|
11
|
+
const PhysicsState = {
|
|
12
|
+
/** Static bodies are bodies which never move. Use this motion type for your immovable objects like walls and floors.
|
|
13
|
+
* It would still affect other bodies in the engine. */
|
|
14
|
+
Static: 'STATIC',
|
|
15
|
+
/** Bodies which can move and respond to forces, collisions, and gravity. */
|
|
16
|
+
Dynamic: 'DYNAMIC',
|
|
17
|
+
/** Kinematic bodies that can move just like dynamic bodies. The difference is that kinematic bodies won't be affected by any other bodies.
|
|
18
|
+
* Kinematic bodies will still push dynamic bodies out of the way but the kinematic body won't be affected by those collisions. */
|
|
19
|
+
Kinematic: 'KINEMATIC',
|
|
20
|
+
};
|
|
21
|
+
const DEFAULT_LINEAR_DAMPING = 0.0;
|
|
22
|
+
const DEFAULT_GRAVITY_FACTOR = 1.0;
|
|
23
|
+
/**
|
|
24
|
+
* Component for physics bodies. A physics body is a virtual object that represents a physical
|
|
25
|
+
* object in a simulation.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* - Static bodies are used for immovable objects like walls and floors.
|
|
29
|
+
* - Dynamic bodies respond to forces, collisions, and gravity.
|
|
30
|
+
* - Kinematic bodies can be moved programmatically but don't respond to physics forces.
|
|
31
|
+
* - Internal properties like `_engineBody` are managed automatically by {@link PhysicsSystem}.
|
|
32
|
+
*
|
|
33
|
+
* @example Add a dynamic physics body to an entity
|
|
34
|
+
* ```ts
|
|
35
|
+
* entity.addComponent(PhysicsBody, {
|
|
36
|
+
* state: PhysicsState.Dynamic
|
|
37
|
+
* })
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @category Physics
|
|
41
|
+
* @see {@link PhysicsSystem}
|
|
42
|
+
* @see {@link PhysicsShape}
|
|
43
|
+
*/
|
|
44
|
+
const PhysicsBody = createComponent('PhysicsBody', {
|
|
45
|
+
/** The body's motion type in Physics Engine. {@link PhysicsState} */
|
|
46
|
+
state: {
|
|
47
|
+
type: Types.Enum,
|
|
48
|
+
enum: PhysicsState,
|
|
49
|
+
default: PhysicsState.Dynamic,
|
|
50
|
+
},
|
|
51
|
+
linearDamping: { type: Types.Float32, default: 0.0 },
|
|
52
|
+
gravityFactor: { type: Types.Float32, default: 1.0 },
|
|
53
|
+
_linearVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },
|
|
54
|
+
_angularVelocity: { type: Types.Vec3, default: [0.0, 0.0, 0.0] },
|
|
55
|
+
_engineBody: { type: Types.Float64, default: 0 },
|
|
56
|
+
_engineOffset: { type: Types.Float64, default: 0 },
|
|
57
|
+
}, 'Component to define physics behavior of an entity.');
|
|
58
|
+
|
|
59
|
+
export { DEFAULT_GRAVITY_FACTOR, DEFAULT_LINEAR_DAMPING, PhysicsBody, PhysicsState };
|
|
60
|
+
//# sourceMappingURL=physicsBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physicsBody.js","sources":["../../src/physics/physicsBody.ts"],"sourcesContent":[null],"names":[],"mappings":";;;AAAA;;;;;AAKG;AAIH;AACO,MAAM,YAAY,GAAG;AAC1B;AACwD;AACxD,IAAA,MAAM,EAAE,QAAQ;;AAEhB,IAAA,OAAO,EAAE,SAAS;AAClB;AACoI;AACpI,IAAA,SAAS,EAAE,WAAW;;AAGjB,MAAM,sBAAsB,GAAG;AAC/B,MAAM,sBAAsB,GAAG;AAEtC;;;;;;;;;;;;;;;;;;;;AAoBG;AACI,MAAM,WAAW,GAAG,eAAe,CACxC,aAAa,EACb;;AAEE,IAAA,KAAK,EAAE;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,QAAA,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,YAAY,CAAC,OAAO;AAC9B,KAAA;IACD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE;AACpD,IAAA,eAAe,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;AAC/D,IAAA,gBAAgB,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;IAChE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;IAChD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE;CACnD,EACD,oDAAoD;;;;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Types } from '.././index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Component for applying one‑time physics manipulations to an entity.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* - This component is automatically removed after the manipulations are applied.
|
|
13
|
+
* - Force is applied as an impulse at the entity's center of mass.
|
|
14
|
+
* - Setting linear or angular velocity overrides the current velocity.
|
|
15
|
+
* - All manipulations are applied in a single frame, then the component is removed.
|
|
16
|
+
* - Requires the entity to have {@link PhysicsBody}.
|
|
17
|
+
*
|
|
18
|
+
* @example Apply an upward force to make an object jump
|
|
19
|
+
* ```ts
|
|
20
|
+
* entity.addComponent(PhysicsManipulation, {
|
|
21
|
+
* force: [0, 10, 0]
|
|
22
|
+
* })
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example Set specific velocity for controlled movement
|
|
26
|
+
* ```ts
|
|
27
|
+
* entity.addComponent(PhysicsManipulation, {
|
|
28
|
+
* linearVelocity: [5, 0, 0],
|
|
29
|
+
* angularVelocity: [0, 2, 0]
|
|
30
|
+
* })
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @category Physics
|
|
34
|
+
* @see {@link PhysicsSystem}
|
|
35
|
+
* @see {@link PhysicsBody}
|
|
36
|
+
*/
|
|
37
|
+
export declare const PhysicsManipulation: import("elics").Component<{
|
|
38
|
+
force: {
|
|
39
|
+
type: Types.Vec3;
|
|
40
|
+
default: [number, number, number];
|
|
41
|
+
};
|
|
42
|
+
linearVelocity: {
|
|
43
|
+
type: Types.Vec3;
|
|
44
|
+
default: [number, number, number];
|
|
45
|
+
};
|
|
46
|
+
angularVelocity: {
|
|
47
|
+
type: Types.Vec3;
|
|
48
|
+
default: [number, number, number];
|
|
49
|
+
};
|
|
50
|
+
}>;
|
|
51
|
+
//# sourceMappingURL=physicsManipulation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"physicsManipulation.d.ts","sourceRoot":"","sources":["../../src/physics/physicsManipulation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,eAAe,CAAC;AAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;EAQ/B,CAAC"}
|