@aura3d/engine 1.0.3 → 1.0.5
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/README.md +309 -7
- package/dist/animation/AnimationClipEvents.d.ts +57 -0
- package/dist/animation/AnimationClipEvents.d.ts.map +1 -0
- package/dist/animation/AnimationClipEvents.js +171 -0
- package/dist/animation/AnimationClipEvents.js.map +1 -0
- package/dist/animation/AnimationClipRegistry.d.ts +76 -0
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -0
- package/dist/animation/AnimationClipRegistry.js +130 -0
- package/dist/animation/AnimationClipRegistry.js.map +1 -0
- package/dist/animation/AnimationController.d.ts +168 -0
- package/dist/animation/AnimationController.d.ts.map +1 -0
- package/dist/animation/AnimationController.js +619 -0
- package/dist/animation/AnimationController.js.map +1 -0
- package/dist/animation/HumanoidRetargeting.d.ts +76 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -0
- package/dist/animation/HumanoidRetargeting.js +331 -0
- package/dist/animation/HumanoidRetargeting.js.map +1 -0
- package/dist/animation/browser-index.d.ts +18 -0
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +13 -0
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +16 -1
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +11 -1
- package/dist/animation/index.js.map +1 -1
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.d.ts.map +1 -1
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.js +3 -5
- package/dist/animation/threejs-compatibility/AnimationDiagnostics.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +1 -1
- package/dist/assets/GLTFLoader.js +1 -1
- package/dist/aura3d-cli/cli.js +194 -8
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +280 -3
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +886 -4
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +95 -0
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge.js +247 -0
- package/dist/aura3d-cli/pull-bridge.js.map +1 -0
- package/dist/create-aura3d/index.d.ts +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +9 -2
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/editor-runtime/ProjectSerializer.d.ts +74 -1
- package/dist/editor-runtime/ProjectSerializer.d.ts.map +1 -1
- package/dist/editor-runtime/ProjectSerializer.js +123 -6
- package/dist/editor-runtime/ProjectSerializer.js.map +1 -1
- package/dist/editor-runtime/TimelineModel.d.ts +18 -0
- package/dist/editor-runtime/TimelineModel.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineModel.js +67 -3
- package/dist/editor-runtime/TimelineModel.js.map +1 -1
- package/dist/editor-runtime/TimelineRuntimeBridge.d.ts +98 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.d.ts.map +1 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.js +186 -0
- package/dist/editor-runtime/TimelineRuntimeBridge.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +3 -1
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +1 -0
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AnimationController.d.ts +607 -0
- package/dist/engine/agent-api/AnimationController.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationController.js +2192 -0
- package/dist/engine/agent-api/AnimationController.js.map +1 -0
- package/dist/engine/agent-api/AssetEvidence.d.ts +88 -0
- package/dist/engine/agent-api/AssetEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/AssetEvidence.js +157 -0
- package/dist/engine/agent-api/AssetEvidence.js.map +1 -0
- package/dist/engine/agent-api/AuraAppHandle.d.ts +55 -0
- package/dist/engine/agent-api/AuraAppHandle.d.ts.map +1 -0
- package/dist/engine/agent-api/AuraAppHandle.js +15 -0
- package/dist/engine/agent-api/AuraAppHandle.js.map +1 -0
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts +96 -0
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -0
- package/dist/engine/agent-api/AuraVoiceBridge.js +370 -0
- package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts +95 -0
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonDirector.js +342 -0
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +149 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.js +317 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +132 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js +385 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts +126 -0
- package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -0
- package/dist/engine/agent-api/CharacterAssembly.js +280 -0
- package/dist/engine/agent-api/CharacterAssembly.js.map +1 -0
- package/dist/engine/agent-api/DialoguePerformance.d.ts +150 -0
- package/dist/engine/agent-api/DialoguePerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/DialoguePerformance.js +335 -0
- package/dist/engine/agent-api/DialoguePerformance.js.map +1 -0
- package/dist/engine/agent-api/FrameLoop.d.ts +70 -0
- package/dist/engine/agent-api/FrameLoop.d.ts.map +1 -0
- package/dist/engine/agent-api/FrameLoop.js +165 -0
- package/dist/engine/agent-api/FrameLoop.js.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts +279 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -0
- package/dist/engine/agent-api/GameAssetValidation.js +719 -0
- package/dist/engine/agent-api/GameAssetValidation.js.map +1 -0
- package/dist/engine/agent-api/GameEvidence.d.ts +148 -0
- package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/GameEvidence.js +269 -0
- package/dist/engine/agent-api/GameEvidence.js.map +1 -0
- package/dist/engine/agent-api/GameRuntime.d.ts +931 -0
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -0
- package/dist/engine/agent-api/GameRuntime.js +2229 -0
- package/dist/engine/agent-api/GameRuntime.js.map +1 -0
- package/dist/engine/agent-api/GameSceneBridge.d.ts +54 -0
- package/dist/engine/agent-api/GameSceneBridge.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneBridge.js +110 -0
- package/dist/engine/agent-api/GameSceneBridge.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +278 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.js +238 -0
- package/dist/engine/agent-api/PromptAnimationContract.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +183 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.js +454 -0
- package/dist/engine/agent-api/PromptAnimationEvidence.js.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +100 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js +36 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts +179 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.js +264 -0
- package/dist/engine/agent-api/ShotTimeline.js.map +1 -0
- package/dist/engine/agent-api/VisemeController.d.ts +89 -0
- package/dist/engine/agent-api/VisemeController.d.ts.map +1 -0
- package/dist/engine/agent-api/VisemeController.js +207 -0
- package/dist/engine/agent-api/VisemeController.js.map +1 -0
- package/dist/engine/agent-api/game-kits/fighting.d.ts +123 -0
- package/dist/engine/agent-api/game-kits/fighting.d.ts.map +1 -0
- package/dist/engine/agent-api/game-kits/fighting.js +483 -0
- package/dist/engine/agent-api/game-kits/fighting.js.map +1 -0
- package/dist/engine/agent-api/game-kits/index.d.ts +15 -0
- package/dist/engine/agent-api/game-kits/index.d.ts.map +1 -0
- package/dist/engine/agent-api/game-kits/index.js +6 -0
- package/dist/engine/agent-api/game-kits/index.js.map +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/index.d.ts +487 -1
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +740 -6
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/physics/CollisionVolumes.d.ts +57 -0
- package/dist/physics/CollisionVolumes.d.ts.map +1 -0
- package/dist/physics/CollisionVolumes.js +159 -0
- package/dist/physics/CollisionVolumes.js.map +1 -0
- package/dist/physics/HitboxWorld.d.ts +229 -0
- package/dist/physics/HitboxWorld.d.ts.map +1 -0
- package/dist/physics/HitboxWorld.js +640 -0
- package/dist/physics/HitboxWorld.js.map +1 -0
- package/dist/physics/KinematicBody.d.ts +157 -0
- package/dist/physics/KinematicBody.d.ts.map +1 -0
- package/dist/physics/KinematicBody.js +405 -0
- package/dist/physics/KinematicBody.js.map +1 -0
- package/dist/physics/KinematicWorld.d.ts +58 -0
- package/dist/physics/KinematicWorld.d.ts.map +1 -0
- package/dist/physics/KinematicWorld.js +246 -0
- package/dist/physics/KinematicWorld.js.map +1 -0
- package/dist/physics/index.d.ts +4 -0
- package/dist/physics/index.d.ts.map +1 -1
- package/dist/physics/index.js +4 -0
- package/dist/physics/index.js.map +1 -1
- package/dist/rendering/ForwardPass.js +2 -2
- package/dist/rendering/ShaderLibrary.js +2 -2
- package/dist/rendering/SkinnedLitMaterial.js +3 -3
- package/dist/rendering/SkinnedUnlitMaterial.js +3 -3
- package/dist/scene/Renderable.js +2 -2
- package/dist/scripting/VisualGraph.d.ts +2 -1
- package/dist/scripting/VisualGraph.d.ts.map +1 -1
- package/dist/scripting/VisualGraph.js +118 -1
- package/dist/scripting/VisualGraph.js.map +1 -1
- package/dist/scripting/VisualGraphContext.d.ts +123 -0
- package/dist/scripting/VisualGraphContext.d.ts.map +1 -0
- package/dist/scripting/VisualGraphContext.js +2 -0
- package/dist/scripting/VisualGraphContext.js.map +1 -0
- package/dist/scripting/VisualGraphExecutor.d.ts +6 -1
- package/dist/scripting/VisualGraphExecutor.d.ts.map +1 -1
- package/dist/scripting/VisualGraphExecutor.js +364 -7
- package/dist/scripting/VisualGraphExecutor.js.map +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts +1 -1
- package/dist/scripting/VisualNodeCatalog.d.ts.map +1 -1
- package/dist/scripting/VisualNodeCatalog.js +61 -1
- package/dist/scripting/VisualNodeCatalog.js.map +1 -1
- package/dist/scripting/index.d.ts +1 -0
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js.map +1 -1
- package/package.json +192 -118
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"product-viewer-runtime.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/product-viewer-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACrB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAClD,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC;AACjD,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAE1E,eAAO,MAAM,OAAO;;;
|
|
1
|
+
{"version":3,"file":"product-viewer-runtime.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/product-viewer-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,OAAO,EACP,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACrB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,qBAAqB,CAAC;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAClD,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAAC;AACjD,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;AAE1E,eAAO,MAAM,OAAO;;;sBAW08xS,CAAC;;;;;;CAX77xS,CAAC;AAEnC,eAAO,MAAM,SAAS;oCACC,YAAY,CAAC,OAAO,CAAC,YAAW,oBAAoB,KAAQ,qBAAqB;CAG9F,CAAC;AAEX,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,GAAE,oBAAyB,GAAG,qBAAqB,CAErH"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type Bounds, type Vec3 } from "./Shape.js";
|
|
2
|
+
export type CombatFacing = -1 | 1;
|
|
3
|
+
export type CollisionOwnerId = string | number;
|
|
4
|
+
export type CollisionVolumeKind = "hitbox" | "hurtbox" | "pushbox" | "guardbox";
|
|
5
|
+
export type CollisionVolumeDescriptor = {
|
|
6
|
+
readonly id?: string;
|
|
7
|
+
readonly ownerId?: CollisionOwnerId;
|
|
8
|
+
readonly offset?: Vec3;
|
|
9
|
+
readonly halfExtents: Vec3;
|
|
10
|
+
readonly enabled?: boolean;
|
|
11
|
+
readonly tags?: readonly string[];
|
|
12
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
13
|
+
};
|
|
14
|
+
export type CollisionVolume = {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly kind: CollisionVolumeKind;
|
|
17
|
+
readonly offset: Vec3;
|
|
18
|
+
readonly halfExtents: Vec3;
|
|
19
|
+
readonly enabled: boolean;
|
|
20
|
+
readonly tags: readonly string[];
|
|
21
|
+
readonly ownerId?: CollisionOwnerId;
|
|
22
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
23
|
+
};
|
|
24
|
+
export type ResolvedCollisionVolume = CollisionVolume & {
|
|
25
|
+
readonly center: Vec3;
|
|
26
|
+
readonly facing: CombatFacing;
|
|
27
|
+
readonly bounds: Bounds;
|
|
28
|
+
};
|
|
29
|
+
export type CollisionPenetration = {
|
|
30
|
+
readonly normal: Vec3;
|
|
31
|
+
readonly depth: number;
|
|
32
|
+
readonly axis: 0 | 1 | 2;
|
|
33
|
+
readonly overlap: Vec3;
|
|
34
|
+
};
|
|
35
|
+
export declare function collisionVolume(kind: CollisionVolumeKind, descriptor: CollisionVolumeDescriptor): CollisionVolume;
|
|
36
|
+
export declare function hitbox(descriptor: CollisionVolumeDescriptor): CollisionVolume;
|
|
37
|
+
export declare function hurtbox(descriptor: CollisionVolumeDescriptor): CollisionVolume;
|
|
38
|
+
export declare function pushbox(descriptor: CollisionVolumeDescriptor): CollisionVolume;
|
|
39
|
+
export declare function guardbox(descriptor: CollisionVolumeDescriptor): CollisionVolume;
|
|
40
|
+
export declare const createHitbox: typeof hitbox;
|
|
41
|
+
export declare const createHurtbox: typeof hurtbox;
|
|
42
|
+
export declare const createPushbox: typeof pushbox;
|
|
43
|
+
export declare const createGuardbox: typeof guardbox;
|
|
44
|
+
export declare const createGuardBox: typeof guardbox;
|
|
45
|
+
export declare function cloneCollisionVolume(volume: CollisionVolume): CollisionVolume;
|
|
46
|
+
export declare function withVolumeOwner(volume: CollisionVolume, ownerId: CollisionOwnerId): CollisionVolume;
|
|
47
|
+
export declare function resolveCollisionVolume(volume: CollisionVolume, ownerPosition: Vec3, facing?: CombatFacing): ResolvedCollisionVolume;
|
|
48
|
+
export declare function aabbFromCenter(center: Vec3, halfExtents: Vec3): Bounds;
|
|
49
|
+
export declare function boundsCenter(bounds: Bounds): Vec3;
|
|
50
|
+
export declare function boundsHalfExtents(bounds: Bounds): Vec3;
|
|
51
|
+
export declare function overlapsAabb(a: Bounds, b: Bounds): boolean;
|
|
52
|
+
export declare function overlapsVolume(a: ResolvedCollisionVolume, b: ResolvedCollisionVolume): boolean;
|
|
53
|
+
export declare function aabbPenetration(a: Bounds, b: Bounds): CollisionPenetration | null;
|
|
54
|
+
export declare function volumePairKey(a: CollisionVolume | ResolvedCollisionVolume, b: CollisionVolume | ResolvedCollisionVolume): string;
|
|
55
|
+
export declare function normalizeFacing(value: number): CombatFacing;
|
|
56
|
+
export declare function validateBounds(bounds: Bounds, name: string): void;
|
|
57
|
+
//# sourceMappingURL=CollisionVolumes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollisionVolumes.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/CollisionVolumes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { cloneVec3, validateFiniteVec3 } from "./Shape.js";
|
|
2
|
+
export function collisionVolume(kind, descriptor) {
|
|
3
|
+
validateHalfExtents(descriptor.halfExtents, `${kind} halfExtents`);
|
|
4
|
+
const volume = {
|
|
5
|
+
id: descriptor.id ?? kind,
|
|
6
|
+
kind,
|
|
7
|
+
offset: cloneVec3(descriptor.offset ?? [0, 0, 0]),
|
|
8
|
+
halfExtents: cloneVec3(descriptor.halfExtents),
|
|
9
|
+
enabled: descriptor.enabled ?? true,
|
|
10
|
+
tags: [...(descriptor.tags ?? [])],
|
|
11
|
+
...(descriptor.ownerId === undefined ? {} : { ownerId: descriptor.ownerId }),
|
|
12
|
+
...(descriptor.metadata === undefined ? {} : { metadata: { ...descriptor.metadata } })
|
|
13
|
+
};
|
|
14
|
+
validateFiniteVec3(volume.offset, `${kind} offset`);
|
|
15
|
+
return volume;
|
|
16
|
+
}
|
|
17
|
+
export function hitbox(descriptor) {
|
|
18
|
+
return collisionVolume("hitbox", descriptor);
|
|
19
|
+
}
|
|
20
|
+
export function hurtbox(descriptor) {
|
|
21
|
+
return collisionVolume("hurtbox", descriptor);
|
|
22
|
+
}
|
|
23
|
+
export function pushbox(descriptor) {
|
|
24
|
+
return collisionVolume("pushbox", descriptor);
|
|
25
|
+
}
|
|
26
|
+
export function guardbox(descriptor) {
|
|
27
|
+
return collisionVolume("guardbox", descriptor);
|
|
28
|
+
}
|
|
29
|
+
export const createHitbox = hitbox;
|
|
30
|
+
export const createHurtbox = hurtbox;
|
|
31
|
+
export const createPushbox = pushbox;
|
|
32
|
+
export const createGuardbox = guardbox;
|
|
33
|
+
export const createGuardBox = guardbox;
|
|
34
|
+
export function cloneCollisionVolume(volume) {
|
|
35
|
+
return {
|
|
36
|
+
id: volume.id,
|
|
37
|
+
kind: volume.kind,
|
|
38
|
+
offset: cloneVec3(volume.offset),
|
|
39
|
+
halfExtents: cloneVec3(volume.halfExtents),
|
|
40
|
+
enabled: volume.enabled,
|
|
41
|
+
tags: [...volume.tags],
|
|
42
|
+
...(volume.ownerId === undefined ? {} : { ownerId: volume.ownerId }),
|
|
43
|
+
...(volume.metadata === undefined ? {} : { metadata: { ...volume.metadata } })
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function withVolumeOwner(volume, ownerId) {
|
|
47
|
+
return {
|
|
48
|
+
...cloneCollisionVolume(volume),
|
|
49
|
+
ownerId
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function resolveCollisionVolume(volume, ownerPosition, facing = 1) {
|
|
53
|
+
validateFiniteVec3(ownerPosition, "volume owner position");
|
|
54
|
+
const resolvedFacing = normalizeFacing(facing);
|
|
55
|
+
const center = [
|
|
56
|
+
ownerPosition[0] + volume.offset[0] * resolvedFacing,
|
|
57
|
+
ownerPosition[1] + volume.offset[1],
|
|
58
|
+
ownerPosition[2] + volume.offset[2]
|
|
59
|
+
];
|
|
60
|
+
return {
|
|
61
|
+
...cloneCollisionVolume(volume),
|
|
62
|
+
center,
|
|
63
|
+
facing: resolvedFacing,
|
|
64
|
+
bounds: aabbFromCenter(center, volume.halfExtents)
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function aabbFromCenter(center, halfExtents) {
|
|
68
|
+
validateFiniteVec3(center, "aabb center");
|
|
69
|
+
validateHalfExtents(halfExtents, "aabb halfExtents");
|
|
70
|
+
return {
|
|
71
|
+
min: [center[0] - halfExtents[0], center[1] - halfExtents[1], center[2] - halfExtents[2]],
|
|
72
|
+
max: [center[0] + halfExtents[0], center[1] + halfExtents[1], center[2] + halfExtents[2]]
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export function boundsCenter(bounds) {
|
|
76
|
+
validateBounds(bounds, "bounds");
|
|
77
|
+
return [
|
|
78
|
+
(bounds.min[0] + bounds.max[0]) * 0.5,
|
|
79
|
+
(bounds.min[1] + bounds.max[1]) * 0.5,
|
|
80
|
+
(bounds.min[2] + bounds.max[2]) * 0.5
|
|
81
|
+
];
|
|
82
|
+
}
|
|
83
|
+
export function boundsHalfExtents(bounds) {
|
|
84
|
+
validateBounds(bounds, "bounds");
|
|
85
|
+
return [
|
|
86
|
+
(bounds.max[0] - bounds.min[0]) * 0.5,
|
|
87
|
+
(bounds.max[1] - bounds.min[1]) * 0.5,
|
|
88
|
+
(bounds.max[2] - bounds.min[2]) * 0.5
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
export function overlapsAabb(a, b) {
|
|
92
|
+
validateBounds(a, "a bounds");
|
|
93
|
+
validateBounds(b, "b bounds");
|
|
94
|
+
return (a.min[0] < b.max[0] &&
|
|
95
|
+
a.max[0] > b.min[0] &&
|
|
96
|
+
a.min[1] < b.max[1] &&
|
|
97
|
+
a.max[1] > b.min[1] &&
|
|
98
|
+
a.min[2] < b.max[2] &&
|
|
99
|
+
a.max[2] > b.min[2]);
|
|
100
|
+
}
|
|
101
|
+
export function overlapsVolume(a, b) {
|
|
102
|
+
if (!a.enabled || !b.enabled) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
return overlapsAabb(a.bounds, b.bounds);
|
|
106
|
+
}
|
|
107
|
+
export function aabbPenetration(a, b) {
|
|
108
|
+
if (!overlapsAabb(a, b)) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const overlap = [
|
|
112
|
+
Math.min(a.max[0] - b.min[0], b.max[0] - a.min[0]),
|
|
113
|
+
Math.min(a.max[1] - b.min[1], b.max[1] - a.min[1]),
|
|
114
|
+
Math.min(a.max[2] - b.min[2], b.max[2] - a.min[2])
|
|
115
|
+
];
|
|
116
|
+
let axis = 0;
|
|
117
|
+
if (overlap[1] < overlap[axis]) {
|
|
118
|
+
axis = 1;
|
|
119
|
+
}
|
|
120
|
+
if (overlap[2] < overlap[axis]) {
|
|
121
|
+
axis = 2;
|
|
122
|
+
}
|
|
123
|
+
const centerA = boundsCenter(a);
|
|
124
|
+
const centerB = boundsCenter(b);
|
|
125
|
+
const normal = [0, 0, 0];
|
|
126
|
+
normal[axis] = centerA[axis] <= centerB[axis] ? -1 : 1;
|
|
127
|
+
return {
|
|
128
|
+
normal,
|
|
129
|
+
depth: overlap[axis],
|
|
130
|
+
axis,
|
|
131
|
+
overlap
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
export function volumePairKey(a, b) {
|
|
135
|
+
const keyA = volumeKey(a);
|
|
136
|
+
const keyB = volumeKey(b);
|
|
137
|
+
return keyA < keyB ? `${keyA}:${keyB}` : `${keyB}:${keyA}`;
|
|
138
|
+
}
|
|
139
|
+
export function normalizeFacing(value) {
|
|
140
|
+
return value < 0 ? -1 : 1;
|
|
141
|
+
}
|
|
142
|
+
export function validateBounds(bounds, name) {
|
|
143
|
+
validateFiniteVec3(bounds.min, `${name} min`);
|
|
144
|
+
validateFiniteVec3(bounds.max, `${name} max`);
|
|
145
|
+
if (bounds.min[0] > bounds.max[0] || bounds.min[1] > bounds.max[1] || bounds.min[2] > bounds.max[2]) {
|
|
146
|
+
throw new Error(`${name} min values must be less than or equal to max values.`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function validateHalfExtents(value, name) {
|
|
150
|
+
validateFiniteVec3(value, name);
|
|
151
|
+
if (value[0] <= 0 || value[1] <= 0 || value[2] <= 0) {
|
|
152
|
+
throw new Error(`${name} must contain finite positive values.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function volumeKey(volume) {
|
|
156
|
+
const owner = volume.ownerId === undefined ? "none" : String(volume.ownerId);
|
|
157
|
+
return `${owner}/${volume.kind}/${volume.id}`;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=CollisionVolumes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CollisionVolumes.js","sourceRoot":"","sources":["../../../../packages/physics/src/CollisionVolumes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { type CombatFacing, type CollisionOwnerId, type CollisionVolume } from "./CollisionVolumes.js";
|
|
2
|
+
import { type Vec3 } from "./Shape.js";
|
|
3
|
+
export type CombatantId = CollisionOwnerId;
|
|
4
|
+
export type CombatTeam = string | number;
|
|
5
|
+
export type CombatantDescriptor = {
|
|
6
|
+
readonly id: CombatantId;
|
|
7
|
+
readonly team?: CombatTeam;
|
|
8
|
+
readonly position?: Vec3;
|
|
9
|
+
readonly facing?: CombatFacing;
|
|
10
|
+
readonly hurtboxes?: readonly CollisionVolume[];
|
|
11
|
+
readonly guardBoxes?: readonly CollisionVolume[];
|
|
12
|
+
readonly pushbox?: CollisionVolume | null;
|
|
13
|
+
readonly health?: number;
|
|
14
|
+
readonly maxHealth?: number;
|
|
15
|
+
readonly guard?: number;
|
|
16
|
+
readonly maxGuard?: number;
|
|
17
|
+
readonly meter?: number;
|
|
18
|
+
readonly blocking?: boolean;
|
|
19
|
+
readonly invulnerableFrames?: number;
|
|
20
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
21
|
+
};
|
|
22
|
+
export type CombatantPose = {
|
|
23
|
+
readonly position?: Vec3;
|
|
24
|
+
readonly facing?: CombatFacing;
|
|
25
|
+
};
|
|
26
|
+
export type ActiveFrameWindow = {
|
|
27
|
+
readonly start: number;
|
|
28
|
+
readonly end: number;
|
|
29
|
+
};
|
|
30
|
+
export type HitboxDescriptor = {
|
|
31
|
+
readonly id?: string;
|
|
32
|
+
readonly ownerId: CombatantId;
|
|
33
|
+
readonly team?: CombatTeam;
|
|
34
|
+
readonly moveId: string;
|
|
35
|
+
readonly boxes: readonly CollisionVolume[];
|
|
36
|
+
readonly activeFrames?: ActiveFrameWindow;
|
|
37
|
+
readonly recoveryFrames?: number;
|
|
38
|
+
readonly damage?: number;
|
|
39
|
+
readonly guardDamage?: number;
|
|
40
|
+
readonly hitstunFrames?: number;
|
|
41
|
+
readonly blockstunFrames?: number;
|
|
42
|
+
readonly hitStopFrames?: number;
|
|
43
|
+
readonly selfHitStopFrames?: number;
|
|
44
|
+
readonly knockback?: Vec3;
|
|
45
|
+
readonly blockKnockback?: Vec3;
|
|
46
|
+
readonly priority?: number;
|
|
47
|
+
readonly canHitOwner?: boolean;
|
|
48
|
+
readonly canHitSameTeam?: boolean;
|
|
49
|
+
readonly hitOnce?: boolean;
|
|
50
|
+
readonly maxHits?: number;
|
|
51
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
52
|
+
};
|
|
53
|
+
export type ActiveHitboxSnapshot = {
|
|
54
|
+
readonly id: string;
|
|
55
|
+
readonly ownerId: CombatantId;
|
|
56
|
+
readonly moveId: string;
|
|
57
|
+
readonly ageFrames: number;
|
|
58
|
+
readonly activeFrames: ActiveFrameWindow;
|
|
59
|
+
readonly recoveryFrames: number;
|
|
60
|
+
readonly hitCount: number;
|
|
61
|
+
readonly expired: boolean;
|
|
62
|
+
};
|
|
63
|
+
export type CombatantSnapshot = {
|
|
64
|
+
readonly id: CombatantId;
|
|
65
|
+
readonly team?: CombatTeam;
|
|
66
|
+
readonly position: Vec3;
|
|
67
|
+
readonly facing: CombatFacing;
|
|
68
|
+
readonly health: number;
|
|
69
|
+
readonly maxHealth: number;
|
|
70
|
+
readonly guard: number;
|
|
71
|
+
readonly maxGuard: number;
|
|
72
|
+
readonly meter: number;
|
|
73
|
+
readonly blocking: boolean;
|
|
74
|
+
readonly invulnerableFrames: number;
|
|
75
|
+
readonly hitStopFrames: number;
|
|
76
|
+
readonly hitstunFrames: number;
|
|
77
|
+
readonly blockstunFrames: number;
|
|
78
|
+
readonly recoveryFrames: number;
|
|
79
|
+
};
|
|
80
|
+
export type HitboxWorldSnapshot = {
|
|
81
|
+
readonly frame: number;
|
|
82
|
+
readonly combatants: readonly CombatantSnapshot[];
|
|
83
|
+
readonly hitboxes: readonly ActiveHitboxSnapshot[];
|
|
84
|
+
readonly events: readonly CombatEvent[];
|
|
85
|
+
};
|
|
86
|
+
export type CombatHitEvent = {
|
|
87
|
+
readonly type: "hit";
|
|
88
|
+
readonly frame: number;
|
|
89
|
+
readonly attackerId: CombatantId;
|
|
90
|
+
readonly defenderId: CombatantId;
|
|
91
|
+
readonly hitboxId: string;
|
|
92
|
+
readonly moveId: string;
|
|
93
|
+
readonly hitboxVolumeId: string;
|
|
94
|
+
readonly hurtboxId: string;
|
|
95
|
+
readonly damage: number;
|
|
96
|
+
readonly defenderHealth: number;
|
|
97
|
+
readonly hitstunFrames: number;
|
|
98
|
+
readonly hitStopFrames: number;
|
|
99
|
+
readonly knockback: Vec3;
|
|
100
|
+
readonly point: Vec3;
|
|
101
|
+
readonly normal: Vec3;
|
|
102
|
+
};
|
|
103
|
+
export type CombatBlockEvent = {
|
|
104
|
+
readonly type: "blocked";
|
|
105
|
+
readonly frame: number;
|
|
106
|
+
readonly attackerId: CombatantId;
|
|
107
|
+
readonly defenderId: CombatantId;
|
|
108
|
+
readonly hitboxId: string;
|
|
109
|
+
readonly moveId: string;
|
|
110
|
+
readonly hitboxVolumeId: string;
|
|
111
|
+
readonly guardboxId: string;
|
|
112
|
+
readonly guardDamage: number;
|
|
113
|
+
readonly defenderGuard: number;
|
|
114
|
+
readonly blockstunFrames: number;
|
|
115
|
+
readonly hitStopFrames: number;
|
|
116
|
+
readonly knockback: Vec3;
|
|
117
|
+
readonly point: Vec3;
|
|
118
|
+
readonly normal: Vec3;
|
|
119
|
+
};
|
|
120
|
+
export type CombatHitboxLifecycleEvent = {
|
|
121
|
+
readonly type: "hitbox-spawned";
|
|
122
|
+
readonly frame: number;
|
|
123
|
+
readonly hitboxId: string;
|
|
124
|
+
readonly ownerId: CombatantId;
|
|
125
|
+
readonly moveId: string;
|
|
126
|
+
readonly activeFrames: ActiveFrameWindow;
|
|
127
|
+
} | {
|
|
128
|
+
readonly type: "hitbox-expired";
|
|
129
|
+
readonly frame: number;
|
|
130
|
+
readonly hitboxId: string;
|
|
131
|
+
readonly ownerId: CombatantId;
|
|
132
|
+
readonly moveId: string;
|
|
133
|
+
readonly hitCount: number;
|
|
134
|
+
} | {
|
|
135
|
+
readonly type: "whiff";
|
|
136
|
+
readonly frame: number;
|
|
137
|
+
readonly hitboxId: string;
|
|
138
|
+
readonly ownerId: CombatantId;
|
|
139
|
+
readonly moveId: string;
|
|
140
|
+
};
|
|
141
|
+
export type CombatTimerEvent = {
|
|
142
|
+
readonly type: "hitstop-start";
|
|
143
|
+
readonly frame: number;
|
|
144
|
+
readonly combatantId: CombatantId;
|
|
145
|
+
readonly frames: number;
|
|
146
|
+
} | {
|
|
147
|
+
readonly type: "hitstop-end";
|
|
148
|
+
readonly frame: number;
|
|
149
|
+
readonly combatantId: CombatantId;
|
|
150
|
+
} | {
|
|
151
|
+
readonly type: "hitstun-start";
|
|
152
|
+
readonly frame: number;
|
|
153
|
+
readonly combatantId: CombatantId;
|
|
154
|
+
readonly frames: number;
|
|
155
|
+
} | {
|
|
156
|
+
readonly type: "hitstun-end";
|
|
157
|
+
readonly frame: number;
|
|
158
|
+
readonly combatantId: CombatantId;
|
|
159
|
+
} | {
|
|
160
|
+
readonly type: "blockstun-start";
|
|
161
|
+
readonly frame: number;
|
|
162
|
+
readonly combatantId: CombatantId;
|
|
163
|
+
readonly frames: number;
|
|
164
|
+
} | {
|
|
165
|
+
readonly type: "blockstun-end";
|
|
166
|
+
readonly frame: number;
|
|
167
|
+
readonly combatantId: CombatantId;
|
|
168
|
+
} | {
|
|
169
|
+
readonly type: "recovery-start";
|
|
170
|
+
readonly frame: number;
|
|
171
|
+
readonly combatantId: CombatantId;
|
|
172
|
+
readonly frames: number;
|
|
173
|
+
} | {
|
|
174
|
+
readonly type: "recovery-end";
|
|
175
|
+
readonly frame: number;
|
|
176
|
+
readonly combatantId: CombatantId;
|
|
177
|
+
};
|
|
178
|
+
export type CombatPushboxEvent = {
|
|
179
|
+
readonly type: "pushbox-overlap";
|
|
180
|
+
readonly frame: number;
|
|
181
|
+
readonly combatantA: CombatantId;
|
|
182
|
+
readonly combatantB: CombatantId;
|
|
183
|
+
readonly normal: Vec3;
|
|
184
|
+
readonly penetration: number;
|
|
185
|
+
};
|
|
186
|
+
export type CombatEvent = CombatHitEvent | CombatBlockEvent | CombatHitboxLifecycleEvent | CombatTimerEvent | CombatPushboxEvent;
|
|
187
|
+
export type HitboxWorldDescriptor = {
|
|
188
|
+
readonly detectPushboxOverlaps?: boolean;
|
|
189
|
+
};
|
|
190
|
+
export declare class HitboxWorld {
|
|
191
|
+
readonly detectPushboxOverlaps: boolean;
|
|
192
|
+
private readonly combatantsById;
|
|
193
|
+
private readonly hitboxesById;
|
|
194
|
+
private nextHitboxId;
|
|
195
|
+
private frame;
|
|
196
|
+
private lastEvents;
|
|
197
|
+
private readonly pendingEvents;
|
|
198
|
+
constructor(descriptor?: HitboxWorldDescriptor);
|
|
199
|
+
registerCombatant(descriptor: CombatantDescriptor): CombatantSnapshot;
|
|
200
|
+
upsertCombatant(descriptor: CombatantDescriptor): CombatantSnapshot;
|
|
201
|
+
removeCombatant(id: CombatantId): void;
|
|
202
|
+
getCombatant(id: CombatantId): CombatantSnapshot | undefined;
|
|
203
|
+
setPose(id: CombatantId, pose: CombatantPose): void;
|
|
204
|
+
setGuarding(id: CombatantId, blocking: boolean): void;
|
|
205
|
+
setHurtboxes(id: CombatantId, volumes: readonly CollisionVolume[]): void;
|
|
206
|
+
setGuardBoxes(id: CombatantId, volumes: readonly CollisionVolume[]): void;
|
|
207
|
+
setPushbox(id: CombatantId, volume: CollisionVolume | null): void;
|
|
208
|
+
spawnHitbox(descriptor: HitboxDescriptor): ActiveHitboxSnapshot;
|
|
209
|
+
clearHitboxes(ownerId?: CombatantId): void;
|
|
210
|
+
step(frames?: number): readonly CombatEvent[];
|
|
211
|
+
drainEvents(): readonly CombatEvent[];
|
|
212
|
+
snapshot(): HitboxWorldSnapshot;
|
|
213
|
+
combatants(): readonly CombatantSnapshot[];
|
|
214
|
+
hitboxes(): readonly ActiveHitboxSnapshot[];
|
|
215
|
+
private stepOneFrame;
|
|
216
|
+
private resolveHitbox;
|
|
217
|
+
private tryResolveBlock;
|
|
218
|
+
private tryResolveHit;
|
|
219
|
+
private applyHitTimers;
|
|
220
|
+
private applyBlockTimers;
|
|
221
|
+
private tickTimers;
|
|
222
|
+
private collectPushboxEvents;
|
|
223
|
+
private expireHitbox;
|
|
224
|
+
private requireCombatant;
|
|
225
|
+
private sortedCombatantRecords;
|
|
226
|
+
private sortedHitboxRecords;
|
|
227
|
+
private drainPendingEvents;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=HitboxWorld.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HitboxWorld.d.ts","sourceRoot":"","sources":["../../../../packages/physics/src/HitboxWorld.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiC,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAC3C,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzC,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACjD,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,QAAQ,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAClC;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;CAC1C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,cAAc,GAAG,gBAAgB,GAAG,0BAA0B,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAEjI,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAqDF,qBAAa,WAAW;IACtB,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,UAAU,GAAE,qBAA0B;IAIlD,iBAAiB,CAAC,UAAU,EAAE,mBAAmB,GAAG,iBAAiB;IASrE,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,iBAAiB;IASnE,eAAe,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAStC,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS;IAK5D,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI;IAWnD,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIrD,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;IAIxE,aAAa,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,eAAe,EAAE,GAAG,IAAI;IAIzE,UAAU,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAIjE,WAAW,CAAC,UAAU,EAAE,gBAAgB,GAAG,oBAAoB;IAkD/D,aAAa,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAQ1C,IAAI,CAAC,MAAM,SAAI,GAAG,SAAS,WAAW,EAAE;IAWxC,WAAW,IAAI,SAAS,WAAW,EAAE;IAOrC,QAAQ,IAAI,mBAAmB;IAS/B,UAAU,IAAI,SAAS,iBAAiB,EAAE;IAI1C,QAAQ,IAAI,SAAS,oBAAoB,EAAE;IAI3C,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,oBAAoB;IA6B5B,OAAO,CAAC,YAAY;IAwBpB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,kBAAkB;CAK3B"}
|