@needle-tools/engine 4.2.5 → 4.3.0-alpha.1
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/CHANGELOG.md +9 -0
- package/components.needle.json +1 -1
- package/dist/needle-engine.bundle.js +4245 -2977
- package/dist/needle-engine.bundle.light.js +4236 -2968
- package/dist/needle-engine.bundle.light.min.js +73 -73
- package/dist/needle-engine.bundle.light.umd.cjs +61 -61
- package/dist/needle-engine.bundle.min.js +62 -62
- package/dist/needle-engine.bundle.umd.cjs +61 -61
- package/dist/needle-engine.light.d.ts +9 -9
- package/dist/three-examples.js +825 -794
- package/dist/three-examples.light.js +825 -794
- package/dist/three-examples.light.min.js +12 -12
- package/dist/three-examples.light.umd.cjs +10 -10
- package/dist/three-examples.min.js +12 -12
- package/dist/three-examples.umd.cjs +10 -10
- package/lib/engine/engine_addressables.d.ts +3 -0
- package/lib/engine/engine_addressables.js +18 -0
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_input.d.ts +20 -1
- package/lib/engine/engine_input.js.map +1 -1
- package/lib/engine/engine_types.d.ts +162 -17
- package/lib/engine-components/Animator.d.ts +129 -21
- package/lib/engine-components/Animator.js +115 -21
- package/lib/engine-components/Animator.js.map +1 -1
- package/lib/engine-components/AnimatorController.d.ts +161 -32
- package/lib/engine-components/AnimatorController.js +176 -29
- package/lib/engine-components/AnimatorController.js.map +1 -1
- package/lib/engine-components/AudioListener.d.ts +16 -5
- package/lib/engine-components/AudioListener.js +16 -5
- package/lib/engine-components/AudioListener.js.map +1 -1
- package/lib/engine-components/AudioSource.d.ts +120 -28
- package/lib/engine-components/AudioSource.js +120 -37
- package/lib/engine-components/AudioSource.js.map +1 -1
- package/lib/engine-components/AvatarLoader.d.ts +61 -0
- package/lib/engine-components/AvatarLoader.js +61 -1
- package/lib/engine-components/AvatarLoader.js.map +1 -1
- package/lib/engine-components/AxesHelper.d.ts +19 -1
- package/lib/engine-components/AxesHelper.js +19 -1
- package/lib/engine-components/AxesHelper.js.map +1 -1
- package/lib/engine-components/BoxHelperComponent.d.ts +26 -0
- package/lib/engine-components/BoxHelperComponent.js +26 -0
- package/lib/engine-components/BoxHelperComponent.js.map +1 -1
- package/lib/engine-components/Camera.d.ts +126 -37
- package/lib/engine-components/Camera.js +139 -37
- package/lib/engine-components/Camera.js.map +1 -1
- package/lib/engine-components/CameraUtils.js +20 -0
- package/lib/engine-components/CameraUtils.js.map +1 -1
- package/lib/engine-components/Collider.d.ts +95 -21
- package/lib/engine-components/Collider.js +100 -23
- package/lib/engine-components/Collider.js.map +1 -1
- package/lib/engine-components/Component.d.ts +554 -106
- package/lib/engine-components/Component.js +352 -81
- package/lib/engine-components/Component.js.map +1 -1
- package/lib/engine-components/DragControls.d.ts +95 -21
- package/lib/engine-components/DragControls.js +126 -32
- package/lib/engine-components/DragControls.js.map +1 -1
- package/lib/engine-components/DropListener.d.ts +99 -16
- package/lib/engine-components/DropListener.js +119 -14
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/Light.d.ts +102 -5
- package/lib/engine-components/Light.js +102 -44
- package/lib/engine-components/Light.js.map +1 -1
- package/lib/engine-components/NeedleMenu.d.ts +28 -11
- package/lib/engine-components/NeedleMenu.js +28 -11
- package/lib/engine-components/NeedleMenu.js.map +1 -1
- package/lib/engine-components/Networking.d.ts +37 -5
- package/lib/engine-components/Networking.js +37 -5
- package/lib/engine-components/Networking.js.map +1 -1
- package/lib/engine-components/SceneSwitcher.d.ts +8 -0
- package/lib/engine-components/SceneSwitcher.js +72 -8
- package/lib/engine-components/SceneSwitcher.js.map +1 -1
- package/lib/engine-components/SpatialTrigger.d.ts +66 -1
- package/lib/engine-components/SpatialTrigger.js +74 -2
- package/lib/engine-components/SpatialTrigger.js.map +1 -1
- package/lib/engine-components/SpectatorCamera.d.ts +66 -4
- package/lib/engine-components/SpectatorCamera.js +132 -6
- package/lib/engine-components/SpectatorCamera.js.map +1 -1
- package/lib/engine-components/SyncedTransform.d.ts +45 -6
- package/lib/engine-components/SyncedTransform.js +45 -6
- package/lib/engine-components/SyncedTransform.js.map +1 -1
- package/lib/engine-components/TransformGizmo.d.ts +49 -3
- package/lib/engine-components/TransformGizmo.js +49 -3
- package/lib/engine-components/TransformGizmo.js.map +1 -1
- package/lib/engine-components/ui/EventSystem.d.ts +1 -0
- package/lib/engine-components/ui/EventSystem.js +8 -5
- package/lib/engine-components/ui/EventSystem.js.map +1 -1
- package/lib/engine-components/webxr/WebXR.d.ts +131 -22
- package/lib/engine-components/webxr/WebXR.js +132 -23
- package/lib/engine-components/webxr/WebXR.js.map +1 -1
- package/lib/engine-components-experimental/networking/PlayerSync.d.ts +82 -9
- package/lib/engine-components-experimental/networking/PlayerSync.js +76 -11
- package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -1
- package/package.json +1 -1
- package/plugins/vite/alias.js +6 -3
- package/src/engine/engine_addressables.ts +21 -0
- package/src/engine/engine_input.ts +20 -1
- package/src/engine/engine_types.ts +179 -18
- package/src/engine-components/Animator.ts +142 -22
- package/src/engine-components/AnimatorController.ts +184 -34
- package/src/engine-components/AudioListener.ts +16 -5
- package/src/engine-components/AudioSource.ts +126 -37
- package/src/engine-components/AvatarLoader.ts +61 -2
- package/src/engine-components/AxesHelper.ts +21 -1
- package/src/engine-components/BoxHelperComponent.ts +26 -0
- package/src/engine-components/Camera.ts +147 -41
- package/src/engine-components/CameraUtils.ts +20 -0
- package/src/engine-components/Collider.ts +102 -27
- package/src/engine-components/Component.ts +605 -129
- package/src/engine-components/DragControls.ts +134 -38
- package/src/engine-components/DropListener.ts +143 -23
- package/src/engine-components/Light.ts +105 -44
- package/src/engine-components/NeedleMenu.ts +29 -11
- package/src/engine-components/Networking.ts +37 -6
- package/src/engine-components/SceneSwitcher.ts +78 -9
- package/src/engine-components/SpatialTrigger.ts +80 -3
- package/src/engine-components/SpectatorCamera.ts +136 -18
- package/src/engine-components/SyncedTransform.ts +50 -7
- package/src/engine-components/TransformGizmo.ts +49 -4
- package/src/engine-components/ui/EventSystem.ts +9 -7
- package/src/engine-components/webxr/WebXR.ts +144 -27
- package/src/engine-components-experimental/networking/PlayerSync.ts +85 -13
|
@@ -5,33 +5,37 @@ import { Behaviour } from "./Component.js";
|
|
|
5
5
|
import { Rigidbody } from "./RigidBody.js";
|
|
6
6
|
/**
|
|
7
7
|
* Collider is the base class for all colliders. A collider is a physical shape that is used to detect collisions with other objects in the scene.
|
|
8
|
-
* Colliders are used in combination with a Rigidbody to create physical interactions between objects.
|
|
8
|
+
* Colliders are used in combination with a {@link Rigidbody} to create physical interactions between objects.
|
|
9
9
|
* Colliders are registered with the physics engine when they are enabled and removed when they are disabled.
|
|
10
10
|
* @category Physics
|
|
11
11
|
* @group Components
|
|
12
12
|
*/
|
|
13
13
|
export declare class Collider extends Behaviour implements ICollider {
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Identifies this component as a collider.
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
15
18
|
get isCollider(): any;
|
|
16
19
|
/**
|
|
17
|
-
* The Rigidbody that this collider is attached to.
|
|
20
|
+
* The {@link Rigidbody} that this collider is attached to. This handles the physics simulation for this collider.
|
|
18
21
|
*/
|
|
19
22
|
attachedRigidbody: Rigidbody | null;
|
|
20
23
|
/**
|
|
21
24
|
* When `true` the collider will not be used for collision detection but will still trigger events.
|
|
25
|
+
* Trigger colliders can trigger events when other colliders enter their space, without creating a physical response/collision.
|
|
22
26
|
*/
|
|
23
27
|
isTrigger: boolean;
|
|
24
28
|
/**
|
|
25
|
-
* The physics material that
|
|
29
|
+
* The physics material that defines physical properties of the collider such as friction and bounciness.
|
|
26
30
|
*/
|
|
27
31
|
sharedMaterial?: PhysicsMaterial;
|
|
28
32
|
/**
|
|
29
|
-
* The layers that
|
|
33
|
+
* The layers that this collider belongs to. Used for filtering collision detection.
|
|
34
|
+
* @default [0]
|
|
30
35
|
*/
|
|
31
36
|
membership: number[];
|
|
32
37
|
/**
|
|
33
|
-
* The layers that
|
|
34
|
-
* @inheritdoc
|
|
38
|
+
* The layers that this collider will interact with. Used for filtering collision detection.
|
|
35
39
|
*/
|
|
36
40
|
filter?: number[];
|
|
37
41
|
/** @internal */
|
|
@@ -42,73 +46,143 @@ export declare class Collider extends Behaviour implements ICollider {
|
|
|
42
46
|
onEnable(): void;
|
|
43
47
|
/** @internal */
|
|
44
48
|
onDisable(): void;
|
|
45
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Returns the underlying physics body from the physics engine.
|
|
51
|
+
* Only available if the component is enabled and active in the scene.
|
|
52
|
+
*/
|
|
46
53
|
get body(): any;
|
|
47
54
|
/**
|
|
48
|
-
*
|
|
55
|
+
* Updates the collider's properties in the physics engine.
|
|
56
|
+
* Use this when you've changed collider properties and need to sync with the physics engine.
|
|
49
57
|
*/
|
|
50
58
|
updateProperties: () => void;
|
|
51
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Updates the physics material in the physics engine.
|
|
61
|
+
* Call this after changing the sharedMaterial property.
|
|
62
|
+
*/
|
|
52
63
|
updatePhysicsMaterial(): void;
|
|
53
64
|
}
|
|
54
65
|
/**
|
|
55
|
-
* SphereCollider
|
|
66
|
+
* SphereCollider represents a sphere-shaped collision volume.
|
|
67
|
+
* Useful for objects that are roughly spherical in shape or need a simple collision boundary.
|
|
56
68
|
* @category Physics
|
|
57
69
|
* @group Components
|
|
58
70
|
*/
|
|
59
71
|
export declare class SphereCollider extends Collider implements ISphereCollider {
|
|
72
|
+
/**
|
|
73
|
+
* The radius of the sphere collider.
|
|
74
|
+
*/
|
|
60
75
|
radius: number;
|
|
76
|
+
/**
|
|
77
|
+
* The center position of the sphere collider relative to the transform's position.
|
|
78
|
+
*/
|
|
61
79
|
center: Vector3;
|
|
80
|
+
/**
|
|
81
|
+
* Registers the sphere collider with the physics engine and sets up scale change monitoring.
|
|
82
|
+
*/
|
|
62
83
|
onEnable(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Removes scale change monitoring when the collider is disabled.
|
|
86
|
+
*/
|
|
63
87
|
onDisable(): void;
|
|
88
|
+
/**
|
|
89
|
+
* Updates collider properties when validated in the editor or inspector.
|
|
90
|
+
*/
|
|
64
91
|
onValidate(): void;
|
|
65
92
|
}
|
|
66
93
|
/**
|
|
67
|
-
* BoxCollider
|
|
94
|
+
* BoxCollider represents a box-shaped collision volume.
|
|
95
|
+
* Ideal for rectangular objects or objects that need a simple cuboid collision boundary.
|
|
68
96
|
* @category Physics
|
|
69
97
|
* @group Components
|
|
70
98
|
*/
|
|
71
99
|
export declare class BoxCollider extends Collider implements IBoxCollider {
|
|
100
|
+
/**
|
|
101
|
+
* Creates and adds a BoxCollider to the given object.
|
|
102
|
+
* @param obj The object to add the collider to
|
|
103
|
+
* @param opts Configuration options for the collider and optional rigidbody
|
|
104
|
+
* @returns The newly created BoxCollider
|
|
105
|
+
*/
|
|
72
106
|
static add(obj: Mesh | Object3D, opts?: {
|
|
73
107
|
rigidbody: boolean;
|
|
74
108
|
debug?: boolean;
|
|
75
109
|
}): BoxCollider;
|
|
110
|
+
/**
|
|
111
|
+
* The size of the box collider along each axis.
|
|
112
|
+
*/
|
|
76
113
|
size: Vector3;
|
|
114
|
+
/**
|
|
115
|
+
* The center position of the box collider relative to the transform's position.
|
|
116
|
+
*/
|
|
77
117
|
center: Vector3;
|
|
78
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* Registers the box collider with the physics engine and sets up scale change monitoring.
|
|
120
|
+
* @internal
|
|
121
|
+
*/
|
|
79
122
|
onEnable(): void;
|
|
80
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* Removes scale change monitoring when the collider is disabled.
|
|
125
|
+
* @internal
|
|
126
|
+
*/
|
|
81
127
|
onDisable(): void;
|
|
82
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Updates collider properties when validated in the editor or inspector.
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
83
132
|
onValidate(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Automatically fits the collider to the geometry of the object.
|
|
135
|
+
* Sets the size and center based on the object's bounding box.
|
|
136
|
+
* @param opts Options object with a debug flag to visualize the bounding box
|
|
137
|
+
*/
|
|
84
138
|
autoFit(opts?: {
|
|
85
139
|
debug?: boolean;
|
|
86
140
|
}): void;
|
|
87
141
|
}
|
|
88
142
|
/**
|
|
89
|
-
* MeshCollider
|
|
90
|
-
*
|
|
143
|
+
* MeshCollider creates a collision shape from a mesh geometry.
|
|
144
|
+
* Allows for complex collision shapes that match the exact geometry of an object.
|
|
91
145
|
* @category Physics
|
|
92
146
|
* @group Components
|
|
93
147
|
*/
|
|
94
148
|
export declare class MeshCollider extends Collider {
|
|
95
149
|
/**
|
|
96
|
-
* The mesh that is used
|
|
150
|
+
* The mesh that is used to create the collision shape.
|
|
151
|
+
* If not set, the collider will try to use the mesh of the object it's attached to.
|
|
97
152
|
*/
|
|
98
153
|
sharedMesh?: Mesh;
|
|
99
|
-
/**
|
|
100
|
-
*
|
|
154
|
+
/**
|
|
155
|
+
* When `true` the collider is treated as a solid object without holes.
|
|
156
|
+
* Set to `false` if you want this mesh collider to be able to contain other objects.
|
|
157
|
+
*/
|
|
101
158
|
convex: boolean;
|
|
159
|
+
/**
|
|
160
|
+
* Creates and registers the mesh collider with the physics engine.
|
|
161
|
+
* Handles both individual meshes and mesh groups.
|
|
162
|
+
*/
|
|
102
163
|
onEnable(): void;
|
|
103
164
|
}
|
|
104
165
|
/**
|
|
105
|
-
* CapsuleCollider
|
|
166
|
+
* CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).
|
|
167
|
+
* Ideal for character controllers and objects that need a rounded collision shape.
|
|
106
168
|
* @category Physics
|
|
107
169
|
* @group Components
|
|
108
170
|
*/
|
|
109
171
|
export declare class CapsuleCollider extends Collider {
|
|
172
|
+
/**
|
|
173
|
+
* The center position of the capsule collider relative to the transform's position.
|
|
174
|
+
*/
|
|
110
175
|
center: Vector3;
|
|
176
|
+
/**
|
|
177
|
+
* The radius of the capsule's cylindrical body and hemispherical ends.
|
|
178
|
+
*/
|
|
111
179
|
radius: number;
|
|
180
|
+
/**
|
|
181
|
+
* The total height of the capsule including both hemispherical ends.
|
|
182
|
+
*/
|
|
112
183
|
height: number;
|
|
184
|
+
/**
|
|
185
|
+
* Registers the capsule collider with the physics engine.
|
|
186
|
+
*/
|
|
113
187
|
onEnable(): void;
|
|
114
188
|
}
|
|
@@ -5,46 +5,51 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Group, Mesh, Vector3 } from "three";
|
|
8
|
+
import { isDevEnvironment } from "../engine/debug/index.js";
|
|
8
9
|
import { addComponent } from "../engine/engine_components.js";
|
|
9
10
|
import { Gizmos } from "../engine/engine_gizmos.js";
|
|
10
11
|
import { serializable } from "../engine/engine_serialization_decorator.js";
|
|
11
12
|
import { getBoundingBox } from "../engine/engine_three_utils.js";
|
|
12
13
|
import { validate } from "../engine/engine_util_decorator.js";
|
|
13
|
-
import { unwatchWrite, watchWrite } from "../engine/engine_utils.js";
|
|
14
|
+
import { getParam, unwatchWrite, watchWrite } from "../engine/engine_utils.js";
|
|
14
15
|
import { NEEDLE_progressive } from "../engine/extensions/NEEDLE_progressive.js";
|
|
15
16
|
import { Behaviour } from "./Component.js";
|
|
16
17
|
import { Rigidbody } from "./RigidBody.js";
|
|
17
18
|
/**
|
|
18
19
|
* Collider is the base class for all colliders. A collider is a physical shape that is used to detect collisions with other objects in the scene.
|
|
19
|
-
* Colliders are used in combination with a Rigidbody to create physical interactions between objects.
|
|
20
|
+
* Colliders are used in combination with a {@link Rigidbody} to create physical interactions between objects.
|
|
20
21
|
* Colliders are registered with the physics engine when they are enabled and removed when they are disabled.
|
|
21
22
|
* @category Physics
|
|
22
23
|
* @group Components
|
|
23
24
|
*/
|
|
24
25
|
export class Collider extends Behaviour {
|
|
25
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Identifies this component as a collider.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
26
30
|
get isCollider() {
|
|
27
31
|
return true;
|
|
28
32
|
}
|
|
29
33
|
/**
|
|
30
|
-
* The Rigidbody that this collider is attached to.
|
|
34
|
+
* The {@link Rigidbody} that this collider is attached to. This handles the physics simulation for this collider.
|
|
31
35
|
*/
|
|
32
36
|
attachedRigidbody = null;
|
|
33
37
|
/**
|
|
34
38
|
* When `true` the collider will not be used for collision detection but will still trigger events.
|
|
39
|
+
* Trigger colliders can trigger events when other colliders enter their space, without creating a physical response/collision.
|
|
35
40
|
*/
|
|
36
41
|
isTrigger = false;
|
|
37
42
|
/**
|
|
38
|
-
* The physics material that
|
|
43
|
+
* The physics material that defines physical properties of the collider such as friction and bounciness.
|
|
39
44
|
*/
|
|
40
45
|
sharedMaterial;
|
|
41
46
|
/**
|
|
42
|
-
* The layers that
|
|
47
|
+
* The layers that this collider belongs to. Used for filtering collision detection.
|
|
48
|
+
* @default [0]
|
|
43
49
|
*/
|
|
44
50
|
membership = [0];
|
|
45
51
|
/**
|
|
46
|
-
* The layers that
|
|
47
|
-
* @inheritdoc
|
|
52
|
+
* The layers that this collider will interact with. Used for filtering collision detection.
|
|
48
53
|
*/
|
|
49
54
|
filter;
|
|
50
55
|
/** @internal */
|
|
@@ -68,17 +73,24 @@ export class Collider extends Behaviour {
|
|
|
68
73
|
onDisable() {
|
|
69
74
|
this.context.physics.engine?.removeBody(this);
|
|
70
75
|
}
|
|
71
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Returns the underlying physics body from the physics engine.
|
|
78
|
+
* Only available if the component is enabled and active in the scene.
|
|
79
|
+
*/
|
|
72
80
|
get body() {
|
|
73
81
|
return this.context.physics.engine?.getBody(this);
|
|
74
82
|
}
|
|
75
83
|
/**
|
|
76
|
-
*
|
|
84
|
+
* Updates the collider's properties in the physics engine.
|
|
85
|
+
* Use this when you've changed collider properties and need to sync with the physics engine.
|
|
77
86
|
*/
|
|
78
87
|
updateProperties = () => {
|
|
79
88
|
this.context.physics.engine?.updateProperties(this);
|
|
80
89
|
};
|
|
81
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* Updates the physics material in the physics engine.
|
|
92
|
+
* Call this after changing the sharedMaterial property.
|
|
93
|
+
*/
|
|
82
94
|
updatePhysicsMaterial() {
|
|
83
95
|
this.context.physics.engine?.updatePhysicsMaterial(this);
|
|
84
96
|
}
|
|
@@ -99,22 +111,38 @@ __decorate([
|
|
|
99
111
|
serializable()
|
|
100
112
|
], Collider.prototype, "filter", void 0);
|
|
101
113
|
/**
|
|
102
|
-
* SphereCollider
|
|
114
|
+
* SphereCollider represents a sphere-shaped collision volume.
|
|
115
|
+
* Useful for objects that are roughly spherical in shape or need a simple collision boundary.
|
|
103
116
|
* @category Physics
|
|
104
117
|
* @group Components
|
|
105
118
|
*/
|
|
106
119
|
export class SphereCollider extends Collider {
|
|
120
|
+
/**
|
|
121
|
+
* The radius of the sphere collider.
|
|
122
|
+
*/
|
|
107
123
|
radius = .5;
|
|
124
|
+
/**
|
|
125
|
+
* The center position of the sphere collider relative to the transform's position.
|
|
126
|
+
*/
|
|
108
127
|
center = new Vector3(0, 0, 0);
|
|
128
|
+
/**
|
|
129
|
+
* Registers the sphere collider with the physics engine and sets up scale change monitoring.
|
|
130
|
+
*/
|
|
109
131
|
onEnable() {
|
|
110
132
|
super.onEnable();
|
|
111
133
|
this.context.physics.engine?.addSphereCollider(this);
|
|
112
134
|
watchWrite(this.gameObject.scale, this.updateProperties);
|
|
113
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Removes scale change monitoring when the collider is disabled.
|
|
138
|
+
*/
|
|
114
139
|
onDisable() {
|
|
115
140
|
super.onDisable();
|
|
116
141
|
unwatchWrite(this.gameObject.scale, this.updateProperties);
|
|
117
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Updates collider properties when validated in the editor or inspector.
|
|
145
|
+
*/
|
|
118
146
|
onValidate() {
|
|
119
147
|
this.updateProperties();
|
|
120
148
|
}
|
|
@@ -127,11 +155,18 @@ __decorate([
|
|
|
127
155
|
serializable(Vector3)
|
|
128
156
|
], SphereCollider.prototype, "center", void 0);
|
|
129
157
|
/**
|
|
130
|
-
* BoxCollider
|
|
158
|
+
* BoxCollider represents a box-shaped collision volume.
|
|
159
|
+
* Ideal for rectangular objects or objects that need a simple cuboid collision boundary.
|
|
131
160
|
* @category Physics
|
|
132
161
|
* @group Components
|
|
133
162
|
*/
|
|
134
163
|
export class BoxCollider extends Collider {
|
|
164
|
+
/**
|
|
165
|
+
* Creates and adds a BoxCollider to the given object.
|
|
166
|
+
* @param obj The object to add the collider to
|
|
167
|
+
* @param opts Configuration options for the collider and optional rigidbody
|
|
168
|
+
* @returns The newly created BoxCollider
|
|
169
|
+
*/
|
|
135
170
|
static add(obj, opts) {
|
|
136
171
|
const collider = addComponent(obj, BoxCollider);
|
|
137
172
|
collider.autoFit();
|
|
@@ -140,23 +175,43 @@ export class BoxCollider extends Collider {
|
|
|
140
175
|
}
|
|
141
176
|
return collider;
|
|
142
177
|
}
|
|
178
|
+
/**
|
|
179
|
+
* The size of the box collider along each axis.
|
|
180
|
+
*/
|
|
143
181
|
size = new Vector3(1, 1, 1);
|
|
182
|
+
/**
|
|
183
|
+
* The center position of the box collider relative to the transform's position.
|
|
184
|
+
*/
|
|
144
185
|
center = new Vector3(0, 0, 0);
|
|
145
|
-
/**
|
|
186
|
+
/**
|
|
187
|
+
* Registers the box collider with the physics engine and sets up scale change monitoring.
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
146
190
|
onEnable() {
|
|
147
191
|
super.onEnable();
|
|
148
192
|
this.context.physics.engine?.addBoxCollider(this, this.size);
|
|
149
193
|
watchWrite(this.gameObject.scale, this.updateProperties);
|
|
150
194
|
}
|
|
151
|
-
/**
|
|
195
|
+
/**
|
|
196
|
+
* Removes scale change monitoring when the collider is disabled.
|
|
197
|
+
* @internal
|
|
198
|
+
*/
|
|
152
199
|
onDisable() {
|
|
153
200
|
super.onDisable();
|
|
154
201
|
unwatchWrite(this.gameObject.scale, this.updateProperties);
|
|
155
202
|
}
|
|
156
|
-
/**
|
|
203
|
+
/**
|
|
204
|
+
* Updates collider properties when validated in the editor or inspector.
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
157
207
|
onValidate() {
|
|
158
208
|
this.updateProperties();
|
|
159
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Automatically fits the collider to the geometry of the object.
|
|
212
|
+
* Sets the size and center based on the object's bounding box.
|
|
213
|
+
* @param opts Options object with a debug flag to visualize the bounding box
|
|
214
|
+
*/
|
|
160
215
|
autoFit(opts) {
|
|
161
216
|
const obj = this.gameObject;
|
|
162
217
|
// we need to transform the object into identity
|
|
@@ -195,19 +250,26 @@ __decorate([
|
|
|
195
250
|
serializable(Vector3)
|
|
196
251
|
], BoxCollider.prototype, "center", void 0);
|
|
197
252
|
/**
|
|
198
|
-
* MeshCollider
|
|
199
|
-
*
|
|
253
|
+
* MeshCollider creates a collision shape from a mesh geometry.
|
|
254
|
+
* Allows for complex collision shapes that match the exact geometry of an object.
|
|
200
255
|
* @category Physics
|
|
201
256
|
* @group Components
|
|
202
257
|
*/
|
|
203
258
|
export class MeshCollider extends Collider {
|
|
204
259
|
/**
|
|
205
|
-
* The mesh that is used
|
|
260
|
+
* The mesh that is used to create the collision shape.
|
|
261
|
+
* If not set, the collider will try to use the mesh of the object it's attached to.
|
|
206
262
|
*/
|
|
207
263
|
sharedMesh;
|
|
208
|
-
/**
|
|
209
|
-
*
|
|
264
|
+
/**
|
|
265
|
+
* When `true` the collider is treated as a solid object without holes.
|
|
266
|
+
* Set to `false` if you want this mesh collider to be able to contain other objects.
|
|
267
|
+
*/
|
|
210
268
|
convex = false;
|
|
269
|
+
/**
|
|
270
|
+
* Creates and registers the mesh collider with the physics engine.
|
|
271
|
+
* Handles both individual meshes and mesh groups.
|
|
272
|
+
*/
|
|
211
273
|
onEnable() {
|
|
212
274
|
super.onEnable();
|
|
213
275
|
if (!this.context.physics.engine)
|
|
@@ -256,7 +318,9 @@ export class MeshCollider extends Collider {
|
|
|
256
318
|
});
|
|
257
319
|
}
|
|
258
320
|
else {
|
|
259
|
-
|
|
321
|
+
if (isDevEnvironment() || getParam("showcolliders")) {
|
|
322
|
+
console.warn(`[MeshCollider] A MeshCollider mesh is assigned to an unknown object on \"${this.gameObject.name}\", but it's neither a Mesh nor a Group. Please double check that you attached the collider component to the right object and report a bug otherwise!`, this);
|
|
323
|
+
}
|
|
260
324
|
}
|
|
261
325
|
}
|
|
262
326
|
}
|
|
@@ -268,14 +332,27 @@ __decorate([
|
|
|
268
332
|
serializable()
|
|
269
333
|
], MeshCollider.prototype, "convex", void 0);
|
|
270
334
|
/**
|
|
271
|
-
* CapsuleCollider
|
|
335
|
+
* CapsuleCollider represents a capsule-shaped collision volume (cylinder with hemispherical ends).
|
|
336
|
+
* Ideal for character controllers and objects that need a rounded collision shape.
|
|
272
337
|
* @category Physics
|
|
273
338
|
* @group Components
|
|
274
339
|
*/
|
|
275
340
|
export class CapsuleCollider extends Collider {
|
|
341
|
+
/**
|
|
342
|
+
* The center position of the capsule collider relative to the transform's position.
|
|
343
|
+
*/
|
|
276
344
|
center = new Vector3(0, 0, 0);
|
|
345
|
+
/**
|
|
346
|
+
* The radius of the capsule's cylindrical body and hemispherical ends.
|
|
347
|
+
*/
|
|
277
348
|
radius = .5;
|
|
349
|
+
/**
|
|
350
|
+
* The total height of the capsule including both hemispherical ends.
|
|
351
|
+
*/
|
|
278
352
|
height = 2;
|
|
353
|
+
/**
|
|
354
|
+
* Registers the capsule collider with the physics engine.
|
|
355
|
+
*/
|
|
279
356
|
onEnable() {
|
|
280
357
|
super.onEnable();
|
|
281
358
|
this.context.physics.engine?.addCapsuleCollider(this, this.height, this.radius);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Collider.js","sourceRoot":"","sources":["../../src/engine-components/Collider.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAkB,KAAK,EAAE,IAAI,EAAY,OAAO,EAAE,MAAM,OAAO,CAAA;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"Collider.js","sourceRoot":"","sources":["../../src/engine-components/Collider.ts"],"names":[],"mappings":"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"}
|