create-aura3d 1.4.2 → 1.4.4

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 (78) hide show
  1. package/README.md +2 -2
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/showcase-spec-artifacts.d.ts +5 -0
  7. package/dist/showcase-spec-artifacts.d.ts.map +1 -1
  8. package/dist/showcase-spec-artifacts.js +11 -2
  9. package/dist/showcase-spec-artifacts.js.map +1 -1
  10. package/dist/showcase-spec-asset-pair-composition.d.ts +116 -0
  11. package/dist/showcase-spec-asset-pair-composition.d.ts.map +1 -0
  12. package/dist/showcase-spec-asset-pair-composition.js +336 -0
  13. package/dist/showcase-spec-asset-pair-composition.js.map +1 -0
  14. package/dist/showcase-spec-compiler.d.ts.map +1 -1
  15. package/dist/showcase-spec-compiler.js +149 -10
  16. package/dist/showcase-spec-compiler.js.map +1 -1
  17. package/dist/showcase-spec-composition-evidence.d.ts +14 -0
  18. package/dist/showcase-spec-composition-evidence.d.ts.map +1 -0
  19. package/dist/showcase-spec-composition-evidence.js +123 -0
  20. package/dist/showcase-spec-composition-evidence.js.map +1 -0
  21. package/dist/showcase-spec-evidence.js +50 -1
  22. package/dist/showcase-spec-evidence.js.map +1 -1
  23. package/dist/showcase-spec-game-geometry-extractor.d.ts +4 -2
  24. package/dist/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
  25. package/dist/showcase-spec-game-geometry-extractor.js +248 -26
  26. package/dist/showcase-spec-game-geometry-extractor.js.map +1 -1
  27. package/dist/showcase-spec-game-geometry-probe.d.ts +20 -0
  28. package/dist/showcase-spec-game-geometry-probe.d.ts.map +1 -0
  29. package/dist/showcase-spec-game-geometry-probe.js +16 -0
  30. package/dist/showcase-spec-game-geometry-probe.js.map +1 -0
  31. package/dist/showcase-spec-game-replacement-evidence.js +7 -3
  32. package/dist/showcase-spec-game-replacement-evidence.js.map +1 -1
  33. package/dist/showcase-spec-game-scene-scale.d.ts +10 -0
  34. package/dist/showcase-spec-game-scene-scale.d.ts.map +1 -0
  35. package/dist/showcase-spec-game-scene-scale.js +71 -0
  36. package/dist/showcase-spec-game-scene-scale.js.map +1 -0
  37. package/dist/showcase-spec-game-template-evidence.d.ts +10 -0
  38. package/dist/showcase-spec-game-template-evidence.d.ts.map +1 -1
  39. package/dist/showcase-spec-game-template-evidence.js +48 -5
  40. package/dist/showcase-spec-game-template-evidence.js.map +1 -1
  41. package/dist/showcase-spec-gameplay-evidence.js +4 -3
  42. package/dist/showcase-spec-gameplay-evidence.js.map +1 -1
  43. package/dist/showcase-spec-parser.d.ts.map +1 -1
  44. package/dist/showcase-spec-parser.js +3 -0
  45. package/dist/showcase-spec-parser.js.map +1 -1
  46. package/dist/showcase-spec-platformer-artifacts.d.ts +1 -0
  47. package/dist/showcase-spec-platformer-artifacts.d.ts.map +1 -1
  48. package/dist/showcase-spec-platformer-artifacts.js +164 -43
  49. package/dist/showcase-spec-platformer-artifacts.js.map +1 -1
  50. package/dist/showcase-spec-racing-artifacts.d.ts +1 -0
  51. package/dist/showcase-spec-racing-artifacts.d.ts.map +1 -1
  52. package/dist/showcase-spec-racing-artifacts.js +203 -31
  53. package/dist/showcase-spec-racing-artifacts.js.map +1 -1
  54. package/dist/showcase-spec-replacement-candidates.js +2 -1
  55. package/dist/showcase-spec-replacement-candidates.js.map +1 -1
  56. package/dist/showcase-spec-types.d.ts +22 -0
  57. package/dist/showcase-spec-types.d.ts.map +1 -1
  58. package/package.json +3 -3
  59. package/templates/animation-channel/package.json +1 -1
  60. package/templates/animation-studio/package.json +5 -5
  61. package/templates/character-controller/package.json +3 -3
  62. package/templates/cinematic-scene/package.json +1 -1
  63. package/templates/episode-builder/package.json +1 -1
  64. package/templates/falling-blocks-starter/package.json +1 -1
  65. package/templates/fighting-game/package.json +1 -1
  66. package/templates/mini-game/package.json +1 -1
  67. package/templates/product-viewer/package.json +1 -1
  68. package/templates/prompt-animation-channel/package.json +1 -1
  69. package/templates/racing-starter/package.json +1 -1
  70. package/templates/racing-starter/src/main.ts +1 -1
  71. package/templates/three-compat-architecture-interior/package.json +1 -1
  72. package/templates/three-compat-asset-inspector/package.json +1 -1
  73. package/templates/three-compat-character-viewer/package.json +1 -1
  74. package/templates/three-compat-custom-threejs-migration/package.json +1 -1
  75. package/templates/three-compat-large-scene/package.json +1 -1
  76. package/templates/three-compat-material-authoring/package.json +1 -1
  77. package/templates/three-compat-postprocess-scene/package.json +1 -1
  78. package/templates/three-compat-premium-product-viewer/package.json +1 -1
@@ -1,29 +1,60 @@
1
1
  import { createPlatformerTemplatePlan } from "./showcase-spec-game-template-evidence.js";
2
- export function createPlatformerRouteSource(spec, platformer) {
3
- const characterAsset = requireAsset(spec, platformer.characterAsset);
2
+ import { platformerSceneScale } from "./showcase-spec-game-scene-scale.js";
3
+ export function createPlatformerGeometryContractSource(spec, platformer) {
4
4
  const templatePlan = createPlatformerTemplatePlan(spec, platformer);
5
5
  const { playableSurfaceMap: _playableSurfaceMap, ...levelPlan } = templatePlan;
6
- const level = {
7
- ...levelPlan,
8
- platforms: templatePlan.platforms.map(({ id, x, y, width, height }) => ({ id, x, y, width, height }))
6
+ const surfaceMap = templatePlan.playableSurfaceMap;
7
+ const minX = Math.min(...surfaceMap.surfaces.map((surface) => surface.x - surface.width / 2));
8
+ const maxX = Math.max(...surfaceMap.surfaces.map((surface) => surface.x + surface.width / 2));
9
+ const minY = Math.min(...surfaceMap.surfaces.map((surface) => surface.y));
10
+ const maxY = Math.max(...surfaceMap.surfaces.map((surface) => surface.y + surface.height));
11
+ const contract = {
12
+ schema: "aura3d-game-geometry-contract/1.0",
13
+ routeId: spec.routeId,
14
+ category: "platformer",
15
+ geometrySource: surfaceMap.source,
16
+ sourceReport: platformer.levelDesign.playableSurfaceEvidence,
17
+ surfaceMap: templatePlan.playableSurfaceMap,
18
+ worldAssetBindings: platformer.worldAssets.map((assetId) => ({
19
+ worldAsset: assetId,
20
+ ...(assetId === templatePlan.playableSurfaceMap.assetId
21
+ ? {
22
+ worldAssetHash: templatePlan.playableSurfaceMap.assetHash,
23
+ surfaceSource: templatePlan.playableSurfaceMap.source,
24
+ confidence: templatePlan.playableSurfaceMap.confidence
25
+ }
26
+ : {}),
27
+ surfaceIds: templatePlan.platforms
28
+ .filter((surface) => surface.worldAsset === assetId)
29
+ .map((surface) => surface.id)
30
+ })),
31
+ level: {
32
+ ...levelPlan,
33
+ platforms: templatePlan.platforms.map(({ id, x, y, width, height }) => ({ id, x, y, width, height }))
34
+ },
35
+ authoredSeconds: platformer.levelDesign.minPlayableSeconds,
36
+ cameraBounds: { minX: minX - 0.8, maxX: maxX + 0.8, minY: minY - 0.8, maxY: maxY + 0.8 },
37
+ evidence: {
38
+ geometryReport: platformer.levelDesign.playableSurfaceEvidence,
39
+ routePrimaryScreenshot: platformer.levelDesign.assetPairEvidence?.screenshotEvidence,
40
+ routePrimaryScreenshotSha256: platformer.levelDesign.assetPairEvidence?.screenshotSha256
41
+ },
42
+ design: platformer.levelDesign
9
43
  };
44
+ return `// Generated by the Aura3D showcase spec compiler. Do not edit.
45
+ export const gameGeometryContract = ${JSON.stringify(contract, null, 2)} as const;
46
+ `;
47
+ }
48
+ export function createPlatformerRouteSource(spec, platformer) {
49
+ const characterAsset = requireAsset(spec, platformer.characterAsset);
50
+ const templatePlan = createPlatformerTemplatePlan(spec, platformer);
10
51
  const playableSurfaceMap = templatePlan.playableSurfaceMap;
11
- requireAsset(spec, playableSurfaceMap.assetId);
12
- const worldBindings = platformer.worldAssets.map((assetId) => ({
13
- worldAsset: assetId,
14
- ...(assetId === playableSurfaceMap.assetId
15
- ? {
16
- worldAssetHash: playableSurfaceMap.assetHash,
17
- surfaceSource: playableSurfaceMap.source,
18
- confidence: playableSurfaceMap.confidence
19
- }
20
- : {}),
21
- surfaceIds: templatePlan.platforms
22
- .filter((platform) => platform.worldAsset === assetId)
23
- .map((platform) => platform.id)
24
- }));
52
+ const sceneScale = platformerSceneScale(playableSurfaceMap);
53
+ const worldAsset = requireAsset(spec, playableSurfaceMap.assetId);
54
+ const panelMarkup = createPlatformerPanelMarkup(spec);
25
55
  return `import { createAuraApp, game, lights, model, scene } from "@aura3d/engine";
26
56
  import { assets } from "../../../src/aura-assets";
57
+ import { gameGeometryContract } from "./generated/game-geometry";
27
58
 
28
59
  const input = game.input({
29
60
  actions: {
@@ -35,27 +66,28 @@ const input = game.input({
35
66
  axes: { moveX: { negative: "left", positive: "right" } },
36
67
  bufferMs: 120
37
68
  });
38
- const authoredPlayableSeconds = ${platformer.levelDesign.minPlayableSeconds};
39
- const playableSurfaceMap = ${JSON.stringify(playableSurfaceMap, null, 2)} as const;
69
+ const authoredPlayableSeconds = gameGeometryContract.authoredSeconds;
70
+ const playableSurfaceMap = gameGeometryContract.surfaceMap;
40
71
  const level = game.assetBoundPlatformerLevel({
41
72
  characterAsset: "${platformer.characterAsset}",
42
- worldAssetBindings: ${JSON.stringify(worldBindings, null, 2)},
73
+ worldAssetBindings: gameGeometryContract.worldAssetBindings,
43
74
  playableSurfaceMap,
75
+ authoredPlayableSeconds,
44
76
  minPlayableSeconds: ${platformer.levelDesign.minPlayableSeconds},
45
77
  minCheckpoints: ${platformer.levelDesign.minCheckpoints},
46
- level: ${JSON.stringify(level, null, 2)}
78
+ level: gameGeometryContract.level
47
79
  });
48
80
  const platformerScene = game.platformerSceneBinding({
49
81
  surfaceMap: playableSurfaceMap,
50
82
  level,
51
83
  worldAsset: "${playableSurfaceMap.assetId}",
52
- targetSceneWidth: 6.4,
53
- worldModelTargetMaxDimension: 6.4,
84
+ targetSceneWidth: ${sceneScale.targetSceneWidth},
85
+ worldModelTargetMaxDimension: ${sceneScale.worldModelTargetMaxDimension},
54
86
  worldY: -0.72,
55
87
  worldZ: -0.46,
56
88
  playerZ: 0.42,
57
- playerTargetHeight: 0.58,
58
- playerYOffset: 0.03
89
+ playerTargetHeight: 0.32,
90
+ playerYOffset: 0
59
91
  });
60
92
  const platformerState = game.platformer(level);
61
93
  let state = platformerState.snapshot();
@@ -88,13 +120,34 @@ const animationStateHistory = [{ state: "idle" }];
88
120
  function round(value: number): number {
89
121
  return Math.round(value * 1000) / 1000;
90
122
  }
123
+ const platformerCamera = game.platformerCameraRig({
124
+ sceneBinding: platformerScene,
125
+ player: state.player,
126
+ mode: "follow",
127
+ targetNode: "platformer-player",
128
+ distance: 3.7,
129
+ height: 0.52,
130
+ lookAhead: 0.7,
131
+ fov: 40
132
+ });
133
+ setupPlatformerPanel();
91
134
 
92
135
  const app = createAuraApp("#app", {
93
136
  diagnostics: { overlay: false, performancePanel: false },
94
137
  scene: scene()
95
- .addMany(game.publicPlatformerPresentation({
138
+ .add(model(${worldAsset.typedRef}, {
139
+ name: "platformer-bound-world-asset",
140
+ role: "primaryWorld",
141
+ scaleMode: "fit",
142
+ targetMaxDimension: platformerScene.worldModel.targetMaxDimension
143
+ }).position(...platformerScene.worldModel.position).rotate(...platformerScene.worldModel.rotation).runtime(game.runtimeNode("platformer-bound-world-asset", {
144
+ tags: ["world", "typed-secondary-primary-asset", "certified-visible-geometry"]
145
+ })))
146
+ .addMany(game.platformerPresentationSurfaces({
96
147
  sceneBinding: platformerScene,
97
148
  level,
149
+ mode: "asset-overlay",
150
+ guideVisibility: "public",
98
151
  platformColor: "#526972",
99
152
  platformTrimColor: "#b7f3ff",
100
153
  hazardColor: "#ff6978",
@@ -105,24 +158,40 @@ const app = createAuraApp("#app", {
105
158
  name: "platformer-readable-character",
106
159
  role: "primaryCharacter",
107
160
  scaleMode: "fit",
108
- targetHeight: 0.58
161
+ targetHeight: 0.32
109
162
  }).position(...initialPlayerPose.position).runtime(game.runtimeNode("platformer-player", {
110
163
  tags: ["player", "character", "typed-primary-asset"]
111
164
  })))
112
- .add(lights.studio())
113
- .camera(game.platformerCameraRig({
114
- sceneBinding: platformerScene,
115
- player: state.player,
116
- mode: "follow",
117
- targetNode: "platformer-player",
118
- distance: 4.15,
119
- height: 0.44,
120
- lookAhead: 0.72,
121
- fov: 41
122
- }))
165
+ .add(lights.studio({ intensity: 1.5 }))
166
+ .camera(platformerCamera)
123
167
  });
124
168
 
125
169
  const player = app.nodes.require("platformer-player");
170
+ Object.defineProperty(window, "__AURA3D_COMPOSITION_PROBE__", {
171
+ value: {
172
+ category: "platformer",
173
+ camera: platformerCamera,
174
+ subject: { position: initialPlayerPose.position, rotation: [0, 0, 0], targetSize: 0.32 },
175
+ playSpacePoints: level.platforms.flatMap((surface) => [
176
+ platformerScene.toScenePoint({ x: surface.x, y: surface.y + surface.height }),
177
+ platformerScene.toScenePoint({ x: surface.x + surface.width, y: surface.y + surface.height })
178
+ ]),
179
+ contactPoint: platformerScene.contactPointForPlayer(state.player),
180
+ setSubjectSuppressed: (suppressed: boolean) => {
181
+ app.pause();
182
+ player.setScale(suppressed ? 0.0001 : 1);
183
+ app.step(0);
184
+ }
185
+ },
186
+ configurable: true
187
+ });
188
+ const hud = {
189
+ x: requireElement("x-value"),
190
+ score: requireElement("score-value"),
191
+ deaths: requireElement("death-value"),
192
+ checkpoint: requireElement("checkpoint-value"),
193
+ surface: requireElement("surface-value")
194
+ };
126
195
  function readAnimationState(): string {
127
196
  if (state.events.some((event) => event.type === "hit")) return "hit";
128
197
  if (state.player.vy > 0.05) return "jump";
@@ -172,6 +241,10 @@ const mountedEvidence = {
172
241
  schema: "aura3d-showcase-compiled-platformer-route/1.1",
173
242
  appId: "${spec.routeId}",
174
243
  status: "ready",
244
+ controls: { keyboard: ["ArrowLeft", "ArrowRight", "KeyA", "KeyD", "Space", "ArrowUp", "KeyW", "KeyR"] },
245
+ systems: { input: "game.input", simulation: "game.platformer", geometry: "certified-platformer-surfaces", camera: "game.platformerCameraRig" },
246
+ claimBoundary: "Bounded certified-surface platformer presentation; no physics-engine, automatic GLB-to-game, or unsupported skinned-animation claim.",
247
+ platformerStateStatus: state.status,
175
248
  frameCount,
176
249
  score: state.score,
177
250
  coins: state.collected.length,
@@ -192,7 +265,8 @@ const mountedEvidence = {
192
265
  surfaceContactProven: initialSurfaceAlignment.feetOnSurface,
193
266
  visibleGameGeometrySource: "surface-map-bound-game-level",
194
267
  worldAssetUsedForSurfaceEvidence: "${playableSurfaceMap.assetId}",
195
- visualReviewPass: false
268
+ noDebugSurfaceGuides: true,
269
+ visualReviewPass: ${spec.evidence.visualReviewPassed === true}
196
270
  },
197
271
  primaryAssets: [${spec.primaryAssets.map((asset) => `"${asset.id}"`).join(", ")}],
198
272
  platformer: {
@@ -200,7 +274,7 @@ const mountedEvidence = {
200
274
  characterAsset: "${platformer.characterAsset}",
201
275
  worldAssets: [${platformer.worldAssets.map((assetId) => `"${assetId}"`).join(", ")}],
202
276
  gameplayRequirements: [${platformer.gameplayRequirements.map((requirement) => `"${requirement}"`).join(", ")}],
203
- levelDesign: ${JSON.stringify(platformer.levelDesign, null, 2)},
277
+ levelDesign: gameGeometryContract.design,
204
278
  playableSurfaceMap,
205
279
  assetBinding: level.assetBinding,
206
280
  sceneBinding: platformerScene.evidence
@@ -217,12 +291,14 @@ const mountedEvidence = {
217
291
  }
218
292
  };
219
293
  Object.defineProperty(window, "${spec.globalName}", { value: mountedEvidence, configurable: true, writable: true });
294
+ updatePlatformerHud();
220
295
 
221
296
  function publishPlatformerEvidence(): void {
222
297
  rememberAnimationState();
223
298
  const scenePlayer = platformerScene.toScenePlayer(state.player);
224
299
  player.setPosition(...scenePlayer.position);
225
- mountedEvidence.status = state.status;
300
+ mountedEvidence.status = "running";
301
+ mountedEvidence.platformerStateStatus = state.status;
226
302
  mountedEvidence.frameCount = frameCount;
227
303
  mountedEvidence.score = state.score;
228
304
  mountedEvidence.coins = state.collected.length;
@@ -233,6 +309,7 @@ function publishPlatformerEvidence(): void {
233
309
  sampleFrame: frameCount
234
310
  };
235
311
  mountedEvidence.diagnostics = routeDiagnostics();
312
+ updatePlatformerHud();
236
313
  }
237
314
 
238
315
  app.onFrame(({ dt }) => {
@@ -263,8 +340,52 @@ app.onFrame(({ dt }) => {
263
340
  kitContractProof.jumpChangesVerticalState ||= mountedEvidence.gameplay.jumpChangesY || Math.abs(state.player.vy) > 0.05;
264
341
  publishPlatformerEvidence();
265
342
  });
343
+
344
+ function setupPlatformerPanel(): void {
345
+ const panel = document.getElementById("panel");
346
+ if (!panel) return;
347
+ panel.innerHTML = ${JSON.stringify(panelMarkup)};
348
+ bindHoldControl("left-control", "KeyA");
349
+ bindHoldControl("right-control", "KeyD");
350
+ document.getElementById("jump-control")?.addEventListener("click", () => pulseKey("Space"));
351
+ document.getElementById("reset-control")?.addEventListener("click", () => pulseKey("KeyR"));
352
+ }
353
+ function bindHoldControl(id: string, code: string): void {
354
+ const button = document.getElementById(id);
355
+ if (!button) return;
356
+ const release = () => window.dispatchEvent(new KeyboardEvent("keyup", { code, bubbles: true }));
357
+ button.addEventListener("pointerdown", () => window.dispatchEvent(new KeyboardEvent("keydown", { code, bubbles: true })));
358
+ button.addEventListener("pointerup", release);
359
+ button.addEventListener("pointercancel", release);
360
+ button.addEventListener("pointerleave", release);
361
+ }
362
+ function pulseKey(code: string): void {
363
+ window.dispatchEvent(new KeyboardEvent("keydown", { code, bubbles: true }));
364
+ window.setTimeout(() => window.dispatchEvent(new KeyboardEvent("keyup", { code, bubbles: true })), 40);
365
+ }
366
+ function updatePlatformerHud(): void {
367
+ hud.x.textContent = round(state.player.x).toFixed(2);
368
+ hud.score.textContent = String(state.score);
369
+ hud.deaths.textContent = String(state.deaths);
370
+ hud.checkpoint.textContent = state.checkpointId;
371
+ const alignment = playerSurfaceAlignment();
372
+ hud.surface.textContent = alignment.feetOnSurface ? "Grounded on " + alignment.surfaceId : "Airborne";
373
+ }
374
+ function requireElement(id: string): HTMLElement {
375
+ const element = document.getElementById(id);
376
+ if (!element) throw new Error("Missing element #" + id);
377
+ return element;
378
+ }
266
379
  `;
267
380
  }
381
+ function createPlatformerPanelMarkup(spec) {
382
+ return `<span class="label">Certified surface route</span>
383
+ <h1>${spec.label}</h1>
384
+ <p class="claim">Run across a mesh-derived verdant course with checkpoints, collectibles, a hazard retry, and a finish state.</p>
385
+ <section class="panel-metrics" aria-label="Live runner metrics"><div class="metrics-row"><article><span>X</span><strong id="x-value">0.00</strong></article><article><span>Score</span><strong id="score-value">0</strong></article><article><span>Deaths</span><strong id="death-value">0</strong></article><article><span>Checkpoint</span><strong id="checkpoint-value">start</strong></article></div><div class="objective" id="surface-value">Finding surface…</div></section>
386
+ <section aria-label="Runner controls"><h2>Run the route</h2><div class="button-grid"><button id="left-control" type="button">Move left</button><button id="right-control" type="button">Move right</button><button id="jump-control" type="button">Jump</button><button id="reset-control" type="button">Reset</button></div><ul class="controls-list"><li>Use A / D or arrow keys to move.</li><li>Press W, Up, or Space to jump.</li><li>Press R to restart from the beginning.</li></ul></section>
387
+ <section aria-label="Geometry contract"><h2>Surface contract</h2><p class="claim">The visible world and player contacts share the same hash-bound mesh extraction transform.</p></section>`;
388
+ }
268
389
  function requireAsset(spec, assetId) {
269
390
  const asset = spec.primaryAssets.find((candidate) => candidate.id === assetId);
270
391
  if (!asset)
@@ -1 +1 @@
1
- {"version":3,"file":"showcase-spec-platformer-artifacts.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-platformer-artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"showcase-spec-platformer-artifacts.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-platformer-artifacts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { ShowcaseRacingSpec, ShowcaseSpec } from "./showcase-spec-types.js";
2
+ export declare function createRacingGeometryContractSource(spec: ShowcaseSpec, racing: ShowcaseRacingSpec): string;
2
3
  export declare function createRacingRouteSource(spec: ShowcaseSpec, racing: ShowcaseRacingSpec): string;
3
4
  //# sourceMappingURL=showcase-spec-racing-artifacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"showcase-spec-racing-artifacts.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-racing-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EAEb,MAAM,0BAA0B,CAAC;AAGlC,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAwQ9F"}
1
+ {"version":3,"file":"showcase-spec-racing-artifacts.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/showcase-spec-racing-artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EAEb,MAAM,0BAA0B,CAAC;AAIlC,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAuDzG;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,kBAAkB,GAAG,MAAM,CA8W9F"}