@needle-tools/engine 2.36.0-pre → 2.38.0-pre

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.
Files changed (143) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/needle-engine.d.ts +248 -151
  3. package/dist/needle-engine.js +451 -437
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +82 -82
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/lib/engine/api.d.ts +1 -0
  8. package/lib/engine/api.js +1 -0
  9. package/lib/engine/api.js.map +1 -1
  10. package/lib/engine/debug/debug.d.ts +1 -0
  11. package/lib/engine/debug/debug.js +3 -0
  12. package/lib/engine/debug/debug.js.map +1 -1
  13. package/lib/engine/engine_addressables.d.ts +3 -1
  14. package/lib/engine/engine_addressables.js +12 -5
  15. package/lib/engine/engine_addressables.js.map +1 -1
  16. package/lib/engine/engine_element.js +3 -2
  17. package/lib/engine/engine_element.js.map +1 -1
  18. package/lib/engine/engine_element_overlay.js +4 -3
  19. package/lib/engine/engine_element_overlay.js.map +1 -1
  20. package/lib/engine/engine_gameobject.js +2 -1
  21. package/lib/engine/engine_gameobject.js.map +1 -1
  22. package/lib/engine/engine_input.d.ts +2 -0
  23. package/lib/engine/engine_input.js +14 -3
  24. package/lib/engine/engine_input.js.map +1 -1
  25. package/lib/engine/engine_physics.d.ts +35 -46
  26. package/lib/engine/engine_physics.js +479 -386
  27. package/lib/engine/engine_physics.js.map +1 -1
  28. package/lib/engine/engine_physics.types.d.ts +23 -0
  29. package/lib/engine/engine_physics.types.js +27 -0
  30. package/lib/engine/engine_physics.types.js.map +1 -0
  31. package/lib/engine/engine_serialization_core.d.ts +3 -0
  32. package/lib/engine/engine_serialization_core.js +5 -0
  33. package/lib/engine/engine_serialization_core.js.map +1 -1
  34. package/lib/engine/engine_setup.d.ts +7 -1
  35. package/lib/engine/engine_setup.js +13 -3
  36. package/lib/engine/engine_setup.js.map +1 -1
  37. package/lib/engine/engine_types.d.ts +45 -26
  38. package/lib/engine/engine_types.js +24 -37
  39. package/lib/engine/engine_types.js.map +1 -1
  40. package/lib/engine/engine_util_decorator.d.ts +6 -0
  41. package/lib/engine/engine_util_decorator.js +54 -0
  42. package/lib/engine/engine_util_decorator.js.map +1 -0
  43. package/lib/engine/engine_utils.d.ts +1 -1
  44. package/lib/engine/engine_utils.js +1 -1
  45. package/lib/engine/engine_utils.js.map +1 -1
  46. package/lib/engine/extensions/NEEDLE_gameobject_data.js +2 -0
  47. package/lib/engine/extensions/NEEDLE_gameobject_data.js.map +1 -1
  48. package/lib/engine-components/Animation.d.ts +7 -5
  49. package/lib/engine-components/Animation.js +7 -7
  50. package/lib/engine-components/Animation.js.map +1 -1
  51. package/lib/engine-components/AnimatorController.js +14 -7
  52. package/lib/engine-components/AnimatorController.js.map +1 -1
  53. package/lib/engine-components/BoxHelperComponent.js +1 -0
  54. package/lib/engine-components/BoxHelperComponent.js.map +1 -1
  55. package/lib/engine-components/Camera.d.ts +1 -0
  56. package/lib/engine-components/Camera.js +20 -5
  57. package/lib/engine-components/Camera.js.map +1 -1
  58. package/lib/engine-components/CharacterController.d.ts +31 -0
  59. package/lib/engine-components/CharacterController.js +167 -0
  60. package/lib/engine-components/CharacterController.js.map +1 -0
  61. package/lib/engine-components/Collider.d.ts +16 -5
  62. package/lib/engine-components/Collider.js +45 -23
  63. package/lib/engine-components/Collider.js.map +1 -1
  64. package/lib/engine-components/Component.d.ts +6 -15
  65. package/lib/engine-components/Component.js +7 -112
  66. package/lib/engine-components/Component.js.map +1 -1
  67. package/lib/engine-components/DragControls.js +9 -6
  68. package/lib/engine-components/DragControls.js.map +1 -1
  69. package/lib/engine-components/Light.d.ts +2 -0
  70. package/lib/engine-components/Light.js +13 -2
  71. package/lib/engine-components/Light.js.map +1 -1
  72. package/lib/engine-components/NavMesh.d.ts +0 -5
  73. package/lib/engine-components/NavMesh.js +100 -10
  74. package/lib/engine-components/NavMesh.js.map +1 -1
  75. package/lib/engine-components/NestedGltf.js +2 -0
  76. package/lib/engine-components/NestedGltf.js.map +1 -1
  77. package/lib/engine-components/Renderer.js +4 -0
  78. package/lib/engine-components/Renderer.js.map +1 -1
  79. package/lib/engine-components/RigidBody.d.ts +45 -25
  80. package/lib/engine-components/RigidBody.js +290 -142
  81. package/lib/engine-components/RigidBody.js.map +1 -1
  82. package/lib/engine-components/SmoothFollow.d.ts +2 -1
  83. package/lib/engine-components/SmoothFollow.js +25 -17
  84. package/lib/engine-components/SmoothFollow.js.map +1 -1
  85. package/lib/engine-components/SpatialTrigger.js +1 -1
  86. package/lib/engine-components/SpatialTrigger.js.map +1 -1
  87. package/lib/engine-components/SpectatorCamera.d.ts +1 -0
  88. package/lib/engine-components/SpectatorCamera.js +9 -2
  89. package/lib/engine-components/SpectatorCamera.js.map +1 -1
  90. package/lib/engine-components/SpringJoint.d.ts +0 -13
  91. package/lib/engine-components/SpringJoint.js +42 -41
  92. package/lib/engine-components/SpringJoint.js.map +1 -1
  93. package/lib/engine-components/VideoPlayer.js.map +1 -1
  94. package/lib/engine-components/WebXR.d.ts +1 -0
  95. package/lib/engine-components/WebXR.js +13 -6
  96. package/lib/engine-components/WebXR.js.map +1 -1
  97. package/lib/engine-components/WebXRController.js +12 -6
  98. package/lib/engine-components/WebXRController.js.map +1 -1
  99. package/lib/engine-components/codegen/components.d.ts +4 -3
  100. package/lib/engine-components/codegen/components.js +4 -3
  101. package/lib/engine-components/codegen/components.js.map +1 -1
  102. package/package.json +3 -4
  103. package/src/engine/api.ts +2 -1
  104. package/src/engine/codegen/register_types.js +16 -12
  105. package/src/engine/debug/debug.ts +4 -0
  106. package/src/engine/dist/engine_physics.js +739 -0
  107. package/src/engine/dist/engine_setup.js +777 -0
  108. package/src/engine/engine_addressables.ts +18 -8
  109. package/src/engine/engine_element.ts +3 -2
  110. package/src/engine/engine_element_overlay.ts +4 -3
  111. package/src/engine/engine_gameobject.ts +4 -4
  112. package/src/engine/engine_input.ts +12 -3
  113. package/src/engine/engine_physics.ts +492 -418
  114. package/src/engine/engine_physics.types.ts +28 -0
  115. package/src/engine/engine_serialization_core.ts +8 -1
  116. package/src/engine/engine_setup.ts +31 -18
  117. package/src/engine/engine_types.ts +83 -56
  118. package/src/engine/engine_util_decorator.ts +69 -0
  119. package/src/engine/engine_utils.ts +3 -3
  120. package/src/engine/extensions/NEEDLE_gameobject_data.ts +2 -0
  121. package/src/engine-components/Animation.ts +18 -12
  122. package/src/engine-components/AnimatorController.ts +16 -11
  123. package/src/engine-components/BoxHelperComponent.ts +1 -0
  124. package/src/engine-components/Camera.ts +21 -4
  125. package/src/engine-components/CharacterController.ts +171 -0
  126. package/src/engine-components/Collider.ts +49 -39
  127. package/src/engine-components/Component.ts +15 -130
  128. package/src/engine-components/DragControls.ts +9 -5
  129. package/src/engine-components/Light.ts +17 -3
  130. package/src/engine-components/NavMesh.ts +114 -115
  131. package/src/engine-components/NestedGltf.ts +2 -0
  132. package/src/engine-components/Renderer.ts +5 -1
  133. package/src/engine-components/RigidBody.ts +292 -149
  134. package/src/engine-components/SmoothFollow.ts +21 -18
  135. package/src/engine-components/SpatialTrigger.ts +1 -1
  136. package/src/engine-components/SpectatorCamera.ts +10 -2
  137. package/src/engine-components/SpringJoint.ts +41 -41
  138. package/src/engine-components/VideoPlayer.ts +1 -2
  139. package/src/engine-components/WebXR.ts +15 -6
  140. package/src/engine-components/WebXRController.ts +16 -7
  141. package/src/engine-components/codegen/components.ts +4 -3
  142. package/src/engine-components/dist/CharacterController.js +123 -0
  143. package/src/engine-components/dist/RigidBody.js +458 -0
@@ -12,6 +12,7 @@ import { serializeable } from "../engine/engine_serialization_decorator";
12
12
  import { RGBAColor } from "./js-extensions/RGBAColor";
13
13
  import { PerspectiveCamera } from "three";
14
14
  import { XRSessionMode } from "../engine/engine_setup";
15
+ import { showBalloonMessage } from "../engine/debug/debug";
15
16
  export var ClearFlags;
16
17
  (function (ClearFlags) {
17
18
  ClearFlags[ClearFlags["Skybox"] = 1] = "Skybox";
@@ -111,6 +112,9 @@ export class Camera extends Behaviour {
111
112
  }
112
113
  this.applyClearFlagsIfIsActiveCamera();
113
114
  }
115
+ onDisable() {
116
+ this.context.removeCamera(this);
117
+ }
114
118
  buildCamera() {
115
119
  if (this._cam)
116
120
  return;
@@ -149,6 +153,8 @@ export class Camera extends Behaviour {
149
153
  }
150
154
  }
151
155
  applyClearFlagsIfIsActiveCamera() {
156
+ if (debug)
157
+ showBalloonMessage("apply Camera clear flags");
152
158
  if (this._cam && this.context.mainCameraComponent === this) {
153
159
  switch (this._clearFlags) {
154
160
  case ClearFlags.Skybox:
@@ -184,12 +190,21 @@ export class Camera extends Behaviour {
184
190
  if (!session)
185
191
  return false;
186
192
  const environmentBlendMode = session.environmentBlendMode;
193
+ if (debug)
194
+ showBalloonMessage("Environment blend mode: " + environmentBlendMode + " on " + navigator.userAgent);
187
195
  const transparent = environmentBlendMode === 'additive' || environmentBlendMode === 'alpha-blend';
188
- // workaround for Quest 2 returning opaque when it should be alpha-blend
189
- // check user agent if this is the Quest browser and return true if so
190
- if (environmentBlendMode === "opaque" && navigator.userAgent?.includes("OculusBrowser")) {
191
- if (this.context.xrSessionMode === XRSessionMode.ImmersiveAR)
192
- return true;
196
+ if (this.context.xrSessionMode === XRSessionMode.ImmersiveAR) {
197
+ if (environmentBlendMode === "opaque") {
198
+ // workaround for Quest 2 returning opaque when it should be alpha-blend
199
+ // check user agent if this is the Quest browser and return true if so
200
+ if (navigator.userAgent?.includes("OculusBrowser")) {
201
+ return true;
202
+ }
203
+ // Mozilla WebXR Viewer
204
+ else if (navigator.userAgent?.includes("Mozilla") && navigator.userAgent?.includes("Mobile WebXRViewer/v2")) {
205
+ return true;
206
+ }
207
+ }
193
208
  }
194
209
  return transparent;
195
210
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Camera.js","sourceRoot":"","sources":["../../../engine-components/Camera.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Camera.js","sourceRoot":"","sources":["../../../engine-components/Camera.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Vector3 } from "three";
2
+ import { Collision } from "../engine/engine_types";
3
+ import { Behaviour } from "./Component";
4
+ import { Rigidbody } from "./RigidBody";
5
+ import { Animator } from "./Animator";
6
+ export declare class CharacterController extends Behaviour {
7
+ center: Vector3;
8
+ radius: number;
9
+ height: number;
10
+ private _rigidbody;
11
+ get rigidbody(): Rigidbody;
12
+ onEnable(): void;
13
+ move(vec: Vector3): void;
14
+ private _activeGroundCollisions;
15
+ onCollisionEnter(col: Collision): void;
16
+ onCollisionExit(col: Collision): void;
17
+ get isGrounded(): boolean;
18
+ }
19
+ export declare class CharacterControllerInput extends Behaviour {
20
+ controller?: CharacterController;
21
+ movementSpeed: number;
22
+ rotationSpeed: number;
23
+ jumpForce: number;
24
+ animator?: Animator;
25
+ private _currentSpeed;
26
+ private _currentAngularSpeed;
27
+ private _temp;
28
+ private _jumpCount;
29
+ update(): void;
30
+ private _raycastOptions;
31
+ }
@@ -0,0 +1,167 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Ray, Vector3 } from "three";
8
+ import { Mathf } from "../engine/engine_math";
9
+ import { serializeable } from "../engine/engine_serialization";
10
+ import { CapsuleCollider } from "./Collider";
11
+ import { Behaviour } from "./Component";
12
+ import { Rigidbody } from "./RigidBody";
13
+ import { Animator } from "./Animator";
14
+ import { RaycastOptions } from "../engine/engine_physics";
15
+ import { getWorldPosition } from "../engine/engine_three_utils";
16
+ export class CharacterController extends Behaviour {
17
+ center = new Vector3(0, 0, 0);
18
+ radius = .5;
19
+ height = 2;
20
+ _rigidbody = null;
21
+ get rigidbody() {
22
+ if (this._rigidbody)
23
+ return this._rigidbody;
24
+ this._rigidbody = this.gameObject.getComponent(Rigidbody);
25
+ if (!this._rigidbody)
26
+ this._rigidbody = this.gameObject.addNewComponent(Rigidbody);
27
+ return this.rigidbody;
28
+ }
29
+ onEnable() {
30
+ let rb = this.rigidbody;
31
+ let collider = this.gameObject.getComponent(CapsuleCollider);
32
+ if (!collider)
33
+ collider = this.gameObject.addNewComponent(CapsuleCollider);
34
+ // rb.isKinematic = true;
35
+ collider.center.copy(this.center);
36
+ collider.radius = this.radius;
37
+ collider.height = this.height;
38
+ this.gameObject.rotation.x = 0;
39
+ this.gameObject.rotation.z = 0;
40
+ rb.lockRotationX = true;
41
+ rb.lockRotationY = true;
42
+ rb.lockRotationZ = true;
43
+ // TODO: this doesnt work yet
44
+ // setInterval(()=>{
45
+ // this.rigidbody.isKinematic = !this.rigidbody.isKinematic;
46
+ // console.log(this.rigidbody.isKinematic);
47
+ // }, 1000)
48
+ }
49
+ move(vec) {
50
+ this.gameObject.position.add(vec);
51
+ }
52
+ _activeGroundCollisions = new Set();
53
+ onCollisionEnter(col) {
54
+ for (const contact of col.contacts) {
55
+ // console.log(contact.normal);
56
+ if (contact.normal.y > .1) {
57
+ this._activeGroundCollisions.add(col);
58
+ break;
59
+ }
60
+ }
61
+ }
62
+ onCollisionExit(col) {
63
+ this._activeGroundCollisions.delete(col);
64
+ }
65
+ get isGrounded() { return this._activeGroundCollisions.size > 0; }
66
+ }
67
+ __decorate([
68
+ serializeable(Vector3)
69
+ ], CharacterController.prototype, "center", void 0);
70
+ __decorate([
71
+ serializeable()
72
+ ], CharacterController.prototype, "radius", void 0);
73
+ __decorate([
74
+ serializeable()
75
+ ], CharacterController.prototype, "height", void 0);
76
+ export class CharacterControllerInput extends Behaviour {
77
+ controller;
78
+ movementSpeed = 2;
79
+ rotationSpeed = 2;
80
+ jumpForce = 1;
81
+ animator;
82
+ _currentSpeed = new Vector3(0, 0, 0);
83
+ _currentAngularSpeed = new Vector3(0, 0, 0);
84
+ _temp = new Vector3(0, 0, 0);
85
+ _jumpCount = 0;
86
+ update() {
87
+ if (this.controller?.isGrounded) {
88
+ this._jumpCount = 0;
89
+ this.animator?.SetBool("doubleJump", false);
90
+ }
91
+ const forward = this.context.input.isKeyPressed("w");
92
+ const backward = this.context.input.isKeyPressed("s");
93
+ const rotateLeft = this.context.input.isKeyPressed("a");
94
+ const rotateRight = this.context.input.isKeyPressed("d");
95
+ const jump = this.context.input.isKeyDown(" ");
96
+ // if (jumpDown) this._jumpDownTime = this.context.time.time;
97
+ // const jumpUp = this.context.input.isKeyUp(" ");
98
+ const step = forward ? 1 : 0 + backward ? -1 : 0;
99
+ this._currentSpeed.z += step * this.movementSpeed * this.context.time.deltaTime;
100
+ // if (!this.controller || this.controller.isGrounded)
101
+ this.animator?.SetBool("running", step != 0);
102
+ this.animator?.SetBool("jumping", this.controller?.isGrounded === true && jump);
103
+ this._temp.copy(this._currentSpeed);
104
+ this._temp.applyQuaternion(this.gameObject.quaternion);
105
+ if (this.controller)
106
+ this.controller.move(this._temp);
107
+ else
108
+ this.gameObject.position.add(this._temp);
109
+ const rotation = rotateLeft ? 1 : 0 + rotateRight ? -1 : 0;
110
+ this._currentAngularSpeed.y += Mathf.toRadians(rotation * this.rotationSpeed) * this.context.time.deltaTime;
111
+ this.gameObject.rotateY(this._currentAngularSpeed.y);
112
+ this._currentSpeed.multiplyScalar(1 - this.context.time.deltaTime * 10);
113
+ this._currentAngularSpeed.y *= 1 - this.context.time.deltaTime * 10;
114
+ if (this.controller && jump && this.jumpForce > 0) {
115
+ let canJump = this.controller?.isGrounded;
116
+ if (!this.controller?.isGrounded && this._jumpCount === 1) {
117
+ canJump = true;
118
+ this.animator?.SetBool("doubleJump", true);
119
+ }
120
+ if (canJump) {
121
+ this._jumpCount += 1;
122
+ // TODO: factor in mass
123
+ const rb = this.controller.rigidbody;
124
+ // const fullJumpHoldLength = .1;
125
+ const factor = this._jumpCount === 2 ? 2 : 1; // Mathf.clamp((this.context.time.time - this._jumpDownTime), 0, fullJumpHoldLength) / fullJumpHoldLength;
126
+ rb.applyImpulse(new Vector3(0, 1, 0).multiplyScalar(this.jumpForce * factor));
127
+ }
128
+ }
129
+ if (this.controller) {
130
+ // TODO: should probably raycast to the ground or check if we're still in the jump animation
131
+ const verticalSpeed = this.controller?.rigidbody.getVelocity().y;
132
+ if (verticalSpeed < -1) {
133
+ if (!this._raycastOptions.ray)
134
+ this._raycastOptions.ray = new Ray();
135
+ this._raycastOptions.ray.origin.copy(getWorldPosition(this.gameObject));
136
+ this._raycastOptions.ray.direction.set(0, -1, 0);
137
+ const currentLayer = this.layer;
138
+ this.gameObject.layers.disableAll();
139
+ this.gameObject.layers.set(2);
140
+ const hits = this.context.physics.raycast(this._raycastOptions);
141
+ this.gameObject.layers.set(currentLayer);
142
+ if ((hits.length && hits[0].distance > 2 || verticalSpeed < -10)) {
143
+ this.animator?.SetBool("falling", true);
144
+ }
145
+ }
146
+ else
147
+ this.animator?.SetBool("falling", false);
148
+ }
149
+ }
150
+ _raycastOptions = new RaycastOptions();
151
+ }
152
+ __decorate([
153
+ serializeable(CharacterController)
154
+ ], CharacterControllerInput.prototype, "controller", void 0);
155
+ __decorate([
156
+ serializeable()
157
+ ], CharacterControllerInput.prototype, "movementSpeed", void 0);
158
+ __decorate([
159
+ serializeable()
160
+ ], CharacterControllerInput.prototype, "rotationSpeed", void 0);
161
+ __decorate([
162
+ serializeable()
163
+ ], CharacterControllerInput.prototype, "jumpForce", void 0);
164
+ __decorate([
165
+ serializeable(Animator)
166
+ ], CharacterControllerInput.prototype, "animator", void 0);
167
+ //# sourceMappingURL=CharacterController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterController.js","sourceRoot":"","sources":["../../../engine-components/CharacterController.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  import { Behaviour } from "./Component";
2
2
  import { Rigidbody } from "./RigidBody";
3
- import { Shape } from "cannon-es";
3
+ import { Mesh, Vector3 } from "three";
4
4
  import { ICollider } from "../engine/engine_types";
5
5
  export declare class Collider extends Behaviour implements ICollider {
6
6
  get isCollider(): any;
7
7
  attachedRigidbody: Rigidbody | null;
8
8
  isTrigger: boolean;
9
- protected _shape: Shape | null;
10
9
  awake(): void;
11
10
  start(): void;
12
11
  onEnable(): void;
@@ -14,11 +13,23 @@ export declare class Collider extends Behaviour implements ICollider {
14
13
  }
15
14
  export declare class SphereCollider extends Collider {
16
15
  radius: number;
17
- center: THREE.Vector3;
16
+ center: Vector3;
18
17
  onEnable(): void;
19
18
  }
20
19
  export declare class BoxCollider extends Collider {
21
- size: THREE.Vector3;
22
- center: THREE.Vector3;
20
+ size: Vector3;
21
+ center: Vector3;
22
+ onEnable(): void;
23
+ }
24
+ export declare class MeshCollider extends Collider {
25
+ sharedMesh?: Mesh;
26
+ convex: boolean;
27
+ awake(): void;
28
+ onEnable(): void;
29
+ }
30
+ export declare class CapsuleCollider extends Collider {
31
+ center: Vector3;
32
+ radius: number;
33
+ height: number;
23
34
  onEnable(): void;
24
35
  }
@@ -7,25 +7,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Behaviour } from "./Component";
8
8
  import { Rigidbody } from "./RigidBody";
9
9
  import { serializeable } from "../engine/engine_serialization_decorator";
10
- import { Vector3 } from "three";
11
- import { registerColliderProvider } from "../engine/engine_physics";
12
- import { getComponentInChildren } from "../engine/engine_components";
13
- class ColliderProvider {
14
- getCollider(obj) {
15
- return getComponentInChildren(obj, Collider);
16
- }
17
- }
18
- registerColliderProvider(new ColliderProvider());
10
+ import { Mesh, Vector3 } from "three";
19
11
  export class Collider extends Behaviour {
20
12
  get isCollider() {
21
13
  return true;
22
14
  }
23
15
  attachedRigidbody = null;
24
16
  isTrigger = false;
25
- _shape = null;
26
17
  awake() {
27
18
  super.awake();
28
- this._shape = null;
19
+ if (!this.attachedRigidbody)
20
+ this.attachedRigidbody = this.gameObject.getComponentInParent(Rigidbody);
29
21
  }
30
22
  start() {
31
23
  if (!this.attachedRigidbody)
@@ -37,8 +29,7 @@ export class Collider extends Behaviour {
37
29
  this.attachedRigidbody = this.gameObject.getComponentInParent(Rigidbody);
38
30
  }
39
31
  onDisable() {
40
- if (this._shape) {
41
- }
32
+ this.context.physics.removeBody(this);
42
33
  }
43
34
  }
44
35
  __decorate([
@@ -52,8 +43,7 @@ export class SphereCollider extends Collider {
52
43
  center = new Vector3(0, 0, 0);
53
44
  onEnable() {
54
45
  super.onEnable();
55
- if (!this._shape)
56
- this._shape = this.context.physics.addSphereCollider(this.gameObject, this.center, this.radius, this.attachedRigidbody);
46
+ this.context.physics.addSphereCollider(this, this.center, this.radius);
57
47
  }
58
48
  }
59
49
  __decorate([
@@ -67,8 +57,7 @@ export class BoxCollider extends Collider {
67
57
  center = new Vector3(0, 0, 0);
68
58
  onEnable() {
69
59
  super.onEnable();
70
- if (!this._shape)
71
- this._shape = this.context.physics.addBoxCollider(this.gameObject, this.isTrigger, this.center, this.size, this.attachedRigidbody);
60
+ this.context.physics.addBoxCollider(this, this.center, this.size);
72
61
  }
73
62
  }
74
63
  __decorate([
@@ -77,10 +66,43 @@ __decorate([
77
66
  __decorate([
78
67
  serializeable(Vector3)
79
68
  ], BoxCollider.prototype, "center", void 0);
80
- // export class MeshCollider extends Collider {
81
- // onEnable() {
82
- // if (this.enabled)
83
- // this.context.physics.addMeshCollider(this.gameObject);
84
- // }
85
- // }
69
+ export class MeshCollider extends Collider {
70
+ sharedMesh;
71
+ convex = false;
72
+ awake() {
73
+ console.log(this);
74
+ }
75
+ onEnable() {
76
+ super.onEnable();
77
+ if (!this.sharedMesh?.isMesh) {
78
+ // HACK using the renderer mesh
79
+ if (this.gameObject instanceof Mesh) {
80
+ this.sharedMesh = this.gameObject;
81
+ }
82
+ }
83
+ if (this.sharedMesh?.isMesh)
84
+ this.context.physics.addMeshCollider(this, this.sharedMesh, this.convex);
85
+ }
86
+ }
87
+ __decorate([
88
+ serializeable()
89
+ ], MeshCollider.prototype, "convex", void 0);
90
+ export class CapsuleCollider extends Collider {
91
+ center = new Vector3(0, 0, 0);
92
+ radius = .5;
93
+ height = 2;
94
+ onEnable() {
95
+ super.onEnable();
96
+ this.context.physics.addCapsuleCollider(this, this.center, this.height, this.radius);
97
+ }
98
+ }
99
+ __decorate([
100
+ serializeable(Vector3)
101
+ ], CapsuleCollider.prototype, "center", void 0);
102
+ __decorate([
103
+ serializeable()
104
+ ], CapsuleCollider.prototype, "radius", void 0);
105
+ __decorate([
106
+ serializeable()
107
+ ], CapsuleCollider.prototype, "height", void 0);
86
108
  //# sourceMappingURL=Collider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Collider.js","sourceRoot":"","sources":["../../../engine-components/Collider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Collider.js","sourceRoot":"","sources":["../../../engine-components/Collider.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as THREE from "three";
2
2
  import { Context, FrameEvent } from "../engine/engine_setup";
3
3
  import { Object3D } from "three";
4
- import { ConstructorConcrete, SourceIdentifier, IComponent, IGameObject, Constructor, GuidsMap, Collision } from "../engine/engine_types";
4
+ import { ConstructorConcrete, SourceIdentifier, IComponent, IGameObject, Constructor, GuidsMap, Collision, ICollider } from "../engine/engine_types";
5
5
  import { InstantiateOptions, HideFlags } from "../engine/engine_gameobject";
6
6
  declare abstract class GameObject extends THREE.Object3D implements THREE.Object3D, IGameObject {
7
7
  guid: string | undefined;
@@ -77,6 +77,7 @@ declare class Component implements IComponent, EventTarget {
77
77
  onEnable(): void;
78
78
  onDisable(): void;
79
79
  onDestroy(): void;
80
+ onValidate?(prop?: string): void;
80
81
  start?(): void;
81
82
  earlyUpdate?(): void;
82
83
  update?(): void;
@@ -85,11 +86,10 @@ declare class Component implements IComponent, EventTarget {
85
86
  onAfterRender?(): void;
86
87
  onCollisionEnter?(col: Collision): any;
87
88
  onCollisionExit?(col: Collision): any;
88
- onCollisionExitRaw?(col: Collision): any;
89
89
  onCollisionStay?(col: Collision): any;
90
- onTriggerEnter?(col: Collision): any;
91
- onTriggerStay?(col: Collision): any;
92
- onTriggerExit?(col: Collision): any;
90
+ onTriggerEnter?(col: ICollider): any;
91
+ onTriggerStay?(col: ICollider): any;
92
+ onTriggerExit?(col: ICollider): any;
93
93
  startCoroutine(routine: Generator, evt?: FrameEvent): Generator;
94
94
  stopCoroutine(routine: Generator, evt?: FrameEvent): void;
95
95
  get destroyed(): boolean;
@@ -100,6 +100,7 @@ declare class Component implements IComponent, EventTarget {
100
100
  protected __isEnabled: boolean | undefined;
101
101
  private __destroyed;
102
102
  get __internalDidAwakeAndStart(): boolean;
103
+ constructor();
103
104
  __internalNewInstanceCreated(): void;
104
105
  __internalAwake(): void;
105
106
  __internalStart(): void;
@@ -108,16 +109,6 @@ declare class Component implements IComponent, EventTarget {
108
109
  __internalDestroy(): void;
109
110
  get enabled(): boolean;
110
111
  set enabled(val: boolean);
111
- constructor();
112
- private _collisionExitRoutine;
113
- private _collisions;
114
- private _triggerExitRoutine;
115
- private _triggerCollisions;
116
- get collisionsCount(): number;
117
- private __internalResetsCachedPhysicsData;
118
- __internalHandleCollision(col: Collision, isTriggerCollision: boolean): void;
119
- __internalHandleExitCollisionEvent(obj: Object3D, isTriggerCollision: boolean): void;
120
- private __waitForCollisionExit;
121
112
  private static _worldPositionBuffer;
122
113
  private static _worldQuaternionBuffer;
123
114
  private static _worldEulerBuffer;