@aura3d/engine 1.0.3 → 1.0.6

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 (210) hide show
  1. package/README.md +338 -14
  2. package/dist/animation/AnimationClipEvents.d.ts +57 -0
  3. package/dist/animation/AnimationClipEvents.d.ts.map +1 -0
  4. package/dist/animation/AnimationClipEvents.js +171 -0
  5. package/dist/animation/AnimationClipEvents.js.map +1 -0
  6. package/dist/animation/AnimationClipRegistry.d.ts +76 -0
  7. package/dist/animation/AnimationClipRegistry.d.ts.map +1 -0
  8. package/dist/animation/AnimationClipRegistry.js +130 -0
  9. package/dist/animation/AnimationClipRegistry.js.map +1 -0
  10. package/dist/animation/AnimationController.d.ts +168 -0
  11. package/dist/animation/AnimationController.d.ts.map +1 -0
  12. package/dist/animation/AnimationController.js +619 -0
  13. package/dist/animation/AnimationController.js.map +1 -0
  14. package/dist/animation/AnimationStateGraph.d.ts +2 -0
  15. package/dist/animation/AnimationStateGraph.d.ts.map +1 -0
  16. package/dist/animation/AnimationStateGraph.js +2 -0
  17. package/dist/animation/AnimationStateGraph.js.map +1 -0
  18. package/dist/animation/AnimationStateMachine.d.ts +16 -0
  19. package/dist/animation/AnimationStateMachine.d.ts.map +1 -1
  20. package/dist/animation/AnimationStateMachine.js +69 -7
  21. package/dist/animation/AnimationStateMachine.js.map +1 -1
  22. package/dist/animation/HumanoidRetargeting.d.ts +76 -0
  23. package/dist/animation/HumanoidRetargeting.d.ts.map +1 -0
  24. package/dist/animation/HumanoidRetargeting.js +331 -0
  25. package/dist/animation/HumanoidRetargeting.js.map +1 -0
  26. package/dist/animation/browser-index.d.ts +18 -0
  27. package/dist/animation/browser-index.d.ts.map +1 -1
  28. package/dist/animation/browser-index.js +13 -0
  29. package/dist/animation/browser-index.js.map +1 -1
  30. package/dist/animation/index.d.ts +17 -1
  31. package/dist/animation/index.d.ts.map +1 -1
  32. package/dist/animation/index.js +12 -1
  33. package/dist/animation/index.js.map +1 -1
  34. package/dist/animation/threejs-compatibility/AnimationDiagnostics.d.ts.map +1 -1
  35. package/dist/animation/threejs-compatibility/AnimationDiagnostics.js +3 -5
  36. package/dist/animation/threejs-compatibility/AnimationDiagnostics.js.map +1 -1
  37. package/dist/assets/GLTFAnimationRuntime.js +1 -1
  38. package/dist/assets/GLTFLoader.js +1 -1
  39. package/dist/aura3d-cli/cli.js +225 -8
  40. package/dist/aura3d-cli/cli.js.map +1 -1
  41. package/dist/aura3d-cli/index.d.ts +283 -3
  42. package/dist/aura3d-cli/index.d.ts.map +1 -1
  43. package/dist/aura3d-cli/index.js +1028 -4
  44. package/dist/aura3d-cli/index.js.map +1 -1
  45. package/dist/aura3d-cli/pull-bridge.d.ts +108 -0
  46. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -0
  47. package/dist/aura3d-cli/pull-bridge.js +333 -0
  48. package/dist/aura3d-cli/pull-bridge.js.map +1 -0
  49. package/dist/create-aura3d/index.d.ts +1 -1
  50. package/dist/create-aura3d/index.d.ts.map +1 -1
  51. package/dist/create-aura3d/index.js +9 -2
  52. package/dist/create-aura3d/index.js.map +1 -1
  53. package/dist/editor-runtime/ProjectSerializer.d.ts +74 -1
  54. package/dist/editor-runtime/ProjectSerializer.d.ts.map +1 -1
  55. package/dist/editor-runtime/ProjectSerializer.js +123 -6
  56. package/dist/editor-runtime/ProjectSerializer.js.map +1 -1
  57. package/dist/editor-runtime/TimelineModel.d.ts +18 -0
  58. package/dist/editor-runtime/TimelineModel.d.ts.map +1 -1
  59. package/dist/editor-runtime/TimelineModel.js +67 -3
  60. package/dist/editor-runtime/TimelineModel.js.map +1 -1
  61. package/dist/editor-runtime/TimelineRuntimeBridge.d.ts +98 -0
  62. package/dist/editor-runtime/TimelineRuntimeBridge.d.ts.map +1 -0
  63. package/dist/editor-runtime/TimelineRuntimeBridge.js +186 -0
  64. package/dist/editor-runtime/TimelineRuntimeBridge.js.map +1 -0
  65. package/dist/editor-runtime/index.d.ts +3 -1
  66. package/dist/editor-runtime/index.d.ts.map +1 -1
  67. package/dist/editor-runtime/index.js +1 -0
  68. package/dist/editor-runtime/index.js.map +1 -1
  69. package/dist/engine/agent-api/AnimationController.d.ts +607 -0
  70. package/dist/engine/agent-api/AnimationController.d.ts.map +1 -0
  71. package/dist/engine/agent-api/AnimationController.js +2192 -0
  72. package/dist/engine/agent-api/AnimationController.js.map +1 -0
  73. package/dist/engine/agent-api/AssetEvidence.d.ts +88 -0
  74. package/dist/engine/agent-api/AssetEvidence.d.ts.map +1 -0
  75. package/dist/engine/agent-api/AssetEvidence.js +157 -0
  76. package/dist/engine/agent-api/AssetEvidence.js.map +1 -0
  77. package/dist/engine/agent-api/AuraAppHandle.d.ts +55 -0
  78. package/dist/engine/agent-api/AuraAppHandle.d.ts.map +1 -0
  79. package/dist/engine/agent-api/AuraAppHandle.js +15 -0
  80. package/dist/engine/agent-api/AuraAppHandle.js.map +1 -0
  81. package/dist/engine/agent-api/AuraVoiceBridge.d.ts +96 -0
  82. package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -0
  83. package/dist/engine/agent-api/AuraVoiceBridge.js +370 -0
  84. package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -0
  85. package/dist/engine/agent-api/CartoonDirector.d.ts +95 -0
  86. package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
  87. package/dist/engine/agent-api/CartoonDirector.js +342 -0
  88. package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
  89. package/dist/engine/agent-api/CartoonPerformance.d.ts +149 -0
  90. package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
  91. package/dist/engine/agent-api/CartoonPerformance.js +317 -0
  92. package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
  93. package/dist/engine/agent-api/CartoonRenderQueue.d.ts +132 -0
  94. package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
  95. package/dist/engine/agent-api/CartoonRenderQueue.js +385 -0
  96. package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
  97. package/dist/engine/agent-api/CharacterAssembly.d.ts +126 -0
  98. package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -0
  99. package/dist/engine/agent-api/CharacterAssembly.js +280 -0
  100. package/dist/engine/agent-api/CharacterAssembly.js.map +1 -0
  101. package/dist/engine/agent-api/DialoguePerformance.d.ts +150 -0
  102. package/dist/engine/agent-api/DialoguePerformance.d.ts.map +1 -0
  103. package/dist/engine/agent-api/DialoguePerformance.js +335 -0
  104. package/dist/engine/agent-api/DialoguePerformance.js.map +1 -0
  105. package/dist/engine/agent-api/FrameLoop.d.ts +70 -0
  106. package/dist/engine/agent-api/FrameLoop.d.ts.map +1 -0
  107. package/dist/engine/agent-api/FrameLoop.js +165 -0
  108. package/dist/engine/agent-api/FrameLoop.js.map +1 -0
  109. package/dist/engine/agent-api/GameAppRuntime.d.ts +62 -0
  110. package/dist/engine/agent-api/GameAppRuntime.d.ts.map +1 -0
  111. package/dist/engine/agent-api/GameAppRuntime.js +189 -0
  112. package/dist/engine/agent-api/GameAppRuntime.js.map +1 -0
  113. package/dist/engine/agent-api/GameAssetValidation.d.ts +279 -0
  114. package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -0
  115. package/dist/engine/agent-api/GameAssetValidation.js +719 -0
  116. package/dist/engine/agent-api/GameAssetValidation.js.map +1 -0
  117. package/dist/engine/agent-api/GameEvidence.d.ts +148 -0
  118. package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -0
  119. package/dist/engine/agent-api/GameEvidence.js +269 -0
  120. package/dist/engine/agent-api/GameEvidence.js.map +1 -0
  121. package/dist/engine/agent-api/GameRuntime.d.ts +931 -0
  122. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -0
  123. package/dist/engine/agent-api/GameRuntime.js +2229 -0
  124. package/dist/engine/agent-api/GameRuntime.js.map +1 -0
  125. package/dist/engine/agent-api/GameSceneBridge.d.ts +54 -0
  126. package/dist/engine/agent-api/GameSceneBridge.d.ts.map +1 -0
  127. package/dist/engine/agent-api/GameSceneBridge.js +110 -0
  128. package/dist/engine/agent-api/GameSceneBridge.js.map +1 -0
  129. package/dist/engine/agent-api/PromptAnimationContract.d.ts +278 -0
  130. package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -0
  131. package/dist/engine/agent-api/PromptAnimationContract.js +238 -0
  132. package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -0
  133. package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +183 -0
  134. package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -0
  135. package/dist/engine/agent-api/PromptAnimationEvidence.js +454 -0
  136. package/dist/engine/agent-api/PromptAnimationEvidence.js.map +1 -0
  137. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +100 -0
  138. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -0
  139. package/dist/engine/agent-api/RuntimeNodeHandle.js +36 -0
  140. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -0
  141. package/dist/engine/agent-api/ShotTimeline.d.ts +179 -0
  142. package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -0
  143. package/dist/engine/agent-api/ShotTimeline.js +264 -0
  144. package/dist/engine/agent-api/ShotTimeline.js.map +1 -0
  145. package/dist/engine/agent-api/VisemeController.d.ts +89 -0
  146. package/dist/engine/agent-api/VisemeController.d.ts.map +1 -0
  147. package/dist/engine/agent-api/VisemeController.js +207 -0
  148. package/dist/engine/agent-api/VisemeController.js.map +1 -0
  149. package/dist/engine/agent-api/game-kits/fighting.d.ts +123 -0
  150. package/dist/engine/agent-api/game-kits/fighting.d.ts.map +1 -0
  151. package/dist/engine/agent-api/game-kits/fighting.js +483 -0
  152. package/dist/engine/agent-api/game-kits/fighting.js.map +1 -0
  153. package/dist/engine/agent-api/game-kits/index.d.ts +15 -0
  154. package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -0
  155. package/dist/engine/agent-api/game-kits/index.js +6 -0
  156. package/dist/engine/agent-api/game-kits/index.js.map +1 -0
  157. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -0
  158. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts.map +1 -1
  159. package/dist/engine/agent-api/index.d.ts +495 -1
  160. package/dist/engine/agent-api/index.d.ts.map +1 -1
  161. package/dist/engine/agent-api/index.js +752 -6
  162. package/dist/engine/agent-api/index.js.map +1 -1
  163. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  164. package/dist/index.d.ts +1 -0
  165. package/dist/index.js +1 -0
  166. package/dist/physics/CollisionVolumes.d.ts +57 -0
  167. package/dist/physics/CollisionVolumes.d.ts.map +1 -0
  168. package/dist/physics/CollisionVolumes.js +159 -0
  169. package/dist/physics/CollisionVolumes.js.map +1 -0
  170. package/dist/physics/HitboxWorld.d.ts +250 -0
  171. package/dist/physics/HitboxWorld.d.ts.map +1 -0
  172. package/dist/physics/HitboxWorld.js +771 -0
  173. package/dist/physics/HitboxWorld.js.map +1 -0
  174. package/dist/physics/KinematicBody.d.ts +157 -0
  175. package/dist/physics/KinematicBody.d.ts.map +1 -0
  176. package/dist/physics/KinematicBody.js +405 -0
  177. package/dist/physics/KinematicBody.js.map +1 -0
  178. package/dist/physics/KinematicWorld.d.ts +58 -0
  179. package/dist/physics/KinematicWorld.d.ts.map +1 -0
  180. package/dist/physics/KinematicWorld.js +246 -0
  181. package/dist/physics/KinematicWorld.js.map +1 -0
  182. package/dist/physics/index.d.ts +4 -0
  183. package/dist/physics/index.d.ts.map +1 -1
  184. package/dist/physics/index.js +4 -0
  185. package/dist/physics/index.js.map +1 -1
  186. package/dist/rendering/ForwardPass.js +2 -2
  187. package/dist/rendering/ShaderLibrary.js +2 -2
  188. package/dist/rendering/SkinnedLitMaterial.js +3 -3
  189. package/dist/rendering/SkinnedUnlitMaterial.js +3 -3
  190. package/dist/scene/Renderable.js +2 -2
  191. package/dist/scripting/VisualGraph.d.ts +2 -1
  192. package/dist/scripting/VisualGraph.d.ts.map +1 -1
  193. package/dist/scripting/VisualGraph.js +118 -1
  194. package/dist/scripting/VisualGraph.js.map +1 -1
  195. package/dist/scripting/VisualGraphContext.d.ts +123 -0
  196. package/dist/scripting/VisualGraphContext.d.ts.map +1 -0
  197. package/dist/scripting/VisualGraphContext.js +2 -0
  198. package/dist/scripting/VisualGraphContext.js.map +1 -0
  199. package/dist/scripting/VisualGraphExecutor.d.ts +6 -1
  200. package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
  201. package/dist/scripting/VisualGraphExecutor.js +364 -7
  202. package/dist/scripting/VisualGraphExecutor.js.map +1 -1
  203. package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
  204. package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
  205. package/dist/scripting/VisualNodeCatalog.js +61 -1
  206. package/dist/scripting/VisualNodeCatalog.js.map +1 -1
  207. package/dist/scripting/index.d.ts +1 -0
  208. package/dist/scripting/index.d.ts.map +1 -1
  209. package/dist/scripting/index.js.map +1 -1
  210. package/package.json +203 -118
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HitboxWorld.js","sourceRoot":"","sources":["../../../../packages/physics/src/HitboxWorld.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import { type CombatFacing, type CollisionVolume, type CollisionOwnerId, type ResolvedCollisionVolume } from "./CollisionVolumes.js";
2
+ import { type Vec3 } from "./Shape.js";
3
+ export type KinematicBodyId = CollisionOwnerId;
4
+ export type KinematicBounds = {
5
+ readonly minX?: number;
6
+ readonly maxX?: number;
7
+ readonly minY?: number;
8
+ readonly maxY?: number;
9
+ readonly minZ?: number;
10
+ readonly maxZ?: number;
11
+ };
12
+ export type KinematicMoveInput = {
13
+ readonly x?: number;
14
+ readonly z?: number;
15
+ };
16
+ export type KinematicBodyDescriptor = {
17
+ readonly id?: KinematicBodyId;
18
+ readonly position?: Vec3;
19
+ readonly velocity?: Vec3;
20
+ readonly facing?: CombatFacing;
21
+ readonly halfExtents?: Vec3;
22
+ readonly maxSpeed?: number;
23
+ readonly acceleration?: number;
24
+ readonly airAcceleration?: number;
25
+ readonly groundFriction?: number;
26
+ readonly airFriction?: number;
27
+ readonly gravity?: number;
28
+ readonly jumpSpeed?: number;
29
+ readonly maxFallSpeed?: number;
30
+ readonly dashSpeed?: number;
31
+ readonly dashDuration?: number;
32
+ readonly dashCooldown?: number;
33
+ readonly groundY?: number;
34
+ readonly groundSnapDistance?: number;
35
+ readonly bounds?: KinematicBounds;
36
+ readonly lockDepth?: boolean;
37
+ readonly laneZ?: number;
38
+ readonly laneHalfWidth?: number;
39
+ readonly pushbox?: CollisionVolume;
40
+ readonly tags?: readonly string[];
41
+ };
42
+ export type KinematicStepOptions = {
43
+ readonly gravity?: number;
44
+ readonly groundY?: number;
45
+ readonly groundSnapDistance?: number;
46
+ readonly bounds?: KinematicBounds;
47
+ readonly lockDepth?: boolean;
48
+ readonly laneZ?: number;
49
+ readonly laneHalfWidth?: number;
50
+ };
51
+ export type KnockbackOptions = {
52
+ readonly mode?: "add" | "set";
53
+ readonly clearDash?: boolean;
54
+ readonly forceAirborne?: boolean;
55
+ };
56
+ export type KinematicBodySnapshot = {
57
+ readonly id: KinematicBodyId;
58
+ readonly position: Vec3;
59
+ readonly previousPosition: Vec3;
60
+ readonly velocity: Vec3;
61
+ readonly facing: CombatFacing;
62
+ readonly grounded: boolean;
63
+ readonly moveInput: Vec3;
64
+ readonly halfExtents: Vec3;
65
+ readonly dashFramesRemaining: number;
66
+ readonly dashCooldownRemaining: number;
67
+ readonly tags: readonly string[];
68
+ };
69
+ export type KinematicBodyEvent = {
70
+ readonly type: "jump";
71
+ readonly bodyId: KinematicBodyId;
72
+ readonly position: Vec3;
73
+ readonly velocity: Vec3;
74
+ } | {
75
+ readonly type: "dash";
76
+ readonly bodyId: KinematicBodyId;
77
+ readonly direction: CombatFacing;
78
+ readonly position: Vec3;
79
+ readonly velocity: Vec3;
80
+ readonly duration: number;
81
+ } | {
82
+ readonly type: "land";
83
+ readonly bodyId: KinematicBodyId;
84
+ readonly position: Vec3;
85
+ readonly impactSpeed: number;
86
+ } | {
87
+ readonly type: "bounds";
88
+ readonly bodyId: KinematicBodyId;
89
+ readonly axes: readonly ("x" | "y" | "z")[];
90
+ readonly position: Vec3;
91
+ } | {
92
+ readonly type: "ground-snap";
93
+ readonly bodyId: KinematicBodyId;
94
+ readonly position: Vec3;
95
+ } | {
96
+ readonly type: "knockback";
97
+ readonly bodyId: KinematicBodyId;
98
+ readonly impulse: Vec3;
99
+ readonly velocity: Vec3;
100
+ };
101
+ export declare class KinematicBody {
102
+ readonly id: KinematicBodyId;
103
+ readonly halfExtents: Vec3;
104
+ readonly maxSpeed: number;
105
+ readonly acceleration: number;
106
+ readonly airAcceleration: number;
107
+ readonly groundFriction: number;
108
+ readonly airFriction: number;
109
+ readonly gravity: number;
110
+ readonly jumpSpeed: number;
111
+ readonly maxFallSpeed: number;
112
+ readonly dashSpeed: number;
113
+ readonly dashDuration: number;
114
+ readonly dashCooldown: number;
115
+ readonly groundY: number;
116
+ readonly groundSnapDistance: number;
117
+ readonly bounds: KinematicBounds | undefined;
118
+ readonly lockDepth: boolean;
119
+ readonly laneZ: number;
120
+ readonly laneHalfWidth: number | undefined;
121
+ readonly tags: readonly string[];
122
+ position: [number, number, number];
123
+ previousPosition: [number, number, number];
124
+ velocity: [number, number, number];
125
+ facing: CombatFacing;
126
+ grounded: boolean;
127
+ private pushboxVolume;
128
+ private moveInput;
129
+ private jumpQueued;
130
+ private dashQueued;
131
+ private queuedDashDirection;
132
+ private dashTimeRemaining;
133
+ private dashCooldownRemaining;
134
+ private readonly pendingEvents;
135
+ constructor(id: KinematicBodyId, descriptor?: KinematicBodyDescriptor);
136
+ constructor(descriptor?: KinematicBodyDescriptor);
137
+ setMoveInput(input: KinematicMoveInput | number, z?: number): void;
138
+ move(input: KinematicMoveInput | number, z?: number): void;
139
+ queueJump(): void;
140
+ jump(): void;
141
+ queueDash(direction?: number): void;
142
+ dash(direction?: number): void;
143
+ applyKnockback(impulse: Vec3, options?: KnockbackOptions): void;
144
+ setPosition(position: Vec3): void;
145
+ translate(delta: Vec3): void;
146
+ setVelocity(velocity: Vec3): void;
147
+ setFacing(facing: number): void;
148
+ setPushbox(volume: CollisionVolume): void;
149
+ resolvedPushbox(): ResolvedCollisionVolume;
150
+ step(dt: number, options?: KinematicStepOptions): readonly KinematicBodyEvent[];
151
+ constrain(options?: KinematicStepOptions): readonly KinematicBodyEvent[];
152
+ stopAxis(axis: "x" | "y" | "z"): void;
153
+ snapshot(): KinematicBodySnapshot;
154
+ private applyConstraints;
155
+ private drainPendingEvents;
156
+ }
157
+ //# sourceMappingURL=KinematicBody.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KinematicBody.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/KinematicBody.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,405 @@
1
+ import { normalizeFacing, pushbox, resolveCollisionVolume, withVolumeOwner } from "./CollisionVolumes.js";
2
+ import { cloneVec3, validateFiniteVec3 } from "./Shape.js";
3
+ export class KinematicBody {
4
+ id;
5
+ halfExtents;
6
+ maxSpeed;
7
+ acceleration;
8
+ airAcceleration;
9
+ groundFriction;
10
+ airFriction;
11
+ gravity;
12
+ jumpSpeed;
13
+ maxFallSpeed;
14
+ dashSpeed;
15
+ dashDuration;
16
+ dashCooldown;
17
+ groundY;
18
+ groundSnapDistance;
19
+ bounds;
20
+ lockDepth;
21
+ laneZ;
22
+ laneHalfWidth;
23
+ tags;
24
+ position;
25
+ previousPosition;
26
+ velocity;
27
+ facing;
28
+ grounded;
29
+ pushboxVolume;
30
+ moveInput = [0, 0];
31
+ jumpQueued = false;
32
+ dashQueued = false;
33
+ queuedDashDirection = null;
34
+ dashTimeRemaining = 0;
35
+ dashCooldownRemaining = 0;
36
+ pendingEvents = [];
37
+ constructor(idOrDescriptor = 1, descriptor = {}) {
38
+ const resolvedDescriptor = isDescriptor(idOrDescriptor) ? idOrDescriptor : descriptor;
39
+ const resolvedId = isDescriptor(idOrDescriptor) ? resolvedDescriptor.id ?? 1 : idOrDescriptor;
40
+ validateBodyId(resolvedId);
41
+ this.id = resolvedId;
42
+ this.halfExtents = cloneVec3(resolvedDescriptor.halfExtents ?? [0.35, 0.9, 0.3]);
43
+ validatePositiveVec3(this.halfExtents, "kinematic body halfExtents");
44
+ this.maxSpeed = finiteNonNegative(resolvedDescriptor.maxSpeed ?? 4.5, "kinematic maxSpeed");
45
+ this.acceleration = finiteNonNegative(resolvedDescriptor.acceleration ?? 48, "kinematic acceleration");
46
+ this.airAcceleration = finiteNonNegative(resolvedDescriptor.airAcceleration ?? 22, "kinematic airAcceleration");
47
+ this.groundFriction = finiteNonNegative(resolvedDescriptor.groundFriction ?? 52, "kinematic groundFriction");
48
+ this.airFriction = finiteNonNegative(resolvedDescriptor.airFriction ?? 4, "kinematic airFriction");
49
+ this.gravity = finiteNonNegative(Math.abs(resolvedDescriptor.gravity ?? 24), "kinematic gravity");
50
+ this.jumpSpeed = finiteNonNegative(resolvedDescriptor.jumpSpeed ?? 8.5, "kinematic jumpSpeed");
51
+ this.maxFallSpeed = finiteNonNegative(resolvedDescriptor.maxFallSpeed ?? 18, "kinematic maxFallSpeed");
52
+ this.dashSpeed = finiteNonNegative(resolvedDescriptor.dashSpeed ?? 8.25, "kinematic dashSpeed");
53
+ this.dashDuration = finiteNonNegative(resolvedDescriptor.dashDuration ?? 0.14, "kinematic dashDuration");
54
+ this.dashCooldown = finiteNonNegative(resolvedDescriptor.dashCooldown ?? 0.18, "kinematic dashCooldown");
55
+ this.groundY = finite(resolvedDescriptor.groundY ?? 0, "kinematic groundY");
56
+ this.groundSnapDistance = finiteNonNegative(resolvedDescriptor.groundSnapDistance ?? 0.08, "kinematic groundSnapDistance");
57
+ this.bounds = resolvedDescriptor.bounds;
58
+ this.lockDepth = resolvedDescriptor.lockDepth ?? true;
59
+ this.laneZ = finite(resolvedDescriptor.laneZ ?? 0, "kinematic laneZ");
60
+ this.laneHalfWidth =
61
+ resolvedDescriptor.laneHalfWidth === undefined ? undefined : finiteNonNegative(resolvedDescriptor.laneHalfWidth, "kinematic laneHalfWidth");
62
+ this.tags = [...(resolvedDescriptor.tags ?? [])];
63
+ this.position = cloneVec3(resolvedDescriptor.position ?? [0, this.groundY + this.halfExtents[1], this.laneZ]);
64
+ this.previousPosition = cloneVec3(this.position);
65
+ this.velocity = cloneVec3(resolvedDescriptor.velocity ?? [0, 0, 0]);
66
+ validateFiniteVec3(this.position, "kinematic position");
67
+ validateFiniteVec3(this.velocity, "kinematic velocity");
68
+ this.facing = normalizeFacing(resolvedDescriptor.facing ?? 1);
69
+ this.pushboxVolume =
70
+ resolvedDescriptor.pushbox ??
71
+ pushbox({
72
+ id: "push",
73
+ halfExtents: this.halfExtents
74
+ });
75
+ this.grounded = this.position[1] - this.halfExtents[1] <= this.groundY + this.groundSnapDistance;
76
+ }
77
+ setMoveInput(input, z = 0) {
78
+ const rawX = typeof input === "number" ? input : input.x ?? 0;
79
+ const rawZ = typeof input === "number" ? z : input.z ?? 0;
80
+ const x = finiteOrZero(rawX);
81
+ const depth = this.lockDepth ? 0 : finiteOrZero(rawZ);
82
+ const length = Math.hypot(x, depth);
83
+ this.moveInput = length > 1 ? [x / length, depth / length] : [x, depth];
84
+ if (Math.abs(this.moveInput[0]) > 1e-6) {
85
+ this.facing = normalizeFacing(this.moveInput[0]);
86
+ }
87
+ }
88
+ move(input, z = 0) {
89
+ this.setMoveInput(input, z);
90
+ }
91
+ queueJump() {
92
+ this.jumpQueued = true;
93
+ }
94
+ jump() {
95
+ this.queueJump();
96
+ }
97
+ queueDash(direction) {
98
+ this.dashQueued = true;
99
+ this.queuedDashDirection = direction === undefined ? null : normalizeFacing(direction);
100
+ }
101
+ dash(direction) {
102
+ this.queueDash(direction);
103
+ }
104
+ applyKnockback(impulse, options = {}) {
105
+ validateFiniteVec3(impulse, "knockback impulse");
106
+ if (options.mode === "set") {
107
+ this.velocity = cloneVec3(impulse);
108
+ }
109
+ else {
110
+ this.velocity = [
111
+ this.velocity[0] + impulse[0],
112
+ this.velocity[1] + impulse[1],
113
+ this.velocity[2] + impulse[2]
114
+ ];
115
+ }
116
+ if (options.clearDash ?? true) {
117
+ this.dashTimeRemaining = 0;
118
+ this.dashQueued = false;
119
+ this.queuedDashDirection = null;
120
+ }
121
+ if (options.forceAirborne ?? impulse[1] > 0) {
122
+ this.grounded = false;
123
+ }
124
+ this.pendingEvents.push({
125
+ type: "knockback",
126
+ bodyId: this.id,
127
+ impulse: cloneVec3(impulse),
128
+ velocity: cloneVec3(this.velocity)
129
+ });
130
+ }
131
+ setPosition(position) {
132
+ validateFiniteVec3(position, "kinematic position");
133
+ this.position = cloneVec3(position);
134
+ this.previousPosition = cloneVec3(position);
135
+ this.grounded = this.position[1] - this.halfExtents[1] <= this.groundY + this.groundSnapDistance;
136
+ }
137
+ translate(delta) {
138
+ validateFiniteVec3(delta, "kinematic translation");
139
+ this.position = [
140
+ this.position[0] + delta[0],
141
+ this.position[1] + delta[1],
142
+ this.position[2] + delta[2]
143
+ ];
144
+ }
145
+ setVelocity(velocity) {
146
+ validateFiniteVec3(velocity, "kinematic velocity");
147
+ this.velocity = cloneVec3(velocity);
148
+ }
149
+ setFacing(facing) {
150
+ this.facing = normalizeFacing(facing);
151
+ }
152
+ setPushbox(volume) {
153
+ if (volume.kind !== "pushbox") {
154
+ throw new Error("KinematicBody pushbox volume must have kind \"pushbox\".");
155
+ }
156
+ this.pushboxVolume = volume;
157
+ }
158
+ resolvedPushbox() {
159
+ return resolveCollisionVolume(withVolumeOwner(this.pushboxVolume, this.id), this.position, this.facing);
160
+ }
161
+ step(dt, options = {}) {
162
+ if (!Number.isFinite(dt) || dt <= 0) {
163
+ throw new Error("KinematicBody.step dt must be finite and positive.");
164
+ }
165
+ const events = this.drainPendingEvents();
166
+ this.previousPosition = cloneVec3(this.position);
167
+ const wasGrounded = this.grounded;
168
+ const impactSpeed = Math.max(0, -this.velocity[1]);
169
+ const gravity = finiteNonNegative(Math.abs(options.gravity ?? this.gravity), "kinematic step gravity");
170
+ const lockDepth = options.lockDepth ?? this.lockDepth;
171
+ const laneZ = finite(options.laneZ ?? this.laneZ, "kinematic step laneZ");
172
+ if (this.dashCooldownRemaining > 0) {
173
+ this.dashCooldownRemaining = Math.max(0, this.dashCooldownRemaining - dt);
174
+ }
175
+ if (this.dashQueued && this.dashCooldownRemaining <= 0 && this.dashDuration > 0 && this.dashSpeed > 0) {
176
+ const direction = this.queuedDashDirection ?? (Math.abs(this.moveInput[0]) > 1e-6 ? normalizeFacing(this.moveInput[0]) : this.facing);
177
+ this.facing = direction;
178
+ this.dashTimeRemaining = this.dashDuration;
179
+ this.dashCooldownRemaining = this.dashDuration + this.dashCooldown;
180
+ this.velocity[0] = direction * this.dashSpeed;
181
+ if (lockDepth) {
182
+ this.velocity[2] = 0;
183
+ }
184
+ events.push({
185
+ type: "dash",
186
+ bodyId: this.id,
187
+ direction,
188
+ position: cloneVec3(this.position),
189
+ velocity: cloneVec3(this.velocity),
190
+ duration: this.dashDuration
191
+ });
192
+ }
193
+ this.dashQueued = false;
194
+ this.queuedDashDirection = null;
195
+ if (this.jumpQueued && this.grounded && this.jumpSpeed > 0) {
196
+ this.velocity[1] = this.jumpSpeed;
197
+ this.grounded = false;
198
+ events.push({
199
+ type: "jump",
200
+ bodyId: this.id,
201
+ position: cloneVec3(this.position),
202
+ velocity: cloneVec3(this.velocity)
203
+ });
204
+ }
205
+ this.jumpQueued = false;
206
+ if (this.dashTimeRemaining > 0) {
207
+ this.dashTimeRemaining = Math.max(0, this.dashTimeRemaining - dt);
208
+ if (lockDepth) {
209
+ this.velocity[2] = 0;
210
+ }
211
+ }
212
+ else {
213
+ const acceleration = this.grounded ? this.acceleration : this.airAcceleration;
214
+ const friction = this.grounded ? this.groundFriction : this.airFriction;
215
+ this.velocity[0] = approachAxis(this.velocity[0], this.moveInput[0], this.maxSpeed, acceleration, friction, dt);
216
+ this.velocity[2] = lockDepth ? 0 : approachAxis(this.velocity[2], this.moveInput[1], this.maxSpeed, acceleration, friction, dt);
217
+ }
218
+ if (this.grounded && this.velocity[1] < 0) {
219
+ this.velocity[1] = 0;
220
+ }
221
+ if (!this.grounded || this.velocity[1] > 0) {
222
+ this.velocity[1] = Math.max(this.velocity[1] - gravity * dt, -this.maxFallSpeed);
223
+ }
224
+ this.position = [
225
+ this.position[0] + this.velocity[0] * dt,
226
+ this.position[1] + this.velocity[1] * dt,
227
+ this.position[2] + this.velocity[2] * dt
228
+ ];
229
+ events.push(...this.applyConstraints({ ...options, lockDepth, laneZ }, wasGrounded, impactSpeed));
230
+ return events;
231
+ }
232
+ constrain(options = {}) {
233
+ return this.applyConstraints(options, this.grounded, Math.max(0, -this.velocity[1]));
234
+ }
235
+ stopAxis(axis) {
236
+ const index = axis === "x" ? 0 : axis === "y" ? 1 : 2;
237
+ this.velocity[index] = 0;
238
+ }
239
+ snapshot() {
240
+ return {
241
+ id: this.id,
242
+ position: cloneVec3(this.position),
243
+ previousPosition: cloneVec3(this.previousPosition),
244
+ velocity: cloneVec3(this.velocity),
245
+ facing: this.facing,
246
+ grounded: this.grounded,
247
+ moveInput: [this.moveInput[0], 0, this.moveInput[1]],
248
+ halfExtents: cloneVec3(this.halfExtents),
249
+ dashFramesRemaining: this.dashTimeRemaining,
250
+ dashCooldownRemaining: this.dashCooldownRemaining,
251
+ tags: [...this.tags]
252
+ };
253
+ }
254
+ applyConstraints(options, wasGrounded, impactSpeed) {
255
+ const events = [];
256
+ const lockDepth = options.lockDepth ?? this.lockDepth;
257
+ const laneZ = finite(options.laneZ ?? this.laneZ, "kinematic constraint laneZ");
258
+ const laneHalfWidth = options.laneHalfWidth ?? this.laneHalfWidth;
259
+ const bounds = options.bounds ?? this.bounds;
260
+ const axes = [];
261
+ if (lockDepth) {
262
+ if (Math.abs(this.position[2] - laneZ) > 1e-9) {
263
+ axes.push("z");
264
+ }
265
+ this.position[2] = laneZ;
266
+ this.velocity[2] = 0;
267
+ }
268
+ else if (laneHalfWidth !== undefined) {
269
+ const clamped = clampAxisWithHalfExtent(this.position[2], laneZ - laneHalfWidth, laneZ + laneHalfWidth, this.halfExtents[2]);
270
+ if (clamped !== this.position[2]) {
271
+ this.position[2] = clamped;
272
+ this.velocity[2] = 0;
273
+ axes.push("z");
274
+ }
275
+ }
276
+ if (bounds) {
277
+ const clampedX = clampAxisWithHalfExtent(this.position[0], bounds.minX, bounds.maxX, this.halfExtents[0]);
278
+ const clampedY = clampAxisWithHalfExtent(this.position[1], bounds.minY, bounds.maxY, this.halfExtents[1]);
279
+ const clampedZ = clampAxisWithHalfExtent(this.position[2], bounds.minZ, bounds.maxZ, this.halfExtents[2]);
280
+ if (clampedX !== this.position[0]) {
281
+ this.position[0] = clampedX;
282
+ this.velocity[0] = 0;
283
+ axes.push("x");
284
+ }
285
+ if (clampedY !== this.position[1]) {
286
+ this.position[1] = clampedY;
287
+ this.velocity[1] = 0;
288
+ axes.push("y");
289
+ }
290
+ if (clampedZ !== this.position[2]) {
291
+ this.position[2] = clampedZ;
292
+ this.velocity[2] = 0;
293
+ axes.push("z");
294
+ }
295
+ }
296
+ if (axes.length > 0) {
297
+ events.push({
298
+ type: "bounds",
299
+ bodyId: this.id,
300
+ axes: uniqueAxes(axes),
301
+ position: cloneVec3(this.position)
302
+ });
303
+ }
304
+ const groundY = finite(options.groundY ?? this.groundY, "kinematic constraint groundY");
305
+ const snapDistance = finiteNonNegative(options.groundSnapDistance ?? this.groundSnapDistance, "kinematic constraint groundSnapDistance");
306
+ const bottom = this.position[1] - this.halfExtents[1];
307
+ if (this.velocity[1] <= 0 && bottom <= groundY + snapDistance) {
308
+ const correctedY = groundY + this.halfExtents[1];
309
+ const snapped = Math.abs(this.position[1] - correctedY) > 1e-9;
310
+ this.position[1] = correctedY;
311
+ this.velocity[1] = 0;
312
+ this.grounded = true;
313
+ if (!wasGrounded) {
314
+ events.push({
315
+ type: "land",
316
+ bodyId: this.id,
317
+ position: cloneVec3(this.position),
318
+ impactSpeed
319
+ });
320
+ }
321
+ else if (snapped) {
322
+ events.push({
323
+ type: "ground-snap",
324
+ bodyId: this.id,
325
+ position: cloneVec3(this.position)
326
+ });
327
+ }
328
+ }
329
+ else {
330
+ this.grounded = false;
331
+ }
332
+ return events;
333
+ }
334
+ drainPendingEvents() {
335
+ const events = [...this.pendingEvents];
336
+ this.pendingEvents.length = 0;
337
+ return events;
338
+ }
339
+ }
340
+ function isDescriptor(value) {
341
+ return typeof value === "object" && value !== null && !Array.isArray(value);
342
+ }
343
+ function validateBodyId(id) {
344
+ if (typeof id === "number") {
345
+ if (!Number.isFinite(id)) {
346
+ throw new Error("Kinematic body id number must be finite.");
347
+ }
348
+ return;
349
+ }
350
+ if (id.length === 0) {
351
+ throw new Error("Kinematic body id string cannot be empty.");
352
+ }
353
+ }
354
+ function finite(value, name) {
355
+ if (!Number.isFinite(value)) {
356
+ throw new Error(`${name} must be finite.`);
357
+ }
358
+ return value;
359
+ }
360
+ function finiteNonNegative(value, name) {
361
+ if (!Number.isFinite(value) || value < 0) {
362
+ throw new Error(`${name} must be finite and non-negative.`);
363
+ }
364
+ return value;
365
+ }
366
+ function finiteOrZero(value) {
367
+ return Number.isFinite(value) ? value : 0;
368
+ }
369
+ function validatePositiveVec3(value, name) {
370
+ validateFiniteVec3(value, name);
371
+ if (value[0] <= 0 || value[1] <= 0 || value[2] <= 0) {
372
+ throw new Error(`${name} must contain finite positive values.`);
373
+ }
374
+ }
375
+ function approachAxis(current, input, maxSpeed, acceleration, friction, dt) {
376
+ if (Math.abs(input) > 1e-6) {
377
+ return moveToward(current, input * maxSpeed, acceleration * dt);
378
+ }
379
+ return moveToward(current, 0, friction * dt);
380
+ }
381
+ function moveToward(current, target, maxDelta) {
382
+ const delta = target - current;
383
+ if (Math.abs(delta) <= maxDelta) {
384
+ return target;
385
+ }
386
+ return current + Math.sign(delta) * maxDelta;
387
+ }
388
+ function clampAxisWithHalfExtent(value, min, max, halfExtent) {
389
+ const lower = min === undefined ? -Infinity : min + halfExtent;
390
+ const upper = max === undefined ? Infinity : max - halfExtent;
391
+ if (lower > upper) {
392
+ return (lower + upper) * 0.5;
393
+ }
394
+ return Math.min(upper, Math.max(lower, value));
395
+ }
396
+ function uniqueAxes(axes) {
397
+ const result = [];
398
+ for (const axis of axes) {
399
+ if (!result.includes(axis)) {
400
+ result.push(axis);
401
+ }
402
+ }
403
+ return result;
404
+ }
405
+ //# sourceMappingURL=KinematicBody.js.map