@kerros/viewer 0.0.0-stage → 0.1.0-rc.1

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 (264) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -2
  3. package/dist/adapters/basemap.js +11 -0
  4. package/dist/adapters/basemap.js.map +1 -0
  5. package/dist/adapters/persistence.js +121 -0
  6. package/dist/adapters/persistence.js.map +1 -0
  7. package/dist/adapters/status.js +18 -0
  8. package/dist/adapters/status.js.map +1 -0
  9. package/dist/components/ElevatorPanel.js +120 -0
  10. package/dist/components/ElevatorPanel.js.map +1 -0
  11. package/dist/components/Icons.js +57 -0
  12. package/dist/components/Icons.js.map +1 -0
  13. package/dist/components/Inspector.js +1184 -0
  14. package/dist/components/Inspector.js.map +1 -0
  15. package/dist/components/NavigatePanel.js +301 -0
  16. package/dist/components/NavigatePanel.js.map +1 -0
  17. package/dist/components/NavigationGraph.js +234 -0
  18. package/dist/components/NavigationGraph.js.map +1 -0
  19. package/dist/components/StructureExplorer.js +510 -0
  20. package/dist/components/StructureExplorer.js.map +1 -0
  21. package/dist/components/StructureView.js +286 -0
  22. package/dist/components/StructureView.js.map +1 -0
  23. package/dist/components/controls.js +170 -0
  24. package/dist/components/controls.js.map +1 -0
  25. package/dist/components/graphLayout.js +27 -0
  26. package/dist/components/graphLayout.js.map +1 -0
  27. package/dist/host.js +169 -0
  28. package/dist/host.js.map +1 -0
  29. package/dist/i18n.js +88 -0
  30. package/dist/i18n.js.map +1 -0
  31. package/dist/index.js +171 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/map/CabinMaterials.js +81 -0
  34. package/dist/map/CabinMaterials.js.map +1 -0
  35. package/dist/map/CabinMirror.js +43 -0
  36. package/dist/map/CabinMirror.js.map +1 -0
  37. package/dist/map/Doors.js +80 -0
  38. package/dist/map/Doors.js.map +1 -0
  39. package/dist/map/ElevatorCabin.js +93 -0
  40. package/dist/map/ElevatorCabin.js.map +1 -0
  41. package/dist/map/FixtureLights.js +117 -0
  42. package/dist/map/FixtureLights.js.map +1 -0
  43. package/dist/map/MapCanvas.js +2161 -0
  44. package/dist/map/MapCanvas.js.map +1 -0
  45. package/dist/map/Passenger.js +69 -0
  46. package/dist/map/Passenger.js.map +1 -0
  47. package/dist/map/SceneLayer.js +1534 -0
  48. package/dist/map/SceneLayer.js.map +1 -0
  49. package/dist/map/UndergroundContext.js +153 -0
  50. package/dist/map/UndergroundContext.js.map +1 -0
  51. package/dist/map/ambience.js +194 -0
  52. package/dist/map/ambience.js.map +1 -0
  53. package/dist/map/architecture.js +305 -0
  54. package/dist/map/architecture.js.map +1 -0
  55. package/dist/map/bathMusic.js +92 -0
  56. package/dist/map/bathMusic.js.map +1 -0
  57. package/dist/map/cameraAim.js +33 -0
  58. package/dist/map/cameraAim.js.map +1 -0
  59. package/dist/map/elevators.js +56 -0
  60. package/dist/map/elevators.js.map +1 -0
  61. package/dist/map/excavation.js +52 -0
  62. package/dist/map/excavation.js.map +1 -0
  63. package/dist/map/exteriors.js +25 -0
  64. package/dist/map/exteriors.js.map +1 -0
  65. package/dist/map/features.js +218 -0
  66. package/dist/map/features.js.map +1 -0
  67. package/dist/map/fences.js +29 -0
  68. package/dist/map/fences.js.map +1 -0
  69. package/dist/map/journey.js +112 -0
  70. package/dist/map/journey.js.map +1 -0
  71. package/dist/map/levels.js +6 -0
  72. package/dist/map/levels.js.map +1 -0
  73. package/dist/map/lighting.js +142 -0
  74. package/dist/map/lighting.js.map +1 -0
  75. package/dist/map/loadBasemap.js +26 -0
  76. package/dist/map/loadBasemap.js.map +1 -0
  77. package/dist/map/materials.js +183 -0
  78. package/dist/map/materials.js.map +1 -0
  79. package/dist/map/poolLighting.js +39 -0
  80. package/dist/map/poolLighting.js.map +1 -0
  81. package/dist/map/projection.js +24 -0
  82. package/dist/map/projection.js.map +1 -0
  83. package/dist/map/rampGeometry.js +38 -0
  84. package/dist/map/rampGeometry.js.map +1 -0
  85. package/dist/map/route.js +107 -0
  86. package/dist/map/route.js.map +1 -0
  87. package/dist/map/stairSurfaces.js +115 -0
  88. package/dist/map/stairSurfaces.js.map +1 -0
  89. package/dist/map/surfaces.js +136 -0
  90. package/dist/map/surfaces.js.map +1 -0
  91. package/dist/map/textures.js +95 -0
  92. package/dist/map/textures.js.map +1 -0
  93. package/dist/map/underground.js +34 -0
  94. package/dist/map/underground.js.map +1 -0
  95. package/dist/map/walk.js +433 -0
  96. package/dist/map/walk.js.map +1 -0
  97. package/dist/map/walkContext.js +46 -0
  98. package/dist/map/walkContext.js.map +1 -0
  99. package/dist/map/walkDimensions.js +7 -0
  100. package/dist/map/walkDimensions.js.map +1 -0
  101. package/dist/map/walkJourney.js +85 -0
  102. package/dist/map/walkJourney.js.map +1 -0
  103. package/dist/map/walkSurfaces.js +106 -0
  104. package/dist/map/walkSurfaces.js.map +1 -0
  105. package/dist/map/wallJoins.js +70 -0
  106. package/dist/map/wallJoins.js.map +1 -0
  107. package/dist/map/water.js +274 -0
  108. package/dist/map/water.js.map +1 -0
  109. package/dist/model/authoring.js +80 -0
  110. package/dist/model/authoring.js.map +1 -0
  111. package/dist/model/boundaries.js +548 -0
  112. package/dist/model/boundaries.js.map +1 -0
  113. package/dist/model/coverage.js +30 -0
  114. package/dist/model/coverage.js.map +1 -0
  115. package/dist/model/document.js +52 -0
  116. package/dist/model/document.js.map +1 -0
  117. package/dist/model/doors.js +47 -0
  118. package/dist/model/doors.js.map +1 -0
  119. package/dist/model/factory.js +56 -0
  120. package/dist/model/factory.js.map +1 -0
  121. package/dist/model/geometry.js +394 -0
  122. package/dist/model/geometry.js.map +1 -0
  123. package/dist/model/inference.js +182 -0
  124. package/dist/model/inference.js.map +1 -0
  125. package/dist/model/materials.js +11 -0
  126. package/dist/model/materials.js.map +1 -0
  127. package/dist/model/mutations.js +157 -0
  128. package/dist/model/mutations.js.map +1 -0
  129. package/dist/model/navigation.js +275 -0
  130. package/dist/model/navigation.js.map +1 -0
  131. package/dist/model/ontology.js +109 -0
  132. package/dist/model/ontology.js.map +1 -0
  133. package/dist/model/passages.js +5 -0
  134. package/dist/model/passages.js.map +1 -0
  135. package/dist/model/portals.js +42 -0
  136. package/dist/model/portals.js.map +1 -0
  137. package/dist/model/precision.js +11 -0
  138. package/dist/model/precision.js.map +1 -0
  139. package/dist/model/project.js +17 -0
  140. package/dist/model/project.js.map +1 -0
  141. package/dist/model/ramps.js +10 -0
  142. package/dist/model/ramps.js.map +1 -0
  143. package/dist/model/roomNavigation.js +87 -0
  144. package/dist/model/roomNavigation.js.map +1 -0
  145. package/dist/model/routeClearance.js +72 -0
  146. package/dist/model/routeClearance.js.map +1 -0
  147. package/dist/model/spaces.js +104 -0
  148. package/dist/model/spaces.js.map +1 -0
  149. package/dist/model/stairGeometry.js +40 -0
  150. package/dist/model/stairGeometry.js.map +1 -0
  151. package/dist/model/stairTraversal.js +48 -0
  152. package/dist/model/stairTraversal.js.map +1 -0
  153. package/dist/model/topology.js +63 -0
  154. package/dist/model/topology.js.map +1 -0
  155. package/dist/model/types.js +35 -0
  156. package/dist/model/types.js.map +1 -0
  157. package/dist/model/validate.js +240 -0
  158. package/dist/model/validate.js.map +1 -0
  159. package/dist/model/vertical.js +129 -0
  160. package/dist/model/vertical.js.map +1 -0
  161. package/dist/model/walls.js +71 -0
  162. package/dist/model/walls.js.map +1 -0
  163. package/dist/styles.css +4931 -0
  164. package/dist/theme/index.js +34 -0
  165. package/dist/theme/index.js.map +1 -0
  166. package/dist/types/adapters/basemap.d.ts +2 -0
  167. package/dist/types/adapters/persistence.d.ts +29 -0
  168. package/dist/types/adapters/status.d.ts +4 -0
  169. package/dist/types/components/ElevatorPanel.d.ts +18 -0
  170. package/dist/types/components/Icons.d.ts +8 -0
  171. package/dist/types/components/Inspector.d.ts +38 -0
  172. package/dist/types/components/NavigatePanel.d.ts +27 -0
  173. package/dist/types/components/NavigationGraph.d.ts +10 -0
  174. package/dist/types/components/StructureExplorer.d.ts +8 -0
  175. package/dist/types/components/StructureView.d.ts +22 -0
  176. package/dist/types/components/controls.d.ts +52 -0
  177. package/dist/types/components/graphLayout.d.ts +9 -0
  178. package/dist/types/i18n.d.ts +85 -0
  179. package/dist/types/import/analysisPreview.d.ts +27 -0
  180. package/dist/types/import/brief.d.ts +22 -0
  181. package/dist/types/import/checkpoint.d.ts +49 -0
  182. package/dist/types/import/instructions.d.ts +7 -0
  183. package/dist/types/import/usage.d.ts +10 -0
  184. package/dist/types/map/CabinMaterials.d.ts +18 -0
  185. package/dist/types/map/CabinMirror.d.ts +13 -0
  186. package/dist/types/map/Doors.d.ts +11 -0
  187. package/dist/types/map/ElevatorCabin.d.ts +20 -0
  188. package/dist/types/map/FixtureLights.d.ts +35 -0
  189. package/dist/types/map/MapCanvas.d.ts +87 -0
  190. package/dist/types/map/Passenger.d.ts +18 -0
  191. package/dist/types/map/SceneLayer.d.ts +306 -0
  192. package/dist/types/map/UndergroundContext.d.ts +18 -0
  193. package/dist/types/map/ambience.d.ts +29 -0
  194. package/dist/types/map/architecture.d.ts +8 -0
  195. package/dist/types/map/bathMusic.d.ts +14 -0
  196. package/dist/types/map/cameraAim.d.ts +20 -0
  197. package/dist/types/map/elevators.d.ts +16 -0
  198. package/dist/types/map/excavation.d.ts +9 -0
  199. package/dist/types/map/exteriors.d.ts +3 -0
  200. package/dist/types/map/features.d.ts +33 -0
  201. package/dist/types/map/fences.d.ts +4 -0
  202. package/dist/types/map/journey.d.ts +36 -0
  203. package/dist/types/map/levels.d.ts +4 -0
  204. package/dist/types/map/lighting.d.ts +103 -0
  205. package/dist/types/map/loadBasemap.d.ts +4 -0
  206. package/dist/types/map/materials.d.ts +38 -0
  207. package/dist/types/map/poolLighting.d.ts +11 -0
  208. package/dist/types/map/projection.d.ts +9 -0
  209. package/dist/types/map/rampGeometry.d.ts +8 -0
  210. package/dist/types/map/route.d.ts +59 -0
  211. package/dist/types/map/stairSurfaces.d.ts +29 -0
  212. package/dist/types/map/surfaces.d.ts +36 -0
  213. package/dist/types/map/textures.d.ts +8 -0
  214. package/dist/types/map/underground.d.ts +30 -0
  215. package/dist/types/map/walk.d.ts +232 -0
  216. package/dist/types/map/walkContext.d.ts +11 -0
  217. package/dist/types/map/walkDimensions.d.ts +5 -0
  218. package/dist/types/map/walkJourney.d.ts +33 -0
  219. package/dist/types/map/walkSurfaces.d.ts +27 -0
  220. package/dist/types/map/wallJoins.d.ts +6 -0
  221. package/dist/types/map/water.d.ts +12 -0
  222. package/dist/types/model/authoring.d.ts +38 -0
  223. package/dist/types/model/boundaries.d.ts +41 -0
  224. package/dist/types/model/coverage.d.ts +8 -0
  225. package/dist/types/model/document.d.ts +9 -0
  226. package/dist/types/model/doors.d.ts +19 -0
  227. package/dist/types/model/factory.d.ts +5 -0
  228. package/dist/types/model/geometry.d.ts +99 -0
  229. package/dist/types/model/host.d.ts +154 -0
  230. package/dist/types/model/inference.d.ts +46 -0
  231. package/dist/types/model/live.d.ts +60 -0
  232. package/dist/types/model/materials.d.ts +28 -0
  233. package/dist/types/model/mutations.d.ts +178 -0
  234. package/dist/types/model/navigation.d.ts +70 -0
  235. package/dist/types/model/ontology.d.ts +43 -0
  236. package/dist/types/model/passages.d.ts +2 -0
  237. package/dist/types/model/portals.d.ts +9 -0
  238. package/dist/types/model/precision.d.ts +11 -0
  239. package/dist/types/model/project.d.ts +8 -0
  240. package/dist/types/model/ramps.d.ts +7 -0
  241. package/dist/types/model/roomNavigation.d.ts +15 -0
  242. package/dist/types/model/routeClearance.d.ts +11 -0
  243. package/dist/types/model/spaces.d.ts +46 -0
  244. package/dist/types/model/stairGeometry.d.ts +27 -0
  245. package/dist/types/model/stairTraversal.d.ts +8 -0
  246. package/dist/types/model/topology.d.ts +14 -0
  247. package/dist/types/model/types.d.ts +369 -0
  248. package/dist/types/model/validate.d.ts +38 -0
  249. package/dist/types/model/vertical.d.ts +145 -0
  250. package/dist/types/model/walls.d.ts +71 -0
  251. package/dist/types/schema/index.d.ts +25 -0
  252. package/dist/types/theme/index.d.ts +55 -0
  253. package/dist/types/viewer/FloorViewer.d.ts +76 -0
  254. package/dist/types/viewer/ViewerWorkspace.d.ts +2 -0
  255. package/dist/types/viewer/host.d.ts +11 -0
  256. package/dist/types/viewer/index.d.ts +2 -0
  257. package/dist/types/viewer/panels.d.ts +12 -0
  258. package/dist/viewer/FloorViewer.js +104 -0
  259. package/dist/viewer/FloorViewer.js.map +1 -0
  260. package/dist/viewer/ViewerWorkspace.js +370 -0
  261. package/dist/viewer/ViewerWorkspace.js.map +1 -0
  262. package/dist/viewer/panels.js +35 -0
  263. package/dist/viewer/panels.js.map +1 -0
  264. package/package.json +52 -4
@@ -0,0 +1,69 @@
1
+ var k = Object.defineProperty;
2
+ var z = (l, w, n) => w in l ? k(l, w, { enumerable: !0, configurable: !0, writable: !0, value: n }) : l[w] = n;
3
+ var d = (l, w, n) => z(l, typeof w != "symbol" ? w + "" : w, n);
4
+ import * as h from "three";
5
+ import { REFLECTION_BODY as b } from "./CabinMirror.js";
6
+ class C extends h.Group {
7
+ constructor(n) {
8
+ super();
9
+ d(this, "head", new h.Group());
10
+ d(this, "arms", []);
11
+ d(this, "elbows", []);
12
+ d(this, "legs", []);
13
+ d(this, "knees", []);
14
+ d(this, "previous");
15
+ d(this, "phase", 0);
16
+ d(this, "yaw");
17
+ d(this, "waveUntil", 0);
18
+ this.name = "POV passenger", this.userData.passenger = !0;
19
+ const r = (e, i = 0.8) => new h.MeshStandardMaterial({ color: e, roughness: i, envMap: n, envMapIntensity: 1.2 }), m = r("#425563"), M = r("#ddd7c7"), u = r("#29303b"), v = r("#242323", 0.48), c = r("#bc8f73"), g = r("#302823"), x = r("#292b2b"), s = (e, i, o, a, p) => {
20
+ const y = new h.Mesh(i, o);
21
+ return y.position.set(a[0], a[1], a[2]), p && y.scale.set(p[0], p[1], p[2]), y.castShadow = y.receiveShadow = !0, e.add(y), y;
22
+ }, t = (e, i, o, a) => s(e, new h.SphereGeometry(1, 16, 12), i, o, a), G = (e, i, o, a) => s(e, new h.CapsuleGeometry(a, o - 2 * a, 4, 10).rotateX(Math.PI / 2), i, [
23
+ 0,
24
+ 0,
25
+ -o / 2
26
+ ]);
27
+ s(
28
+ this,
29
+ new h.CylinderGeometry(0.21, 0.17, 0.5, 12).rotateX(Math.PI / 2),
30
+ m,
31
+ [0, -0.06, 1.18],
32
+ [1, 0.56, 1]
33
+ ).layers.set(b), s(this, new h.BoxGeometry(0.11, 0.015, 0.3), M, [0, 0.065, 1.29]).layers.set(b), s(this, new h.BoxGeometry(0.012, 0.016, 0.43), u, [0, 0.072, 1.18]).layers.set(b), t(this, c, [0, -0.06, 1.48], [0.058, 0.055, 0.115]).layers.set(b), t(this, u, [0, -0.055, 0.88], [0.175, 0.125, 0.13]), this.head.position.set(0, -0.06, 1.51), this.add(this.head), t(this.head, c, [0, 0, 0.16], [0.125, 0.11, 0.16]), t(this.head, g, [0, -0.027, 0.24], [0.128, 0.106, 0.095]), t(this.head, c, [0, 0.11, 0.145], [0.029, 0.034, 0.035]);
34
+ for (const e of [-1, 1]) {
35
+ t(this.head, M, [e * 0.047, 0.099, 0.194], [0.025, 0.014, 0.012]), t(this.head, x, [e * 0.047, 0.112, 0.194], [9e-3, 5e-3, 9e-3]), t(this.head, c, [e * 0.126, -3e-3, 0.16], [0.019, 0.023, 0.037]);
36
+ const i = new h.Group();
37
+ i.position.set(e * 0.225, -0.04, 1.41), this.add(i), t(i, m, [0, 0, -0.04], [0.073, 0.071, 0.077]), G(i, m, 0.29, 0.071);
38
+ const o = new h.Group();
39
+ o.position.z = -0.29, i.add(o), t(o, m, [0, 0, 0], [0.06, 0.06, 0.06]), G(o, m, 0.27, 0.06), t(o, c, [0, 0, -0.3], [0.045, 0.034, 0.07]), this.arms.push(i), this.elbows.push(o);
40
+ const a = new h.Group();
41
+ a.position.set(e * 0.105, -0.055, 0.87), this.add(a), G(a, u, 0.4, 0.085);
42
+ const p = new h.Group();
43
+ p.position.z = -0.4, a.add(p), t(p, u, [0, 0, 0], [0.066, 0.066, 0.066]), G(p, u, 0.39, 0.065), t(p, v, [0, 0.06, -0.415], [0.085, 0.155, 0.055]), this.legs.push(a), this.knees.push(p);
44
+ }
45
+ this.head.traverse((e) => e.layers.set(b));
46
+ }
47
+ wave(n) {
48
+ this.waveUntil = n + 2.8;
49
+ }
50
+ update(n, r, m, M) {
51
+ const u = this.previous ? Math.min(0.15, n.distanceTo(this.previous)) : 0;
52
+ this.previous = n.clone(), this.phase += u * 9;
53
+ const v = Math.atan2(-r.x, r.y);
54
+ this.yaw ?? (this.yaw = v);
55
+ const c = Math.atan2(Math.sin(v - this.yaw), Math.cos(v - this.yaw));
56
+ this.yaw += Math.max(-M * 3.5, Math.min(M * 3.5, c)), this.position.copy(n), this.position.z -= 1.7, this.rotation.z = this.yaw, this.head.rotation.z = Math.max(-0.9, Math.min(0.9, c)), this.head.rotation.x = Math.max(-0.55, Math.min(0.55, Math.asin(r.z)));
57
+ const g = u > 5e-4 ? Math.sin(this.phase) * 0.36 : 0;
58
+ for (let s = 0; s < 2; s++) {
59
+ const t = g * (s ? 1 : -1);
60
+ this.legs[s].rotation.x = t, this.knees[s].rotation.x = Math.max(0, -t) * 1.1, this.arms[s].rotation.x = -t * 0.7, this.arms[s].rotation.y = (s ? -1 : 1) * 0.06, this.elbows[s].rotation.x = -0.13, this.elbows[s].rotation.y = 0;
61
+ }
62
+ const x = m < this.waveUntil;
63
+ return x && (this.arms[1].rotation.x = 0.2, this.arms[1].rotation.y = -2.4, this.elbows[1].rotation.y = Math.sin(m * 12) * 0.25), this.userData.waving = x, x || Math.abs(c) > 0.01;
64
+ }
65
+ }
66
+ export {
67
+ C as Passenger
68
+ };
69
+ //# sourceMappingURL=Passenger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Passenger.js","sources":["../../../../src/map/Passenger.ts"],"sourcesContent":["import * as THREE from 'three';\nimport { REFLECTION_BODY } from './CabinMirror';\n\n/** A small articulated passenger: tailored jacket, trousers, shoes and a recognisable face.\n * The view uses the lower body; reflections include the head and shoulders. All motion follows\n * the actual walker, so a mirror shows a passenger at the correct location, not a painted figure. */\nexport class Passenger extends THREE.Group {\n private head = new THREE.Group();\n private arms: THREE.Group[] = [];\n private elbows: THREE.Group[] = [];\n private legs: THREE.Group[] = [];\n private knees: THREE.Group[] = [];\n private previous?: THREE.Vector3;\n private phase = 0;\n private yaw?: number;\n private waveUntil = 0;\n constructor(environment: THREE.Texture) {\n super();\n this.name = 'POV passenger';\n this.userData.passenger = true;\n const material = (color: string, roughness = 0.8) =>\n new THREE.MeshStandardMaterial({ color, roughness, envMap: environment, envMapIntensity: 1.2 });\n const jacket = material('#425563'),\n shirt = material('#ddd7c7'),\n trousers = material('#29303b'),\n shoes = material('#242323', 0.48),\n skin = material('#bc8f73'),\n hair = material('#302823'),\n eye = material('#292b2b');\n const add = (\n parent: THREE.Object3D,\n geo: THREE.BufferGeometry,\n mat: THREE.Material,\n at: number[],\n scale?: number[],\n ) => {\n const mesh = new THREE.Mesh(geo, mat);\n mesh.position.set(at[0], at[1], at[2]);\n if (scale) mesh.scale.set(scale[0], scale[1], scale[2]);\n mesh.castShadow = mesh.receiveShadow = true;\n parent.add(mesh);\n return mesh;\n };\n const sphere = (parent: THREE.Object3D, mat: THREE.Material, at: number[], scale: number[]) =>\n add(parent, new THREE.SphereGeometry(1, 16, 12), mat, at, scale);\n const limb = (parent: THREE.Object3D, mat: THREE.Material, length: number, radius: number) =>\n add(parent, new THREE.CapsuleGeometry(radius, length - 2 * radius, 4, 10).rotateX(Math.PI / 2), mat, [\n 0,\n 0,\n -length / 2,\n ]);\n const torso = add(\n this,\n new THREE.CylinderGeometry(0.21, 0.17, 0.5, 12).rotateX(Math.PI / 2),\n jacket,\n [0, -0.06, 1.18],\n [1, 0.56, 1],\n );\n torso.layers.set(REFLECTION_BODY);\n const chest = add(this, new THREE.BoxGeometry(0.11, 0.015, 0.3), shirt, [0, 0.065, 1.29]);\n chest.layers.set(REFLECTION_BODY);\n const zipper = add(this, new THREE.BoxGeometry(0.012, 0.016, 0.43), trousers, [0, 0.072, 1.18]);\n zipper.layers.set(REFLECTION_BODY);\n const neck = sphere(this, skin, [0, -0.06, 1.48], [0.058, 0.055, 0.115]);\n neck.layers.set(REFLECTION_BODY);\n sphere(this, trousers, [0, -0.055, 0.88], [0.175, 0.125, 0.13]);\n this.head.position.set(0, -0.06, 1.51);\n this.add(this.head);\n sphere(this.head, skin, [0, 0, 0.16], [0.125, 0.11, 0.16]);\n sphere(this.head, hair, [0, -0.027, 0.24], [0.128, 0.106, 0.095]);\n sphere(this.head, skin, [0, 0.11, 0.145], [0.029, 0.034, 0.035]);\n for (const side of [-1, 1]) {\n sphere(this.head, shirt, [side * 0.047, 0.099, 0.194], [0.025, 0.014, 0.012]);\n sphere(this.head, eye, [side * 0.047, 0.112, 0.194], [0.009, 0.005, 0.009]);\n sphere(this.head, skin, [side * 0.126, -0.003, 0.16], [0.019, 0.023, 0.037]);\n const shoulder = new THREE.Group();\n shoulder.position.set(side * 0.225, -0.04, 1.41);\n this.add(shoulder);\n sphere(shoulder, jacket, [0, 0, -0.04], [0.073, 0.071, 0.077]);\n limb(shoulder, jacket, 0.29, 0.071);\n const elbow = new THREE.Group();\n elbow.position.z = -0.29;\n shoulder.add(elbow);\n sphere(elbow, jacket, [0, 0, 0], [0.06, 0.06, 0.06]);\n limb(elbow, jacket, 0.27, 0.06);\n sphere(elbow, skin, [0, 0, -0.3], [0.045, 0.034, 0.07]);\n this.arms.push(shoulder);\n this.elbows.push(elbow);\n const hip = new THREE.Group();\n hip.position.set(side * 0.105, -0.055, 0.87);\n this.add(hip);\n limb(hip, trousers, 0.4, 0.085);\n const knee = new THREE.Group();\n knee.position.z = -0.4;\n hip.add(knee);\n sphere(knee, trousers, [0, 0, 0], [0.066, 0.066, 0.066]);\n limb(knee, trousers, 0.39, 0.065);\n sphere(knee, shoes, [0, 0.06, -0.415], [0.085, 0.155, 0.055]);\n this.legs.push(hip);\n this.knees.push(knee);\n }\n this.head.traverse(o => o.layers.set(REFLECTION_BODY));\n }\n wave(now: number) {\n this.waveUntil = now + 2.8;\n }\n update(eye: THREE.Vector3, forward: THREE.Vector3, seconds: number, dt: number) {\n const moved = this.previous ? Math.min(0.15, eye.distanceTo(this.previous)) : 0;\n this.previous = eye.clone();\n this.phase += moved * 9;\n const target = Math.atan2(-forward.x, forward.y);\n this.yaw ??= target;\n const delta = Math.atan2(Math.sin(target - this.yaw), Math.cos(target - this.yaw));\n this.yaw += Math.max(-dt * 3.5, Math.min(dt * 3.5, delta));\n this.position.copy(eye);\n this.position.z -= 1.7;\n this.rotation.z = this.yaw;\n this.head.rotation.z = Math.max(-0.9, Math.min(0.9, delta));\n this.head.rotation.x = Math.max(-0.55, Math.min(0.55, Math.asin(forward.z)));\n const stride = moved > 0.0005 ? Math.sin(this.phase) * 0.36 : 0;\n for (let i = 0; i < 2; i++) {\n const step = stride * (i ? 1 : -1);\n this.legs[i].rotation.x = step;\n this.knees[i].rotation.x = Math.max(0, -step) * 1.1;\n this.arms[i].rotation.x = -step * 0.7;\n this.arms[i].rotation.y = (i ? -1 : 1) * 0.06;\n this.elbows[i].rotation.x = -0.13;\n this.elbows[i].rotation.y = 0;\n }\n const waving = seconds < this.waveUntil;\n if (waving) {\n this.arms[1].rotation.x = 0.2;\n this.arms[1].rotation.y = -2.4;\n this.elbows[1].rotation.y = Math.sin(seconds * 12) * 0.25;\n }\n this.userData.waving = waving;\n return waving || Math.abs(delta) > 0.01;\n }\n}\n"],"names":["Passenger","THREE","environment","__publicField","material","color","roughness","jacket","shirt","trousers","shoes","skin","hair","eye","add","parent","geo","mat","at","scale","mesh","sphere","limb","length","radius","REFLECTION_BODY","side","shoulder","elbow","hip","knee","o","now","forward","seconds","dt","moved","target","delta","stride","i","step","waving"],"mappings":"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"}