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.
- package/README.md +5 -0
- package/dist-embed/VERSION.json +5 -0
- package/dist-embed/assets/Roboto-Variable-DHm9jpd-.woff2 +0 -0
- package/dist-embed/assets/__vite-browser-external-BIHI7g3E.js +1 -0
- package/dist-embed/assets/basis-C64VHDVD.js +1 -0
- package/dist-embed/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
- package/dist-embed/assets/createViewer2d-D12Wy3VF.js +1 -0
- package/dist-embed/assets/createViewerLite-CP-WHGLg.js +707 -0
- package/dist-embed/assets/creator-gl-BF2CQzeI.wasm +0 -0
- package/dist-embed/assets/creator-gl.js-B_0GrQRe.symbols +5379 -0
- package/dist-embed/assets/creator-ui-BX5Fvnbt.js +1 -0
- package/dist-embed/assets/creator-ui-CzKHLH2Q.wasm +0 -0
- package/dist-embed/assets/creator2d-BtQ-1_B0.wasm +0 -0
- package/dist-embed/assets/draco-BiISTFcR.js +118 -0
- package/dist-embed/assets/draco_decoder-DsQ12WqX.wasm +0 -0
- package/dist-embed/assets/host-CWKB1WDd.js +162 -0
- package/dist-embed/assets/index-CIK8PnUA.js +2 -0
- package/dist-embed/assets/lit-DUE9rhY9.filamat +0 -0
- package/dist-embed/assets/loadCreatorUiNode-UAdhjRTd.js +1 -0
- package/dist-embed/assets/neutral_ibl128-D-lzdkLN.ktx +0 -0
- package/dist-embed/assets/particles-DxYDmI1O.filamat +0 -0
- package/dist-embed/assets/particles-quad-DwYo9yCK.filamat +0 -0
- package/dist-embed/assets/shadow-C9xJpqlY.filamat +0 -0
- package/dist-embed/assets/uberarchive-uXjRYa9p.bin +0 -0
- package/dist-embed/assets/unlit-pe4tFY5b.filamat +0 -0
- package/dist-embed/assets/unlit-transparent-D9OyaOBR.filamat +0 -0
- package/dist-embed/assets/video-eedvhMvS.filamat +0 -0
- package/dist-embed/assets/worker-Caf-yYEI.js +2 -0
- package/dist-embed/embed.html +48 -0
- package/dist-embed/embed.js +187 -0
- package/embed.html +48 -0
- package/package.json +35 -0
- package/src/assets/banner.png +0 -0
- package/src/assets/image2.png +0 -0
- package/src/assets/landing.mp4 +0 -0
- package/src/assets/neutral_ibl128.ktx +0 -0
- package/src/assets/neutral_ibl256.ktx +0 -0
- package/src/assets/output.mp4 +0 -0
- package/src/assets/output2.mp4 +0 -0
- package/src/assets/texture.png +0 -0
- package/src/assets/vue.svg +1 -0
- package/src/canvas/createCanvasHost.ts +2 -0
- package/src/createViewer.ts +103 -0
- package/src/embed.ts +515 -0
- package/src/host.ts +428 -0
- package/src/lite-test.ts +160 -0
- package/src/main.ts +77 -0
- package/src/sourcemapError.ts +2 -0
- package/src/ui/CuiProps.gen.ts +103 -0
- package/src/ui/UIScreen.ts +486 -0
- package/src/ui/createBareUI.ts +32 -0
- package/src/ui/createMeasureSystem.ts +220 -0
- package/src/ui/createNodeElement.ts +77 -0
- package/src/ui/createPagerSystem.ts +345 -0
- package/src/ui/createTouchSystem.ts +2 -0
- package/src/ui/createUI.ts +806 -0
- package/src/ui/creator-ui.js +14 -0
- package/src/ui/creator-ui.wasm +0 -0
- package/src/ui/defaultStyle.css +176 -0
- package/src/ui/layers.ts +9 -0
- package/src/ui/mountCanvasUI.ts +213 -0
- package/src/ui/nativeViewSystem.ts +91 -0
- package/src/ui/presentPlayer.ts +156 -0
- package/src/ui/props-apply.ts +403 -0
- package/src/ui/router.ts +2 -0
- package/src/ui/safeAreaSpec.ts +3 -0
- package/src/ui/shells.ts +37 -0
- package/src/ui/toasts.ts +2 -0
- package/src/ui/transitions.ts +250 -0
- package/src/ui/ui.d.ts +78 -0
- package/src/ui/vListSystem.ts +212 -0
- package/src/ui/viewScale.ts +2 -0
- package/src/utils/animate.ts +2 -0
- package/src/utils/createUtils.ts +2 -0
- package/src/utils/fetch.ts +3 -0
- package/src/utils/fonts.ts +2 -0
- package/src/utils/globals.ts +2 -0
- package/src/utils/imageNode.ts +260 -0
- package/src/utils/openFilePicker.ts +2 -0
- package/src/utils/svg.ts +2 -0
- package/src/utils/videoNode.ts +2 -0
- package/src/utils/ws.ts +2 -0
- package/src/viewer/createViewer.ts +993 -0
- package/src/viewer/creator-gl.js +14 -0
- package/src/viewer/creator-gl.js.symbols +5379 -0
- package/src/viewer/creator-gl.wasm +0 -0
- package/src/viewer/lit.filamat +0 -0
- package/src/viewer/mediaplayer.ts +3 -0
- package/src/viewer/particles-quad.filamat +0 -0
- package/src/viewer/particles.filamat +0 -0
- package/src/viewer/physics.ts +140 -0
- package/src/viewer/shadow.filamat +0 -0
- package/src/viewer/uberarchive.bin +0 -0
- package/src/viewer/unlit-transparent.filamat +0 -0
- package/src/viewer/unlit.filamat +0 -0
- package/src/viewer/validateGlb.ts +262 -0
- package/src/viewer/video.filamat +0 -0
- package/src/viewer/wasmCrashSymbolizer.ts +133 -0
- package/src/viewer2d/createViewer2d.ts +438 -0
- package/src/viewer2d/creator2d.js +14 -0
- package/src/viewer2d/creator2d.wasm +0 -0
- package/src/viewer2d/sprite2d.ts +80 -0
- 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" />
|