lecodes-viewer 0.19.0

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 (103) hide show
  1. package/README.md +5 -0
  2. package/dist-embed/VERSION.json +5 -0
  3. package/dist-embed/assets/Roboto-Variable-DHm9jpd-.woff2 +0 -0
  4. package/dist-embed/assets/__vite-browser-external-BIHI7g3E.js +1 -0
  5. package/dist-embed/assets/basis-C64VHDVD.js +1 -0
  6. package/dist-embed/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
  7. package/dist-embed/assets/createViewer2d-D12Wy3VF.js +1 -0
  8. package/dist-embed/assets/createViewerLite-CP-WHGLg.js +707 -0
  9. package/dist-embed/assets/creator-gl-BF2CQzeI.wasm +0 -0
  10. package/dist-embed/assets/creator-gl.js-B_0GrQRe.symbols +5379 -0
  11. package/dist-embed/assets/creator-ui-BX5Fvnbt.js +1 -0
  12. package/dist-embed/assets/creator-ui-CzKHLH2Q.wasm +0 -0
  13. package/dist-embed/assets/creator2d-BtQ-1_B0.wasm +0 -0
  14. package/dist-embed/assets/draco-BiISTFcR.js +118 -0
  15. package/dist-embed/assets/draco_decoder-DsQ12WqX.wasm +0 -0
  16. package/dist-embed/assets/host-CWKB1WDd.js +162 -0
  17. package/dist-embed/assets/index-CIK8PnUA.js +2 -0
  18. package/dist-embed/assets/lit-DUE9rhY9.filamat +0 -0
  19. package/dist-embed/assets/loadCreatorUiNode-UAdhjRTd.js +1 -0
  20. package/dist-embed/assets/neutral_ibl128-D-lzdkLN.ktx +0 -0
  21. package/dist-embed/assets/particles-DxYDmI1O.filamat +0 -0
  22. package/dist-embed/assets/particles-quad-DwYo9yCK.filamat +0 -0
  23. package/dist-embed/assets/shadow-C9xJpqlY.filamat +0 -0
  24. package/dist-embed/assets/uberarchive-uXjRYa9p.bin +0 -0
  25. package/dist-embed/assets/unlit-pe4tFY5b.filamat +0 -0
  26. package/dist-embed/assets/unlit-transparent-D9OyaOBR.filamat +0 -0
  27. package/dist-embed/assets/video-eedvhMvS.filamat +0 -0
  28. package/dist-embed/assets/worker-Caf-yYEI.js +2 -0
  29. package/dist-embed/embed.html +48 -0
  30. package/dist-embed/embed.js +187 -0
  31. package/embed.html +48 -0
  32. package/package.json +35 -0
  33. package/src/assets/banner.png +0 -0
  34. package/src/assets/image2.png +0 -0
  35. package/src/assets/landing.mp4 +0 -0
  36. package/src/assets/neutral_ibl128.ktx +0 -0
  37. package/src/assets/neutral_ibl256.ktx +0 -0
  38. package/src/assets/output.mp4 +0 -0
  39. package/src/assets/output2.mp4 +0 -0
  40. package/src/assets/texture.png +0 -0
  41. package/src/assets/vue.svg +1 -0
  42. package/src/canvas/createCanvasHost.ts +2 -0
  43. package/src/createViewer.ts +103 -0
  44. package/src/embed.ts +515 -0
  45. package/src/host.ts +428 -0
  46. package/src/lite-test.ts +160 -0
  47. package/src/main.ts +77 -0
  48. package/src/sourcemapError.ts +2 -0
  49. package/src/ui/CuiProps.gen.ts +103 -0
  50. package/src/ui/UIScreen.ts +486 -0
  51. package/src/ui/createBareUI.ts +32 -0
  52. package/src/ui/createMeasureSystem.ts +220 -0
  53. package/src/ui/createNodeElement.ts +77 -0
  54. package/src/ui/createPagerSystem.ts +345 -0
  55. package/src/ui/createTouchSystem.ts +2 -0
  56. package/src/ui/createUI.ts +806 -0
  57. package/src/ui/creator-ui.js +14 -0
  58. package/src/ui/creator-ui.wasm +0 -0
  59. package/src/ui/defaultStyle.css +176 -0
  60. package/src/ui/layers.ts +9 -0
  61. package/src/ui/mountCanvasUI.ts +213 -0
  62. package/src/ui/nativeViewSystem.ts +91 -0
  63. package/src/ui/presentPlayer.ts +156 -0
  64. package/src/ui/props-apply.ts +403 -0
  65. package/src/ui/router.ts +2 -0
  66. package/src/ui/safeAreaSpec.ts +3 -0
  67. package/src/ui/shells.ts +37 -0
  68. package/src/ui/toasts.ts +2 -0
  69. package/src/ui/transitions.ts +250 -0
  70. package/src/ui/ui.d.ts +78 -0
  71. package/src/ui/vListSystem.ts +212 -0
  72. package/src/ui/viewScale.ts +2 -0
  73. package/src/utils/animate.ts +2 -0
  74. package/src/utils/createUtils.ts +2 -0
  75. package/src/utils/fetch.ts +3 -0
  76. package/src/utils/fonts.ts +2 -0
  77. package/src/utils/globals.ts +2 -0
  78. package/src/utils/imageNode.ts +260 -0
  79. package/src/utils/openFilePicker.ts +2 -0
  80. package/src/utils/svg.ts +2 -0
  81. package/src/utils/videoNode.ts +2 -0
  82. package/src/utils/ws.ts +2 -0
  83. package/src/viewer/createViewer.ts +993 -0
  84. package/src/viewer/creator-gl.js +14 -0
  85. package/src/viewer/creator-gl.js.symbols +5379 -0
  86. package/src/viewer/creator-gl.wasm +0 -0
  87. package/src/viewer/lit.filamat +0 -0
  88. package/src/viewer/mediaplayer.ts +3 -0
  89. package/src/viewer/particles-quad.filamat +0 -0
  90. package/src/viewer/particles.filamat +0 -0
  91. package/src/viewer/physics.ts +140 -0
  92. package/src/viewer/shadow.filamat +0 -0
  93. package/src/viewer/uberarchive.bin +0 -0
  94. package/src/viewer/unlit-transparent.filamat +0 -0
  95. package/src/viewer/unlit.filamat +0 -0
  96. package/src/viewer/validateGlb.ts +262 -0
  97. package/src/viewer/video.filamat +0 -0
  98. package/src/viewer/wasmCrashSymbolizer.ts +133 -0
  99. package/src/viewer2d/createViewer2d.ts +438 -0
  100. package/src/viewer2d/creator2d.js +14 -0
  101. package/src/viewer2d/creator2d.wasm +0 -0
  102. package/src/viewer2d/sprite2d.ts +80 -0
  103. package/src/vite-env.d.ts +1 -0
@@ -0,0 +1,80 @@
1
+ // Typed surface + helpers for the creator-2d host. The raw entry points live on the object returned
2
+ // by createViewer2d (createScene, setSprite, …); this file adds the things that don't belong in the
3
+ // passthrough layer: the typed interface the worker SDK consumes, enums, and a runnable test scene.
4
+ // Mirrors viewer/physics.ts.
5
+ //
6
+ // Conventions (mirror of creator2d.h):
7
+ // - World is Y-up. At camera zoom 1, one world unit == one screen pixel.
8
+ // - Native owns transform/sprite/animation data; TS mutates via the cheap setters below.
9
+ // - Animations advance in c2dRender (zero per-frame JS). Loop/complete events arrive via
10
+ // setOnAnimEvent, drained once per frame.
11
+
12
+ import type { Creator2dViewer } from './createViewer2d'
13
+
14
+ /** A normalized UV frame, [u0, v0, u1, v1] (top-left .. bottom-right). */
15
+ export type UVFrame = readonly [number, number, number, number]
16
+
17
+ export const AnimEventType = {
18
+ LoopReached: 0,
19
+ Completed: 1,
20
+ } as const
21
+ export type AnimEventType = (typeof AnimEventType)[keyof typeof AnimEventType]
22
+
23
+ // The full bridge surface the worker SDK calls through (a structural subset of Creator2dViewer).
24
+ export type Creator2dApi = Creator2dViewer
25
+
26
+ // --- Frame helpers ----------------------------------------------------------------------------
27
+
28
+ /** Slice a uniform grid atlas (e.g. a character sheet) into normalized UV frames. */
29
+ export function gridFrames(
30
+ texW: number, texH: number, frameW: number, frameH: number,
31
+ count: number, startIndex = 0,
32
+ ): Float32Array {
33
+ const cols = Math.max(1, Math.floor(texW / frameW))
34
+ const out = new Float32Array(count * 4)
35
+ for (let i = 0; i < count; i++) {
36
+ const idx = startIndex + i
37
+ const cx = (idx % cols) * frameW
38
+ const cy = Math.floor(idx / cols) * frameH
39
+ out[i * 4 + 0] = cx / texW
40
+ out[i * 4 + 1] = cy / texH
41
+ out[i * 4 + 2] = (cx + frameW) / texW
42
+ out[i * 4 + 3] = (cy + frameH) / texH
43
+ }
44
+ return out
45
+ }
46
+
47
+ // --- Test scene -------------------------------------------------------------------------------
48
+ // Scatters sprites of `textureId` across a Y-sorted layer so depth ordering, batching and the
49
+ // host RAF loop can be eyeballed. Returns the scene + entity ids. Caller loads the texture (texture
50
+ // creation is app-specific, like physics.ts's materialId).
51
+
52
+ export function createSpriteTestScene(viewer: Creator2dApi, textureId: number, count = 200): { sceneId: number; entities: number[] } {
53
+ const sceneId = viewer.createScene()
54
+ viewer.sceneSetClearColor(sceneId, 0.06, 0.07, 0.10, 1)
55
+ viewer.setLayerYSort(sceneId, 1, true)
56
+
57
+ const w = viewer.getTextureWidth(textureId) || 32
58
+ const h = viewer.getTextureHeight(textureId) || 32
59
+ const entities: number[] = []
60
+
61
+ // deterministic scatter (no Math.random dependency for reproducibility)
62
+ let seed = 1234567
63
+ const rnd = () => { seed = (seed * 1103515245 + 12345) & 0x7fffffff; return seed / 0x7fffffff }
64
+
65
+ for (let i = 0; i < count; i++) {
66
+ const e = viewer.createEntity()
67
+ viewer.setSprite(e, textureId)
68
+ viewer.setSpriteSize(e, w, h)
69
+ viewer.setSpriteAnchor(e, 0.5, 1) // feet pivot for Y-sort
70
+ viewer.setPosition(e, (rnd() - 0.5) * 600, (rnd() - 0.5) * 400)
71
+ viewer.setLayer(e, 1)
72
+ viewer.addEntityToScene(sceneId, e)
73
+ entities.push(e)
74
+ }
75
+
76
+ viewer.cameraSetPosition(sceneId, 0, 0)
77
+ viewer.cameraSetZoom(sceneId, 1)
78
+ viewer.openScene(sceneId)
79
+ return { sceneId, entities }
80
+ }
@@ -0,0 +1 @@
1
+ /// <reference types="vite/client" />