@gjsify/example-dom-three-loader-ldraw 0.1.7 → 0.38.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 (37) hide show
  1. package/README.md +78 -0
  2. package/dist/browser.js +8628 -33688
  3. package/dist/gjs.js +3967 -47953
  4. package/dist/gjs.node.mjs +4381 -0
  5. package/dist/index.html +1 -0
  6. package/dist/webgl.css +7 -32
  7. package/package.json +51 -21
  8. package/src/assets/models/ldraw/officialLibrary/CAlicense.txt +248 -0
  9. package/src/assets/models/ldraw/officialLibrary/CAreadme.txt +81 -0
  10. package/src/assets/models/ldraw/officialLibrary/Readme.txt +125 -0
  11. package/src/assets/models/ldraw/officialLibrary/models/10174-1-ImperialAT-ST-UCS.mpd_Packed.mpd +32672 -0
  12. package/src/assets/models/ldraw/officialLibrary/models/1621-1-LunarMPVVehicle.mpd_Packed.mpd +12465 -0
  13. package/src/assets/models/ldraw/officialLibrary/models/30023-1-Lighthouse.ldr_Packed.mpd +4364 -0
  14. package/src/assets/models/ldraw/officialLibrary/models/30051-1-X-wingFighter-Mini.mpd_Packed.mpd +4500 -0
  15. package/src/assets/models/ldraw/officialLibrary/models/30054-1-AT-ST-Mini.mpd_Packed.mpd +6449 -0
  16. package/src/assets/models/ldraw/officialLibrary/models/4489-1-AT-AT-Mini.mpd_Packed.mpd +7242 -0
  17. package/src/assets/models/ldraw/officialLibrary/models/4494-1-Imperial Shuttle-Mini.mpd_Packed.mpd +5530 -0
  18. package/src/assets/models/ldraw/officialLibrary/models/4838-1-MiniVehicles.mpd_Packed.mpd +4880 -0
  19. package/src/assets/models/ldraw/officialLibrary/models/4915-1-MiniConstruction.mpd_Packed.mpd +6481 -0
  20. package/src/assets/models/ldraw/officialLibrary/models/4918-1-MiniFlyers.mpd_Packed.mpd +5518 -0
  21. package/src/assets/models/ldraw/officialLibrary/models/5935-1-IslandHopper.mpd_Packed.mpd +17313 -0
  22. package/src/assets/models/ldraw/officialLibrary/models/6965-1-TIEIntercep_4h4MXk5.mpd_Packed.mpd +2839 -0
  23. package/src/assets/models/ldraw/officialLibrary/models/6966-1-JediStarfighter-Mini.mpd_Packed.mpd +4087 -0
  24. package/src/assets/models/ldraw/officialLibrary/models/7140-1-X-wingFighter.mpd_Packed.mpd +28548 -0
  25. package/src/assets/models/ldraw/officialLibrary/models/889-1-RadarTruck.mpd_Packed.mpd +8429 -0
  26. package/src/assets/models/ldraw/officialLibrary/models/car.ldr_Packed.mpd +5969 -0
  27. package/src/browser/browser-main.ts +4 -0
  28. package/src/browser/browser.ts +199 -0
  29. package/src/browser/index.html +11 -0
  30. package/src/browser/webgl.css +28 -0
  31. package/src/gjs/gjs.ts +31 -0
  32. package/src/gjs/ldraw-window.blp +87 -0
  33. package/src/gjs/ldraw-window.ts +132 -0
  34. package/src/models.ts +28 -0
  35. package/src/three-demo.ts +242 -0
  36. package/dist/adwaita-sans-400-VCQV646T.ttf +0 -0
  37. package/dist/browser.css +0 -10
package/README.md ADDED
@@ -0,0 +1,78 @@
1
+ # @gjsify/example-dom-three-loader-ldraw
2
+
3
+ A three.js LDraw showcase running on GJS/GTK (via `@gjsify/webgl`'s `WebGLBridge` over `Gtk.GLArea`) and in the browser — from a shared `start(canvas)` entry point. Ported from [`three/examples/webgl_loader_ldraw`](https://threejs.org/examples/#webgl_loader_ldraw). The GJS variant renders inside a native Adwaita window; the browser variant uses `@gjsify/adwaita-web` components.
4
+
5
+ Sixteen LDraw models ship with the package; pick one from the sidebar and step through its building instructions.
6
+
7
+ Part of the [gjsify](https://github.com/gjsify/gjsify) project — Node.js and Web APIs for GJS (GNOME JavaScript).
8
+
9
+ ## Targets
10
+
11
+ | Target | Bundle | Platform glue |
12
+ |---|---|---|
13
+ | GJS / GTK 4 | `dist/gjs.js` (`--app gjs`) | `@gjsify/webgl` `WebGLBridge` → `Gtk.GLArea` + libepoxy |
14
+ | Node · Bun · Deno | `dist/gjs.node.mjs` (`--app node`) | the same GTK window through the `@gjsify/node-gi` reverse bridge |
15
+ | Browser | `dist/browser.js` (`--app browser`) | a real `<canvas>` + `@gjsify/adwaita-web` |
16
+
17
+ Every target enters the same `start(canvas)` seam in `src/three-demo.ts` — only the shell around the canvas differs.
18
+
19
+ ## Prerequisites
20
+
21
+ GJS ≥ 1.86 with GTK 4 and a working GL/GLES driver. `gjsify system-check` reports what is missing.
22
+
23
+ ## Run
24
+
25
+ ```bash
26
+ # Build first (gjs + node + browser bundles and the assets)
27
+ gjsify run build
28
+
29
+ # GJS / GTK4 native window (WebGL via Gtk.GLArea)
30
+ gjsify showcase three-loader-ldraw
31
+ # or: gjsify run start
32
+
33
+ # The same --app node bundle on Node.js / Bun / Deno
34
+ gjsify showcase three-loader-ldraw --runtime node # or: bun | deno
35
+ # or: gjsify run start:node
36
+
37
+ # Browser (serves dist/ on localhost:8080)
38
+ gjsify run start:browser
39
+ ```
40
+
41
+ ## What it demonstrates
42
+
43
+ - WebGL rendering on GJS via `@gjsify/webgl` (Vala bridge over `Gtk.GLArea` + libepoxy)
44
+ - three.js (`THREE.WebGLRenderer`) running unmodified on GJS — `LDrawLoader`, `LDrawUtils`, `OrbitControls` and `LDrawConditionalLineMaterial` straight from `three/addons`
45
+ - **A scene that arrives from disk, not from code** — the first showcase here whose
46
+ geometry is fetched: `LDrawLoader` streams a packed `.mpd` through `fetch` and
47
+ `Response.body`, then parses ~250 KB of LDraw commands into 62 meshes and 124
48
+ line objects before the first frame
49
+ - Instanced drawing (`drawElementsInstanced`) and WebGL2 sized internal formats
50
+ - Shared `start(canvas)` pattern — identical entry for GJS, Node and browser
51
+ - Adwaita design language in both variants (native `Adw.*` widgets on GJS, `@gjsify/adwaita-web` in the browser)
52
+ - Live two-way controls over the running scene: model, flat colours, geometry merging, smooth normals, building step and the two line layers — `Adw.ComboRow` / `Adw.SwitchRow` / `Adw.SpinRow` in a sidebar on GJS, the same set as web components in the browser
53
+ - `gjsify build --app gjs`, `--app node` and `--app browser` from one source tree
54
+
55
+ ## Layout
56
+
57
+ ```
58
+ src/
59
+ three-demo.ts shared start(canvas) — the whole demo, platform-agnostic
60
+ models.ts the model catalog both shells read
61
+ gjs/ Adw.Application + ldraw-window.blp (Blueprint UI)
62
+ browser/ adwaita-web shell + index.html + webgl.css
63
+ assets/ packed LDraw models (LDraw Parts Library, CC BY 2.0)
64
+ ```
65
+
66
+ `src/assets/models/ldraw/officialLibrary/` carries the models' own `CAlicense.txt`
67
+ and `CAreadme.txt`; they are shipped as npm assets via `exports['./assets/*']`.
68
+
69
+ ## Related
70
+
71
+ - [`@gjsify/webgl`](../../../packages/framework/webgl) — the `WebGLBridge` implementation this exercises
72
+ - [`@gjsify/fetch`](../../../packages/web/fetch) — where the model bytes come from
73
+ - [`@gjsify/adwaita-web`](../../../packages/web/adwaita-web) — the Adwaita web components of the browser variant
74
+ - [`three-geometry-teapot`](../three-geometry-teapot) — the same seam with geometry built in code instead of loaded
75
+
76
+ ## License
77
+
78
+ MIT