@needle-tools/engine 2.53.0-pre → 2.55.0-pre

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 (199) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/needle-engine.d.ts +2477 -2267
  3. package/dist/needle-engine.js +425 -425
  4. package/dist/needle-engine.js.map +4 -4
  5. package/dist/needle-engine.min.js +40 -40
  6. package/dist/needle-engine.min.js.map +4 -4
  7. package/dist/needle-engine.tsbuildinfo +1 -0
  8. package/lib/engine/codegen/register_types.d.ts +1 -0
  9. package/lib/engine/codegen/register_types.js +346 -0
  10. package/lib/engine/codegen/register_types.js.map +1 -0
  11. package/lib/engine/debug/debug.d.ts +1 -0
  12. package/lib/engine/debug/debug.js +4 -0
  13. package/lib/engine/debug/debug.js.map +1 -1
  14. package/lib/engine/debug/debug_console.js +2 -1
  15. package/lib/engine/debug/debug_console.js.map +1 -1
  16. package/lib/engine/debug/debug_overlay.js +3 -1
  17. package/lib/engine/debug/debug_overlay.js.map +1 -1
  18. package/lib/engine/engine_default_parameters.d.ts +2 -2
  19. package/lib/engine/engine_element.js +4 -2
  20. package/lib/engine/engine_element.js.map +1 -1
  21. package/lib/engine/engine_element_loading.d.ts +1 -0
  22. package/lib/engine/engine_element_loading.js +17 -6
  23. package/lib/engine/engine_element_loading.js.map +1 -1
  24. package/lib/engine/engine_element_overlay.js +4 -2
  25. package/lib/engine/engine_element_overlay.js.map +1 -1
  26. package/lib/engine/engine_fileloader.d.ts +3 -0
  27. package/lib/engine/engine_fileloader.js +8 -0
  28. package/lib/engine/engine_fileloader.js.map +1 -0
  29. package/lib/engine/engine_generic_utils.d.ts +1 -0
  30. package/lib/engine/engine_generic_utils.js +14 -0
  31. package/lib/engine/engine_generic_utils.js.map +1 -0
  32. package/lib/engine/engine_input.js +4 -0
  33. package/lib/engine/engine_input.js.map +1 -1
  34. package/lib/engine/engine_lightdata.js +1 -1
  35. package/lib/engine/engine_lightdata.js.map +1 -1
  36. package/lib/engine/engine_mainloop_utils.js +8 -0
  37. package/lib/engine/engine_mainloop_utils.js.map +1 -1
  38. package/lib/engine/engine_networking_websocket.d.ts +1 -0
  39. package/lib/engine/engine_networking_websocket.js +1 -1
  40. package/lib/engine/engine_networking_websocket.js.map +1 -1
  41. package/lib/engine/engine_physics.d.ts +1 -1
  42. package/lib/engine/engine_physics.js +44 -3
  43. package/lib/engine/engine_physics.js.map +1 -1
  44. package/lib/engine/engine_physics.types.d.ts +13 -0
  45. package/lib/engine/engine_physics.types.js +7 -0
  46. package/lib/engine/engine_physics.types.js.map +1 -1
  47. package/lib/engine/engine_serialization_builtin_serializer.js +6 -3
  48. package/lib/engine/engine_serialization_builtin_serializer.js.map +1 -1
  49. package/lib/engine/engine_setup.js +2 -2
  50. package/lib/engine/engine_setup.js.map +1 -1
  51. package/lib/engine/engine_time.d.ts +1 -0
  52. package/lib/engine/engine_time.js +7 -0
  53. package/lib/engine/engine_time.js.map +1 -1
  54. package/lib/engine/engine_types.d.ts +4 -1
  55. package/lib/engine/engine_types.js.map +1 -1
  56. package/lib/engine/engine_utils.d.ts +2 -1
  57. package/lib/engine/engine_utils.js +6 -0
  58. package/lib/engine/engine_utils.js.map +1 -1
  59. package/lib/engine/extensions/NEEDLE_components.d.ts +1 -1
  60. package/lib/engine/extensions/NEEDLE_progressive.d.ts +22 -0
  61. package/lib/engine/extensions/NEEDLE_progressive.js +172 -44
  62. package/lib/engine/extensions/NEEDLE_progressive.js.map +1 -1
  63. package/lib/engine-components/Collider.d.ts +2 -0
  64. package/lib/engine-components/Collider.js +4 -0
  65. package/lib/engine-components/Collider.js.map +1 -1
  66. package/lib/engine-components/GroundProjection.d.ts +2 -1
  67. package/lib/engine-components/GroundProjection.js +19 -12
  68. package/lib/engine-components/GroundProjection.js.map +1 -1
  69. package/lib/engine-components/ParticleSystem.d.ts +1 -0
  70. package/lib/engine-components/ParticleSystem.js +10 -5
  71. package/lib/engine-components/ParticleSystem.js.map +1 -1
  72. package/lib/engine-components/ParticleSystemModules.d.ts +2 -2
  73. package/lib/engine-components/ParticleSystemModules.js +65 -55
  74. package/lib/engine-components/ParticleSystemModules.js.map +1 -1
  75. package/lib/engine-components/ReflectionProbe.d.ts +1 -1
  76. package/lib/engine-components/Renderer.d.ts +2 -1
  77. package/lib/engine-components/Renderer.js +8 -8
  78. package/lib/engine-components/Renderer.js.map +1 -1
  79. package/lib/engine-components/RigidBody.js +1 -19
  80. package/lib/engine-components/RigidBody.js.map +1 -1
  81. package/lib/engine-components/SyncedTransform.js +1 -3
  82. package/lib/engine-components/SyncedTransform.js.map +1 -1
  83. package/lib/engine-components/VideoPlayer.d.ts +2 -1
  84. package/lib/engine-components/VideoPlayer.js +54 -51
  85. package/lib/engine-components/VideoPlayer.js.map +1 -1
  86. package/lib/engine-components/Volume.js +8 -1
  87. package/lib/engine-components/Volume.js.map +1 -1
  88. package/lib/engine-components/WebARSessionRoot.js +5 -0
  89. package/lib/engine-components/WebARSessionRoot.js.map +1 -1
  90. package/lib/engine-components/WebXR.d.ts +2 -2
  91. package/lib/engine-components/WebXR.js +13 -13
  92. package/lib/engine-components/WebXR.js.map +1 -1
  93. package/lib/engine-components/WebXRAvatar.d.ts +1 -1
  94. package/lib/engine-components/WebXRController.js +1 -2
  95. package/lib/engine-components/WebXRController.js.map +1 -1
  96. package/lib/engine-components/codegen/components.d.ts +99 -99
  97. package/lib/engine-components/codegen/components.js +99 -99
  98. package/lib/engine-components/codegen/components.js.map +1 -1
  99. package/lib/engine-components/export/usdz/USDZExporter.d.ts +1 -0
  100. package/lib/engine-components/export/usdz/USDZExporter.js +17 -1
  101. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  102. package/lib/engine-components/ui/Button.js +30 -0
  103. package/lib/engine-components/ui/Button.js.map +1 -1
  104. package/lib/engine-components/ui/InputField.d.ts +2 -0
  105. package/lib/engine-components/ui/InputField.js +23 -1
  106. package/lib/engine-components/ui/InputField.js.map +1 -1
  107. package/lib/engine-components/ui/Utils.d.ts +2 -0
  108. package/lib/engine-components/ui/Utils.js +10 -9
  109. package/lib/engine-components/ui/Utils.js.map +1 -1
  110. package/lib/engine-components-experimental/Presentation.d.ts +6 -0
  111. package/lib/engine-components-experimental/Presentation.js +11 -0
  112. package/lib/engine-components-experimental/Presentation.js.map +1 -0
  113. package/lib/engine-components-experimental/annotation/LineDrawer.d.ts +18 -0
  114. package/lib/engine-components-experimental/annotation/LineDrawer.js +175 -0
  115. package/lib/engine-components-experimental/annotation/LineDrawer.js.map +1 -0
  116. package/lib/engine-components-experimental/annotation/LinesManager.d.ts +54 -0
  117. package/lib/engine-components-experimental/annotation/LinesManager.js +155 -0
  118. package/lib/engine-components-experimental/annotation/LinesManager.js.map +1 -0
  119. package/lib/engine-components-experimental/networking/PlayerSync.d.ts +26 -0
  120. package/lib/engine-components-experimental/networking/PlayerSync.js +121 -0
  121. package/lib/engine-components-experimental/networking/PlayerSync.js.map +1 -0
  122. package/lib/engine-schemes/vec2.d.ts +10 -0
  123. package/lib/engine-schemes/vec2.js +26 -0
  124. package/lib/engine-schemes/vec2.js.map +1 -0
  125. package/lib/include/three/ARButton.d.ts +3 -0
  126. package/lib/include/three/ARButton.js +158 -0
  127. package/lib/include/three/ARButton.js.map +1 -0
  128. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.d.ts +6 -0
  129. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js +46 -0
  130. package/lib/include/three/EXT_mesh_gpu_instancing_exporter.js.map +1 -0
  131. package/lib/include/three/VRButton.d.ts +5 -0
  132. package/lib/include/three/VRButton.js +122 -0
  133. package/lib/include/three/VRButton.js.map +1 -0
  134. package/lib/tsconfig.tsbuildinfo +1 -0
  135. package/package.json +1 -1
  136. package/src/engine/codegen/register_types.js +214 -214
  137. package/src/engine/debug/debug.ts +5 -0
  138. package/src/engine/debug/debug_console.ts +3 -2
  139. package/src/engine/debug/debug_overlay.ts +3 -1
  140. package/src/engine/engine_element.ts +4 -2
  141. package/src/engine/engine_element_loading.ts +13 -6
  142. package/src/engine/engine_element_overlay.ts +4 -2
  143. package/src/engine/engine_input.ts +4 -0
  144. package/src/engine/engine_lightdata.ts +1 -1
  145. package/src/engine/engine_mainloop_utils.ts +6 -0
  146. package/src/engine/engine_networking_websocket.ts +3 -1
  147. package/src/engine/engine_physics.ts +47 -5
  148. package/src/engine/engine_physics.types.ts +17 -0
  149. package/src/engine/engine_serialization_builtin_serializer.ts +8 -5
  150. package/src/engine/engine_setup.ts +2 -2
  151. package/src/engine/engine_time.ts +7 -1
  152. package/src/engine/engine_types.ts +5 -2
  153. package/src/engine/engine_utils.ts +7 -1
  154. package/src/engine/extensions/NEEDLE_progressive.ts +185 -43
  155. package/src/engine-components/Collider.ts +3 -0
  156. package/src/engine-components/GroundProjection.ts +18 -12
  157. package/src/engine-components/ParticleSystem.ts +10 -5
  158. package/src/engine-components/ParticleSystemModules.ts +69 -59
  159. package/src/engine-components/Renderer.ts +11 -9
  160. package/src/engine-components/RigidBody.ts +1 -20
  161. package/src/engine-components/SyncedTransform.ts +1 -3
  162. package/src/engine-components/VideoPlayer.ts +55 -51
  163. package/src/engine-components/Volume.ts +8 -1
  164. package/src/engine-components/WebARSessionRoot.ts +5 -0
  165. package/src/engine-components/WebXR.ts +17 -15
  166. package/src/engine-components/WebXRController.ts +1 -2
  167. package/src/engine-components/codegen/components.ts +99 -99
  168. package/src/engine-components/export/usdz/USDZExporter.ts +19 -2
  169. package/src/engine-components/ui/Button.ts +8 -8
  170. package/src/engine-components/ui/InputField.ts +25 -2
  171. package/src/engine-components/ui/Utils.ts +12 -11
  172. package/src/engine-components-experimental/annotation/LineDrawer.ts +10 -7
  173. package/src/engine-components-experimental/annotation/LinesManager.ts +6 -6
  174. package/src/engine-components-experimental/networking/PlayerSync.ts +1 -1
  175. package/lib/engine/engine_caching.d.ts +0 -0
  176. package/lib/engine/engine_caching.js +0 -2
  177. package/lib/engine/engine_caching.js.map +0 -1
  178. package/lib/engine/tests/simulate_avatars.d.ts +0 -0
  179. package/lib/engine/tests/simulate_avatars.js +0 -3
  180. package/lib/engine/tests/simulate_avatars.js.map +0 -1
  181. package/lib/engine-components/NavMesh.d.ts +0 -0
  182. package/lib/engine-components/NavMesh.js +0 -101
  183. package/lib/engine-components/NavMesh.js.map +0 -1
  184. package/lib/engine-components/ParticleSystemBehaviours.d.ts +0 -0
  185. package/lib/engine-components/ParticleSystemBehaviours.js +0 -2
  186. package/lib/engine-components/ParticleSystemBehaviours.js.map +0 -1
  187. package/lib/engine-components/SpringJoint.d.ts +0 -0
  188. package/lib/engine-components/SpringJoint.js +0 -43
  189. package/lib/engine-components/SpringJoint.js.map +0 -1
  190. package/lib/engine-components/ui/CanvasScaler.d.ts +0 -0
  191. package/lib/engine-components/ui/CanvasScaler.js +0 -17
  192. package/lib/engine-components/ui/CanvasScaler.js.map +0 -1
  193. package/src/engine/dist/engine_three_utils.js +0 -279
  194. package/src/engine/engine_caching.ts +0 -0
  195. package/src/engine/tests/simulate_avatars.ts +0 -2
  196. package/src/engine-components/NavMesh.ts +0 -117
  197. package/src/engine-components/ParticleSystemBehaviours.ts +0 -0
  198. package/src/engine-components/SpringJoint.ts +0 -45
  199. package/src/engine-components/ui/CanvasScaler.ts +0 -21
@@ -0,0 +1,155 @@
1
+ import { Behaviour, GameObject } from "../../engine-components/Component";
2
+ import * as THREE from 'three';
3
+ import { MeshLine, MeshLineMaterial } from 'three.meshline';
4
+ export class LineInstanceHandler {
5
+ id = 0;
6
+ points = [];
7
+ line = new MeshLine();
8
+ material;
9
+ mesh;
10
+ constructor(owner, options) {
11
+ if (options) {
12
+ this.material = options.material;
13
+ }
14
+ if (!this.material)
15
+ this.material = this.defaultLineMaterial;
16
+ if (options) {
17
+ const opts = options.options;
18
+ if (opts) {
19
+ Object.assign(this.material, opts);
20
+ }
21
+ }
22
+ this.mesh = new THREE.Mesh(this.line, this.material);
23
+ owner.add(this.mesh);
24
+ }
25
+ static wp = new THREE.Vector3();
26
+ appendPoint(vec) {
27
+ let localPoint = LineInstanceHandler.wp;
28
+ localPoint.set(vec.x, vec.y, vec.z);
29
+ const parent = this.mesh?.parent;
30
+ if (parent) {
31
+ localPoint = parent.worldToLocal(localPoint);
32
+ vec.x = localPoint.x;
33
+ vec.y = localPoint.y;
34
+ vec.z = localPoint.z;
35
+ }
36
+ this.points.push(vec.x, vec.y, vec.z);
37
+ this.line.setPoints(this.points);
38
+ return vec;
39
+ }
40
+ defaultLineMaterial = new MeshLineMaterial({ color: 0x999999, lineWidth: 0.01 });
41
+ }
42
+ export class LinesManager extends Behaviour {
43
+ startLine(parent, options) {
44
+ const id = Math.random() * Number.MAX_SAFE_INTEGER;
45
+ return this.internalStartLine(parent, id, true, options);
46
+ }
47
+ updateLine(handle, args) {
48
+ const line = this.inFlight[handle.id];
49
+ if (!line)
50
+ return;
51
+ if (args.point) {
52
+ args.point = line.appendPoint(args.point);
53
+ }
54
+ const buf = this.buffer[handle.id];
55
+ if (buf) {
56
+ if (args.point)
57
+ buf.push(args.point.x, args.point.y, args.point.z);
58
+ if (buf.length > 5) {
59
+ this.sendLineUpdate(line, false, undefined, buf);
60
+ buf.length = 0;
61
+ }
62
+ }
63
+ }
64
+ endLine(handle, send = true) {
65
+ const line = this.inFlight[handle.id];
66
+ if (!line)
67
+ return undefined;
68
+ this.finished.push(line);
69
+ delete this.inFlight[handle.id];
70
+ if (send)
71
+ this.sendLineUpdate(line, true, 0);
72
+ const buf = this.buffer[handle.id];
73
+ if (buf) {
74
+ delete this.buffer[handle.id];
75
+ const arr = buf;
76
+ arr.length = 0;
77
+ this.freeBuffer.push(arr);
78
+ }
79
+ return line;
80
+ }
81
+ getLine(handle) {
82
+ return this.inFlight[handle.id];
83
+ }
84
+ finished = [];
85
+ inFlight = [];
86
+ buffer = {};
87
+ freeBuffer = new Array();
88
+ awake() {
89
+ this.context.connection.beginListen("line-start", (i) => {
90
+ this.onEnsureLine(i.id, i.parentGuid);
91
+ });
92
+ this.context.connection.beginListen("line-update", (evt) => {
93
+ let line = this.onEnsureLine(evt.guid, evt.parentGuid);
94
+ if (line && evt.points) {
95
+ if (evt.startIndex <= 0) {
96
+ line.points = evt.points;
97
+ }
98
+ else {
99
+ if (evt.startIndex >= line.points.length) {
100
+ line.points.push(...evt.points);
101
+ }
102
+ }
103
+ line.line.setPoints(line.points);
104
+ line.material.lineWidth = evt.width;
105
+ line.material.color.fromArray(evt.color);
106
+ if (evt.finished === true) {
107
+ this.endLine({ id: line.id }, false);
108
+ }
109
+ }
110
+ });
111
+ }
112
+ onEnsureLine(lineId, parentGuid) {
113
+ if (this.inFlight[lineId])
114
+ return this.inFlight[lineId];
115
+ let obj = GameObject.findByGuid(parentGuid, this.context.scene);
116
+ if (!obj) {
117
+ return null;
118
+ }
119
+ this.internalStartLine(obj, lineId, false);
120
+ return this.inFlight[lineId];
121
+ }
122
+ internalStartLine(parent, id, send = true, options) {
123
+ const line = new LineInstanceHandler(parent ?? this.context.scene, options);
124
+ line.id = id;
125
+ this.inFlight[id] = line;
126
+ if (send)
127
+ this.sendLineStart(line);
128
+ let buf;
129
+ if (this.freeBuffer.length <= 0)
130
+ buf = new Array();
131
+ else
132
+ buf = this.freeBuffer.pop();
133
+ this.buffer[id] = buf;
134
+ return { id: id };
135
+ }
136
+ sendLineStart(instance) {
137
+ const parent = instance.mesh.parent;
138
+ this.context.connection.send("line-start", { id: instance.id, parentGuid: parent ? parent["guid"] : undefined });
139
+ }
140
+ sendLineUpdate(instance, finished, startIndex, points) {
141
+ if (instance) {
142
+ const model = {
143
+ parentGuid: instance.mesh.parent["guid"],
144
+ guid: instance.id,
145
+ points: points ? [...points] : instance.points,
146
+ width: instance.material.lineWidth,
147
+ color: instance.material.color.toArray(),
148
+ startIndex: startIndex !== undefined ? startIndex : instance.points.length,
149
+ finished: finished,
150
+ };
151
+ this.context.connection.send("line-update", model);
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=LinesManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinesManager.js","sourceRoot":"","sources":["../../../../engine-components-experimental/annotation/LinesManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Behaviour, Component } from "../../engine-components/Component";
2
+ import { AssetReference } from "../../engine/engine_addressables";
3
+ export declare class PlayerSync extends Behaviour {
4
+ asset?: AssetReference;
5
+ private joinedRoomFunction?;
6
+ awake(): void;
7
+ onEnable(): void;
8
+ onDisable(): void;
9
+ private onUserJoined;
10
+ private watchTabVisible;
11
+ }
12
+ export declare class PlayerState extends Behaviour {
13
+ private static _all;
14
+ /** all instances for all players */
15
+ static get all(): PlayerState[];
16
+ private static _local;
17
+ /** all instances for the local player */
18
+ static get local(): PlayerState[];
19
+ static isLocalPlayer(obj: THREE.Object3D | Component): boolean;
20
+ owner?: string;
21
+ get isLocalPlayer(): boolean;
22
+ awake(): void;
23
+ start(): void;
24
+ doDestroy(): void;
25
+ onDestroy(): void;
26
+ }
@@ -0,0 +1,121 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Behaviour, Component, GameObject } from "../../engine-components/Component";
8
+ import { AssetReference } from "../../engine/engine_addressables";
9
+ import { serializable } from "../../engine/engine_serialization_decorator";
10
+ import { syncField } from "../../engine/engine_networking_auto";
11
+ import { RoomEvents } from "../../engine/engine_networking";
12
+ import { Object3D } from "three";
13
+ import { syncDestroy } from "../../engine/engine_networking_instantiate";
14
+ export class PlayerSync extends Behaviour {
15
+ asset;
16
+ joinedRoomFunction;
17
+ awake() {
18
+ this.watchTabVisible();
19
+ this.joinedRoomFunction = this.onUserJoined.bind(this);
20
+ }
21
+ onEnable() {
22
+ this.context.connection.beginListen(RoomEvents.JoinedRoom, this.joinedRoomFunction);
23
+ }
24
+ onDisable() {
25
+ this.context.connection.stopListening(RoomEvents.JoinedRoom, this.joinedRoomFunction);
26
+ }
27
+ async onUserJoined(_model) {
28
+ const instance = await this.asset?.instantiateSynced({ parent: this.gameObject }, true);
29
+ if (instance) {
30
+ let pl = GameObject.getComponent(instance, PlayerState);
31
+ if (pl) {
32
+ pl.owner = this.context.connection.connectionId;
33
+ }
34
+ }
35
+ // TODO: previously created instances are not re-created when re-joining room
36
+ // const inRoom = this.context.connection.usersInRoom();
37
+ // console.log(inRoom);
38
+ // for (const user of inRoom) {
39
+ // if(user !== this.context.connection.connectionId) {
40
+ // console.log(this.context.connection.tryGetState(this.asset.uri))
41
+ // }
42
+ // }
43
+ }
44
+ watchTabVisible() {
45
+ window.addEventListener("visibilitychange", _ => {
46
+ if (document.visibilityState === "visible") {
47
+ for (let i = PlayerState.all.length - 1; i >= 0; i--) {
48
+ const pl = PlayerState.all[i];
49
+ if (!pl.owner || !this.context.connection.userIsInRoom(pl.owner)) {
50
+ pl.doDestroy();
51
+ }
52
+ }
53
+ }
54
+ });
55
+ }
56
+ }
57
+ __decorate([
58
+ serializable(AssetReference)
59
+ ], PlayerSync.prototype, "asset", void 0);
60
+ export class PlayerState extends Behaviour {
61
+ static _all = [];
62
+ /** all instances for all players */
63
+ static get all() {
64
+ return PlayerState._all;
65
+ }
66
+ ;
67
+ static _local = [];
68
+ /** all instances for the local player */
69
+ static get local() {
70
+ return PlayerState._local;
71
+ }
72
+ //** use to check if a component or gameobject is part of a instance owned by the local player */
73
+ static isLocalPlayer(obj) {
74
+ if (obj instanceof Object3D) {
75
+ return GameObject.getComponentInParent(obj, PlayerState)?.isLocalPlayer ?? false;
76
+ }
77
+ else if (obj instanceof Component) {
78
+ return GameObject.getComponentInParent(obj.gameObject, PlayerState)?.isLocalPlayer ?? false;
79
+ }
80
+ return false;
81
+ }
82
+ owner;
83
+ get isLocalPlayer() {
84
+ return this.owner === this.context.connection.connectionId;
85
+ }
86
+ awake() {
87
+ if (this.isLocalPlayer)
88
+ PlayerState.local.push(this);
89
+ PlayerState.all.push(this);
90
+ this.context.connection.beginListen(RoomEvents.UserLeftRoom, (model) => {
91
+ // console.log("USER LEFT", model.userId)
92
+ if (model.userId === this.owner) {
93
+ // console.log("LEFT", this.owner)
94
+ this.doDestroy();
95
+ return;
96
+ }
97
+ });
98
+ }
99
+ start() {
100
+ if (!this.owner || !this.context.connection.userIsInRoom(this.owner)) {
101
+ this.doDestroy();
102
+ return;
103
+ }
104
+ }
105
+ doDestroy() {
106
+ syncDestroy(this.gameObject, this.context.connection);
107
+ }
108
+ onDestroy() {
109
+ PlayerState.all.splice(PlayerState.all.indexOf(this), 1);
110
+ if (this.isLocalPlayer) {
111
+ const index = PlayerState._local.indexOf(this);
112
+ if (index >= 0)
113
+ PlayerState._local.splice(index, 1);
114
+ }
115
+ }
116
+ }
117
+ __decorate([
118
+ syncField(),
119
+ serializable()
120
+ ], PlayerState.prototype, "owner", void 0);
121
+ //# sourceMappingURL=PlayerSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlayerSync.js","sourceRoot":"","sources":["../../../../engine-components-experimental/networking/PlayerSync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as flatbuffers from 'flatbuffers';
2
+ export declare class Vec2 {
3
+ bb: flatbuffers.ByteBuffer | null;
4
+ bb_pos: number;
5
+ __init(i: number, bb: flatbuffers.ByteBuffer): Vec2;
6
+ x(): number;
7
+ y(): number;
8
+ static sizeOf(): number;
9
+ static createVec2(builder: flatbuffers.Builder, x: number, y: number): flatbuffers.Offset;
10
+ }
@@ -0,0 +1,26 @@
1
+ // automatically generated by the FlatBuffers compiler, do not modify
2
+ export class Vec2 {
3
+ bb = null;
4
+ bb_pos = 0;
5
+ __init(i, bb) {
6
+ this.bb_pos = i;
7
+ this.bb = bb;
8
+ return this;
9
+ }
10
+ x() {
11
+ return this.bb.readFloat32(this.bb_pos);
12
+ }
13
+ y() {
14
+ return this.bb.readFloat32(this.bb_pos + 4);
15
+ }
16
+ static sizeOf() {
17
+ return 8;
18
+ }
19
+ static createVec2(builder, x, y) {
20
+ builder.prep(4, 8);
21
+ builder.writeFloat32(y);
22
+ builder.writeFloat32(x);
23
+ return builder.offset();
24
+ }
25
+ }
26
+ //# sourceMappingURL=vec2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vec2.js","sourceRoot":"","sources":["../../../engine-schemes/vec2.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAIrE,MAAM,OAAO,IAAI;IACf,EAAE,GAAgC,IAAI,CAAC;IACvC,MAAM,GAAG,CAAC,CAAC;IACb,MAAM,CAAC,CAAQ,EAAE,EAAyB;QACxC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,CAAC;QACC,OAAO,IAAI,CAAC,EAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,CAAC;QACC,OAAO,IAAI,CAAC,EAAG,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAA2B,EAAE,CAAS,EAAE,CAAS;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;CAEA"}
@@ -0,0 +1,3 @@
1
+ export class ARButton {
2
+ static createButton(renderer: any, sessionInit?: {}): HTMLAnchorElement | HTMLButtonElement;
3
+ }
@@ -0,0 +1,158 @@
1
+ class ARButton {
2
+ static createButton(renderer, sessionInit = {}) {
3
+ const button = document.createElement('button');
4
+ let ARButtonControlsDomOverlay = false;
5
+ function showStartAR( /*device*/) {
6
+ if (sessionInit.domOverlay === undefined) {
7
+ var overlay = document.createElement('div');
8
+ overlay.style.display = 'none';
9
+ document.body.appendChild(overlay);
10
+ var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
11
+ svg.setAttribute('width', 38);
12
+ svg.setAttribute('height', 38);
13
+ svg.style.position = 'absolute';
14
+ svg.style.right = '20px';
15
+ svg.style.top = '20px';
16
+ svg.addEventListener('click', function () {
17
+ currentSession.end();
18
+ });
19
+ overlay.appendChild(svg);
20
+ var path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
21
+ path.setAttribute('d', 'M 12,12 L 28,28 M 28,12 12,28');
22
+ path.setAttribute('stroke', '#fff');
23
+ path.setAttribute('stroke-width', 2);
24
+ svg.appendChild(path);
25
+ if (sessionInit.optionalFeatures === undefined) {
26
+ sessionInit.optionalFeatures = [];
27
+ }
28
+ sessionInit.optionalFeatures.push('dom-overlay');
29
+ sessionInit.domOverlay = { root: overlay };
30
+ ARButtonControlsDomOverlay = true;
31
+ }
32
+ if (sessionInit.optionalFeatures === undefined)
33
+ sessionInit.optionalFeatures = [];
34
+ // added for Hololens support
35
+ sessionInit.optionalFeatures.push('local-floor');
36
+ sessionInit.optionalFeatures.push('hand-tracking');
37
+ sessionInit.optionalFeatures.push('layers');
38
+ //
39
+ let currentSession = null;
40
+ let originalDomOverlayParent = null;
41
+ async function onSessionStarted(session) {
42
+ // Workaround: seems WebXR Viewer has a non-standard behaviour when it comes to DOM Overlay and Canvas;
43
+ // HTMLElements that are inside the Canvas element are not visible in the DOM Overlay.
44
+ const isWebXRViewer = /WebXRViewer\//i.test(navigator.userAgent);
45
+ if (isWebXRViewer) {
46
+ if (sessionInit.domOverlay?.root) {
47
+ const overlayElement = sessionInit.domOverlay.root;
48
+ originalDomOverlayParent = overlayElement.parentElement;
49
+ if (originalDomOverlayParent) {
50
+ console.log("Reparent DOM Overlay to body", overlayElement, overlayElement.style.display);
51
+ // mozilla webxr does hide elements on session start
52
+ // this is only necessary if we generated the overlay element
53
+ overlayElement.style.display = "";
54
+ overlayElement.style.visibility = "";
55
+ document.body.appendChild(overlayElement);
56
+ }
57
+ }
58
+ else {
59
+ console.warn("WebXRViewer: No DOM Overlay found");
60
+ }
61
+ }
62
+ session.addEventListener('end', onSessionEnded);
63
+ // 'local' is head-relative, 'local-floor' is what the device thinks the floor is (e.g. Hololens knows pretty well)
64
+ // renderer.xr.setReferenceSpaceType( 'local' );
65
+ await renderer.xr.setSession(session);
66
+ button.textContent = 'STOP AR';
67
+ if (ARButtonControlsDomOverlay)
68
+ sessionInit.domOverlay.root.style.display = '';
69
+ currentSession = session;
70
+ }
71
+ function onSessionEnded( /*event*/) {
72
+ currentSession.removeEventListener('end', onSessionEnded);
73
+ button.textContent = 'START AR';
74
+ // if we reparented the DOM overlay, we're reverting it here
75
+ if (originalDomOverlayParent)
76
+ originalDomOverlayParent.appendChild(sessionInit.domOverlay.root);
77
+ if (ARButtonControlsDomOverlay)
78
+ sessionInit.domOverlay.root.style.display = 'none';
79
+ currentSession = null;
80
+ }
81
+ //
82
+ button.style.display = '';
83
+ button.style.cursor = 'pointer';
84
+ button.style.left = 'calc(50% - 50px)';
85
+ button.style.width = '100px';
86
+ button.textContent = 'START AR';
87
+ button.onmouseenter = function () {
88
+ button.style.opacity = '1.0';
89
+ };
90
+ button.onmouseleave = function () {
91
+ button.style.opacity = '0.5';
92
+ };
93
+ button.onclick = function () {
94
+ if (currentSession === null) {
95
+ navigator.xr.requestSession('immersive-ar', sessionInit).then(onSessionStarted);
96
+ }
97
+ else {
98
+ currentSession.end();
99
+ }
100
+ };
101
+ }
102
+ function disableButton() {
103
+ button.disabled = true;
104
+ button.style.display = '';
105
+ button.style.cursor = 'auto';
106
+ button.style.left = 'calc(50% - 75px)';
107
+ button.style.width = '150px';
108
+ button.onmouseenter = null;
109
+ button.onmouseleave = null;
110
+ button.onclick = null;
111
+ }
112
+ function showARNotSupported() {
113
+ disableButton();
114
+ button.textContent = 'AR NOT SUPPORTED';
115
+ }
116
+ function stylizeElement(element) {
117
+ element.style.position = 'absolute';
118
+ element.style.bottom = '20px';
119
+ element.style.padding = '12px 6px';
120
+ element.style.border = '1px solid #fff';
121
+ element.style.borderRadius = '4px';
122
+ element.style.background = 'rgba(0,0,0,0.1)';
123
+ element.style.color = '#fff';
124
+ element.style.font = 'normal 13px sans-serif';
125
+ element.style.textAlign = 'center';
126
+ element.style.opacity = '0.5';
127
+ element.style.outline = 'none';
128
+ element.style.zIndex = '999';
129
+ }
130
+ if ('xr' in navigator) {
131
+ button.id = 'ARButton';
132
+ button.style.display = 'none';
133
+ stylizeElement(button);
134
+ navigator.xr.isSessionSupported('immersive-ar').then(function (supported) {
135
+ supported ? showStartAR() : showARNotSupported();
136
+ }).catch(showARNotSupported);
137
+ return button;
138
+ }
139
+ else {
140
+ const message = document.createElement('a');
141
+ if (window.isSecureContext === false) {
142
+ message.href = document.location.href.replace(/^http:/, 'https:');
143
+ message.innerHTML = 'WEBXR NEEDS HTTPS'; // TODO Improve message
144
+ }
145
+ else {
146
+ message.href = 'https://immersiveweb.dev/';
147
+ message.innerHTML = 'WEBXR NOT AVAILABLE';
148
+ }
149
+ message.style.left = 'calc(50% - 90px)';
150
+ message.style.width = '180px';
151
+ message.style.textDecoration = 'none';
152
+ stylizeElement(message);
153
+ return message;
154
+ }
155
+ }
156
+ }
157
+ export { ARButton };
158
+ //# sourceMappingURL=ARButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ARButton.js","sourceRoot":"","sources":["../../../../include/three/ARButton.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export default class GLTFMeshGPUInstancingExtension {
2
+ constructor(writer: any);
3
+ writer: any;
4
+ name: string;
5
+ writeNode(node: any, nodeDef: any): void;
6
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Mesh GPU Instancing extension
3
+ *
4
+ * Specification: https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Vendor/EXT_mesh_gpu_instancing
5
+ */
6
+ import { BufferAttribute, Matrix4, Vector3, Quaternion, } from 'three';
7
+ export default class GLTFMeshGPUInstancingExtension {
8
+ constructor(writer) {
9
+ this.writer = writer;
10
+ this.name = 'EXT_mesh_gpu_instancing';
11
+ }
12
+ writeNode(node, nodeDef) {
13
+ if (node.constructor.name !== "InstancedMesh")
14
+ return;
15
+ const writer = this.writer;
16
+ const extensionsUsed = writer.extensionsUsed;
17
+ const extensionDef = {};
18
+ nodeDef.extensions = nodeDef.extensions || {};
19
+ nodeDef.extensions[this.name] = extensionDef;
20
+ let mat = new Matrix4();
21
+ const pos0 = new Array();
22
+ const rot0 = new Array();
23
+ const scl0 = new Array();
24
+ for (let i = 0; i < node.count; i++) {
25
+ node.getMatrixAt(i, mat);
26
+ let p = new Vector3();
27
+ let r = new Quaternion();
28
+ let s = new Vector3();
29
+ mat.decompose(p, r, s);
30
+ pos0.push(p.x, p.y, p.z);
31
+ rot0.push(r.x, r.y, r.z, r.w);
32
+ scl0.push(s.x, s.y, s.z);
33
+ }
34
+ ;
35
+ const pos = new Float32Array(pos0);
36
+ const rot = new Float32Array(rot0);
37
+ const scl = new Float32Array(scl0);
38
+ extensionDef.attributes = {
39
+ "TRANSLATION": writer.processAccessor(new BufferAttribute(pos, 3)),
40
+ "ROTATION": writer.processAccessor(new BufferAttribute(rot, 4)),
41
+ "SCALE": writer.processAccessor(new BufferAttribute(scl, 3)),
42
+ };
43
+ extensionsUsed[this.name] = true;
44
+ }
45
+ }
46
+ //# sourceMappingURL=EXT_mesh_gpu_instancing_exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EXT_mesh_gpu_instancing_exporter.js","sourceRoot":"","sources":["../../../../include/three/EXT_mesh_gpu_instancing_exporter.js"],"names":[],"mappings":"AAAA;;;;GAIG;AAEF,OAAO,EACP,eAAe,EACf,OAAO,EACP,OAAO,EACP,UAAU,GACV,MAAM,OAAO,CAAC;AAEf,MAAM,CAAC,OAAO,OAAO,8BAA8B;IAElD,YAAa,MAAM;QAElB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IAEvC,CAAC;IAED,SAAS,CAAE,IAAI,EAAE,OAAO;QAEvB,IAAG,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO;QAErD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC7C,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAC9C,OAAO,CAAC,UAAU,CAAE,IAAI,CAAC,IAAI,CAAE,GAAG,YAAY,CAAC;QAE/C,IAAI,GAAG,GAAG,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,KAAK,EAAE,CAAC;QAEzB,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAClC;YACC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAEzB,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,IAAI,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;YAEtB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,CAAC;YAErB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvB;QAAA,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnC,YAAY,CAAC,UAAU,GAAG;YACzB,aAAa,EAAG,MAAM,CAAC,eAAe,CAAE,IAAI,eAAe,CAAE,GAAG,EAAE,CAAC,CAAE,CAAE;YACvE,UAAU,EAAG,MAAM,CAAC,eAAe,CAAE,IAAI,eAAe,CAAE,GAAG,EAAE,CAAC,CAAE,CAAE;YACpE,OAAO,EAAG,MAAM,CAAC,eAAe,CAAE,IAAI,eAAe,CAAE,GAAG,EAAE,CAAC,CAAE,CAAE;SACjE,CAAC;QAEF,cAAc,CAAE,IAAI,CAAC,IAAI,CAAE,GAAG,IAAI,CAAC;IAEpC,CAAC;CACD"}
@@ -0,0 +1,5 @@
1
+ export class VRButton {
2
+ static createButton(renderer: any, options: any): HTMLAnchorElement | HTMLButtonElement;
3
+ static xrSessionIsGranted: boolean;
4
+ static registerSessionGrantedListener(): void;
5
+ }