@p100-web/core-three 100.2.1 → 100.2.2

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 (161) hide show
  1. package/dist/App.d.ts +41 -0
  2. package/dist/App.d.ts.map +1 -0
  3. package/dist/App.js +175 -0
  4. package/dist/App.js.map +1 -0
  5. package/dist/ComponentFactory.d.ts +5 -0
  6. package/dist/ComponentFactory.d.ts.map +1 -0
  7. package/dist/ComponentFactory.js +13 -0
  8. package/dist/ComponentFactory.js.map +1 -0
  9. package/dist/ThreeCanvas.d.ts +56 -0
  10. package/dist/ThreeCanvas.d.ts.map +1 -0
  11. package/dist/ThreeCanvas.js +410 -0
  12. package/dist/ThreeCanvas.js.map +1 -0
  13. package/dist/ThreeEngine.d.ts +24 -0
  14. package/dist/ThreeEngine.d.ts.map +1 -0
  15. package/dist/ThreeEngine.js +102 -0
  16. package/dist/ThreeEngine.js.map +1 -0
  17. package/dist/ThreeNodeRenderer.d.ts +41 -0
  18. package/dist/ThreeNodeRenderer.d.ts.map +1 -0
  19. package/dist/ThreeNodeRenderer.js +116 -0
  20. package/dist/ThreeNodeRenderer.js.map +1 -0
  21. package/dist/animations/ModelAnimation.d.ts +21 -0
  22. package/dist/animations/ModelAnimation.d.ts.map +1 -0
  23. package/dist/animations/ModelAnimation.js +45 -0
  24. package/dist/animations/ModelAnimation.js.map +1 -0
  25. package/dist/assets/ThreeAssetLoader.d.ts +98 -0
  26. package/dist/assets/ThreeAssetLoader.d.ts.map +1 -0
  27. package/dist/assets/ThreeAssetLoader.js +495 -0
  28. package/dist/assets/ThreeAssetLoader.js.map +1 -0
  29. package/dist/index.d.ts +7 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +8 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/pcomponents/PAnimator.d.ts +24 -0
  34. package/dist/pcomponents/PAnimator.d.ts.map +1 -0
  35. package/dist/pcomponents/PAnimator.js +134 -0
  36. package/dist/pcomponents/PAnimator.js.map +1 -0
  37. package/dist/pcomponents/PBackground.d.ts +17 -0
  38. package/dist/pcomponents/PBackground.d.ts.map +1 -0
  39. package/dist/pcomponents/PBackground.js +114 -0
  40. package/dist/pcomponents/PBackground.js.map +1 -0
  41. package/dist/pcomponents/PBasicMaterial.d.ts +22 -0
  42. package/dist/pcomponents/PBasicMaterial.d.ts.map +1 -0
  43. package/dist/pcomponents/PBasicMaterial.js +171 -0
  44. package/dist/pcomponents/PBasicMaterial.js.map +1 -0
  45. package/dist/pcomponents/PCollider.d.ts +18 -0
  46. package/dist/pcomponents/PCollider.d.ts.map +1 -0
  47. package/dist/pcomponents/PCollider.js +59 -0
  48. package/dist/pcomponents/PCollider.js.map +1 -0
  49. package/dist/pcomponents/PCubeGeometry.d.ts +8 -0
  50. package/dist/pcomponents/PCubeGeometry.d.ts.map +1 -0
  51. package/dist/pcomponents/PCubeGeometry.js +23 -0
  52. package/dist/pcomponents/PCubeGeometry.js.map +1 -0
  53. package/dist/pcomponents/PEnvironment.d.ts +12 -0
  54. package/dist/pcomponents/PEnvironment.d.ts.map +1 -0
  55. package/dist/pcomponents/PEnvironment.js +39 -0
  56. package/dist/pcomponents/PEnvironment.js.map +1 -0
  57. package/dist/pcomponents/PImageCache.d.ts +11 -0
  58. package/dist/pcomponents/PImageCache.d.ts.map +1 -0
  59. package/dist/pcomponents/PImageCache.js +38 -0
  60. package/dist/pcomponents/PImageCache.js.map +1 -0
  61. package/dist/pcomponents/PLight.d.ts +8 -0
  62. package/dist/pcomponents/PLight.d.ts.map +1 -0
  63. package/dist/pcomponents/PLight.js +45 -0
  64. package/dist/pcomponents/PLight.js.map +1 -0
  65. package/dist/pcomponents/PLightDirectional.d.ts +8 -0
  66. package/dist/pcomponents/PLightDirectional.d.ts.map +1 -0
  67. package/dist/pcomponents/PLightDirectional.js +36 -0
  68. package/dist/pcomponents/PLightDirectional.js.map +1 -0
  69. package/dist/pcomponents/PMaskedMaterial.d.ts +18 -0
  70. package/dist/pcomponents/PMaskedMaterial.d.ts.map +1 -0
  71. package/dist/pcomponents/PMaskedMaterial.js +200 -0
  72. package/dist/pcomponents/PMaskedMaterial.js.map +1 -0
  73. package/dist/pcomponents/PMaterialModifier.d.ts +12 -0
  74. package/dist/pcomponents/PMaterialModifier.d.ts.map +1 -0
  75. package/dist/pcomponents/PMaterialModifier.js +78 -0
  76. package/dist/pcomponents/PMaterialModifier.js.map +1 -0
  77. package/dist/pcomponents/PModelAnnotation.d.ts +11 -0
  78. package/dist/pcomponents/PModelAnnotation.d.ts.map +1 -0
  79. package/dist/pcomponents/PModelAnnotation.js +21 -0
  80. package/dist/pcomponents/PModelAnnotation.js.map +1 -0
  81. package/dist/pcomponents/PModelAnnotations.d.ts +10 -0
  82. package/dist/pcomponents/PModelAnnotations.d.ts.map +1 -0
  83. package/dist/pcomponents/PModelAnnotations.js +25 -0
  84. package/dist/pcomponents/PModelAnnotations.js.map +1 -0
  85. package/dist/pcomponents/PModelGLTF.d.ts +15 -0
  86. package/dist/pcomponents/PModelGLTF.d.ts.map +1 -0
  87. package/dist/pcomponents/PModelGLTF.js +111 -0
  88. package/dist/pcomponents/PModelGLTF.js.map +1 -0
  89. package/dist/pcomponents/PModelNode.d.ts +14 -0
  90. package/dist/pcomponents/PModelNode.d.ts.map +1 -0
  91. package/dist/pcomponents/PModelNode.js +82 -0
  92. package/dist/pcomponents/PModelNode.js.map +1 -0
  93. package/dist/pcomponents/PPhysicalMaterial.d.ts +15 -0
  94. package/dist/pcomponents/PPhysicalMaterial.d.ts.map +1 -0
  95. package/dist/pcomponents/PPhysicalMaterial.js +110 -0
  96. package/dist/pcomponents/PPhysicalMaterial.js.map +1 -0
  97. package/dist/pcomponents/PPlaneGeometry.d.ts +8 -0
  98. package/dist/pcomponents/PPlaneGeometry.d.ts.map +1 -0
  99. package/dist/pcomponents/PPlaneGeometry.js +23 -0
  100. package/dist/pcomponents/PPlaneGeometry.js.map +1 -0
  101. package/dist/pcomponents/PProjectRoot.d.ts +8 -0
  102. package/dist/pcomponents/PProjectRoot.d.ts.map +1 -0
  103. package/dist/pcomponents/PProjectRoot.js +24 -0
  104. package/dist/pcomponents/PProjectRoot.js.map +1 -0
  105. package/dist/pcomponents/PSlider.d.ts +18 -0
  106. package/dist/pcomponents/PSlider.d.ts.map +1 -0
  107. package/dist/pcomponents/PSlider.js +62 -0
  108. package/dist/pcomponents/PSlider.js.map +1 -0
  109. package/dist/pcomponents/PSound.d.ts +17 -0
  110. package/dist/pcomponents/PSound.d.ts.map +1 -0
  111. package/dist/pcomponents/PSound.js +119 -0
  112. package/dist/pcomponents/PSound.js.map +1 -0
  113. package/dist/pcomponents/PSphereGeometry.d.ts +9 -0
  114. package/dist/pcomponents/PSphereGeometry.d.ts.map +1 -0
  115. package/dist/pcomponents/PSphereGeometry.js +24 -0
  116. package/dist/pcomponents/PSphereGeometry.js.map +1 -0
  117. package/dist/pcomponents/PSprite.d.ts +13 -0
  118. package/dist/pcomponents/PSprite.d.ts.map +1 -0
  119. package/dist/pcomponents/PSprite.js +73 -0
  120. package/dist/pcomponents/PSprite.js.map +1 -0
  121. package/dist/pcomponents/PSpriteSheet.d.ts +13 -0
  122. package/dist/pcomponents/PSpriteSheet.d.ts.map +1 -0
  123. package/dist/pcomponents/PSpriteSheet.js +49 -0
  124. package/dist/pcomponents/PSpriteSheet.js.map +1 -0
  125. package/dist/pcomponents/PText.d.ts +9 -0
  126. package/dist/pcomponents/PText.d.ts.map +1 -0
  127. package/dist/pcomponents/PText.js +42 -0
  128. package/dist/pcomponents/PText.js.map +1 -0
  129. package/dist/pcomponents/PVideoPlayer.d.ts +5 -0
  130. package/dist/pcomponents/PVideoPlayer.d.ts.map +1 -0
  131. package/dist/pcomponents/PVideoPlayer.js +12 -0
  132. package/dist/pcomponents/PVideoPlayer.js.map +1 -0
  133. package/dist/pcomponents.d.ts +27 -0
  134. package/dist/pcomponents.d.ts.map +1 -0
  135. package/dist/pcomponents.js +33 -0
  136. package/dist/pcomponents.js.map +1 -0
  137. package/dist/postprocessing/PSSRPass.d.ts +19 -0
  138. package/dist/postprocessing/PSSRPass.d.ts.map +1 -0
  139. package/dist/postprocessing/PSSRPass.js +69 -0
  140. package/dist/postprocessing/PSSRPass.js.map +1 -0
  141. package/dist/postprocessing/ThreeJsPostProcessor.d.ts +32 -0
  142. package/dist/postprocessing/ThreeJsPostProcessor.d.ts.map +1 -0
  143. package/dist/postprocessing/ThreeJsPostProcessor.js +264 -0
  144. package/dist/postprocessing/ThreeJsPostProcessor.js.map +1 -0
  145. package/dist/three/ColliderObject3D.d.ts +19 -0
  146. package/dist/three/ColliderObject3D.d.ts.map +1 -0
  147. package/dist/three/ColliderObject3D.js +96 -0
  148. package/dist/three/ColliderObject3D.js.map +1 -0
  149. package/dist/three/FreeCameraControls.d.ts +32 -0
  150. package/dist/three/FreeCameraControls.d.ts.map +1 -0
  151. package/dist/three/FreeCameraControls.js +173 -0
  152. package/dist/three/FreeCameraControls.js.map +1 -0
  153. package/dist/three/OrbitCameraControls.d.ts +36 -0
  154. package/dist/three/OrbitCameraControls.d.ts.map +1 -0
  155. package/dist/three/OrbitCameraControls.js +306 -0
  156. package/dist/three/OrbitCameraControls.js.map +1 -0
  157. package/dist/three/VrCameraControls.d.ts +30 -0
  158. package/dist/three/VrCameraControls.d.ts.map +1 -0
  159. package/dist/three/VrCameraControls.js +142 -0
  160. package/dist/three/VrCameraControls.js.map +1 -0
  161. package/package.json +2 -2
@@ -0,0 +1,410 @@
1
+ import { Clock, Color, PerspectiveCamera, Raycaster, Scene, WebGLRenderer, Group, MathUtils, SRGBColorSpace, Vector2, } from "three";
2
+ import ThreeJsPostProcessor from "./postprocessing/ThreeJsPostProcessor";
3
+ import { PostProcessingSystems, Settings_Threejs, PCanvas, Workers, Coordinates, } from "@p100-web/core";
4
+ const _cameraColor = new Color(0x000000);
5
+ const _pointer = new Vector2();
6
+ export default class ThreeCanvas extends PCanvas {
7
+ constructor(canvas, context, width, height, settings) {
8
+ super(canvas, context, width, height);
9
+ this._renderer = null;
10
+ // PP
11
+ this._composer = null;
12
+ this._clock = new Clock();
13
+ this._backgroundColor = new Color(0x000000);
14
+ this.update = () => {
15
+ if (this._disposed) {
16
+ console.log("<<<<<<<<< DISPOSED >>>>>>>>>>>");
17
+ return;
18
+ }
19
+ if (this._hasTweens) {
20
+ this._tweens.update();
21
+ if (this._tweens.allStopped()) {
22
+ this._tweens.removeAll();
23
+ this._hasTweens = false;
24
+ this._context.clearWorkFlag(Workers.Animating);
25
+ }
26
+ }
27
+ const delta = this._clock.getDelta();
28
+ if (this._cameraUpdate)
29
+ this._cameraUpdate(delta);
30
+ if (this._hasUpdators) {
31
+ for (const update of this._updates) {
32
+ update(delta);
33
+ }
34
+ }
35
+ if (this._isRaycasting) {
36
+ this.raycast();
37
+ }
38
+ this._stats?.update(delta);
39
+ if (this._renderCounter >= this._renderInterval) {
40
+ if (this._composer)
41
+ this._composer.render();
42
+ else
43
+ this._renderer.render(this._sceneNode, this._cameraNode);
44
+ this._renderCounter = 0;
45
+ }
46
+ if (!this._isSleeping) {
47
+ this._performanceCounter?.update(delta);
48
+ }
49
+ this._renderCounter++;
50
+ };
51
+ //
52
+ // RAYCASTER
53
+ //
54
+ this._colliders = [];
55
+ context.setPCanvas(this);
56
+ // Create a Scene
57
+ const scene = new Scene();
58
+ this._sceneNode = scene;
59
+ this._sceneNode.background = _cameraColor;
60
+ // Create a Camera
61
+ const cameraNode = new PerspectiveCamera(70, 1280 / 720, 0.1, 6);
62
+ this._cameraNode = cameraNode;
63
+ this._cameraNode.layers.mask = 1;
64
+ this._raycaster = new Raycaster();
65
+ this._raycaster.layers.mask = 2;
66
+ // Add root node
67
+ const rootNode = new Group();
68
+ this._rootNode = rootNode;
69
+ this._rootNode.name = "RootNode";
70
+ const flipCoordinates = context.getCoordinates() !== Coordinates.RightHanded;
71
+ // console.log("[CANVAS] invertZ: ", flipCoordinates);
72
+ if (flipCoordinates) {
73
+ // rootNode.rotation.y = Math.PI;
74
+ rootNode.scale.x *= -1;
75
+ }
76
+ // Add nodes to scene
77
+ scene.add(cameraNode);
78
+ scene.add(rootNode);
79
+ this._cameraNode.near = settings.camera.near;
80
+ this._cameraNode.far = settings.camera.far;
81
+ let rendererArgs;
82
+ if (settings.postProcessing?.enabled === PostProcessingSystems.THREEJS) {
83
+ rendererArgs = {
84
+ powerPreference: "high-performance",
85
+ antialias: false,
86
+ stencil: settings.renderer.stencil,
87
+ depth: false,
88
+ };
89
+ }
90
+ else {
91
+ rendererArgs = {
92
+ powerPreference: "high-performance",
93
+ antialias: settings.renderer.antialias,
94
+ stencil: settings.renderer.stencil,
95
+ depth: settings.renderer.depth,
96
+ };
97
+ }
98
+ const renderer = new WebGLRenderer({
99
+ ...rendererArgs,
100
+ canvas: canvas,
101
+ });
102
+ renderer.outputColorSpace = SRGBColorSpace;
103
+ this._renderer = renderer;
104
+ renderer.toneMapping = settings.renderer.toneMapping;
105
+ renderer.toneMappingExposure = settings.renderer.toneMappingExposure;
106
+ this.setupShadows(settings.renderer.useShadows);
107
+ renderer.setSize(this._sizeX, this._sizeY, true);
108
+ renderer.setClearColor(_cameraColor);
109
+ renderer.clear();
110
+ if (settings.postProcessing?.enabled === PostProcessingSystems.THREEJS) {
111
+ this.setupPostProcessing(settings.postProcessing);
112
+ }
113
+ if (!this._cameraNode)
114
+ throw new Error("Missing camera");
115
+ // Work quality
116
+ if (settings.quality) {
117
+ this.initQualitySettings(settings.quality);
118
+ }
119
+ this._cameraNode.aspect = width / height;
120
+ this._cameraNode.updateProjectionMatrix();
121
+ }
122
+ getScene() {
123
+ return this._sceneNode;
124
+ }
125
+ render(settings, startLoop) {
126
+ // Set Near/Far
127
+ this.setNearFar(settings.camera.near, settings.camera.far);
128
+ // Set background color
129
+ this.setBackgroundColor(settings.camera.background);
130
+ // Set Fov, this will update project matrix
131
+ this.setFOV(settings.camera.fov);
132
+ if (startLoop) {
133
+ // Start render loop
134
+ this.setRunState(1);
135
+ }
136
+ }
137
+ dispose() {
138
+ super.dispose();
139
+ // console.log("[ThreeCanvas] DISPOSE()");
140
+ this.unsetRunState(1);
141
+ const environment = this.getEnvironment();
142
+ if (environment) {
143
+ environment.unrender();
144
+ }
145
+ const renderer = this._renderer;
146
+ if (this._composer !== null) {
147
+ this._composer.dispose();
148
+ this._composer = null;
149
+ }
150
+ renderer.dispose();
151
+ renderer.forceContextLoss();
152
+ this._renderer = null;
153
+ }
154
+ getComposer() {
155
+ return this._composer;
156
+ }
157
+ //
158
+ // BACKGROUND / ENVIRONMENT
159
+ //
160
+ updateEnvironment() {
161
+ if (this._environment === null) {
162
+ }
163
+ else {
164
+ const scene = this._sceneNode;
165
+ scene.environment = this._environment.getTexture();
166
+ scene.environmentRotation.y = MathUtils.degToRad(180 + this._environment.rotation);
167
+ scene.environmentIntensity = this._environment.intensity;
168
+ if (this._environment.background) {
169
+ scene.background = this._environment.getTexture();
170
+ scene.backgroundRotation.y = MathUtils.degToRad(180 + this._environment.rotation);
171
+ scene.backgroundIntensity = this._environment.intensity;
172
+ scene.backgroundBlurriness = this._environment.blur;
173
+ }
174
+ else if (scene.background === this._environment.getTexture()) {
175
+ scene.background = null;
176
+ scene.background = this._backgroundColor;
177
+ }
178
+ }
179
+ }
180
+ setBackgroundColor(bg) {
181
+ this._backgroundColor = new Color(bg);
182
+ const current = this._sceneNode.background;
183
+ if (current && current.isColor) {
184
+ this._sceneNode.background = this._backgroundColor;
185
+ }
186
+ }
187
+ clearEnvironment(environment) {
188
+ const scene = this._sceneNode;
189
+ if (this._environment !== environment) {
190
+ this._context.error("Clear environment called with invalid PEnvironment");
191
+ return;
192
+ }
193
+ if (this._environment === null) {
194
+ this._context.error("No environtment");
195
+ return;
196
+ }
197
+ scene.environment = null;
198
+ scene.background = null;
199
+ scene.background = this._backgroundColor;
200
+ this._environment = null;
201
+ }
202
+ //
203
+ // RENDERER
204
+ //
205
+ setToneMapping(value) {
206
+ this._renderer.toneMapping = value;
207
+ }
208
+ setToneMappingExposure(value) {
209
+ this._renderer.toneMappingExposure = value;
210
+ }
211
+ setFOV(fov) {
212
+ this._cameraNode.fov = fov;
213
+ this._cameraNode.updateProjectionMatrix();
214
+ }
215
+ setNearFar(near = -1, far = -1) {
216
+ if (near > 0)
217
+ this._cameraNode.near = near;
218
+ if (far > 0)
219
+ this._cameraNode.far = far;
220
+ this._cameraNode.updateProjectionMatrix();
221
+ }
222
+ //
223
+ // SHADOWS
224
+ //
225
+ setupShadows(value) {
226
+ const renderer = this._renderer;
227
+ if (value > 0) {
228
+ // Enable
229
+ renderer.shadowMap.autoUpdate = false;
230
+ console.log("TODO: manual shadows");
231
+ renderer.shadowMap.enabled = true;
232
+ renderer.shadowMap.type = (value - 1);
233
+ renderer.shadowMap.needsUpdate = true;
234
+ }
235
+ else {
236
+ // Disable
237
+ renderer.shadowMap.enabled = false;
238
+ renderer.shadowMap.needsUpdate = true;
239
+ renderer.shadowMap.autoUpdate = false;
240
+ }
241
+ renderer.clear();
242
+ }
243
+ //
244
+ // CONTROLS
245
+ //
246
+ //
247
+ // POST PROCESSING
248
+ //
249
+ setupPostProcessing(settings) {
250
+ this._composer = new ThreeJsPostProcessor(settings, this._sceneNode, this._renderer, this._cameraNode, new Vector2(this._sizeX, this._sizeY));
251
+ }
252
+ /**
253
+ * Base settings has changed for post processing
254
+ */
255
+ updatePostProcessingSettings(field, settings) {
256
+ if (this._composer === null)
257
+ return;
258
+ // Note: If we are updating all, then we will restart the context really soon
259
+ if (field === "postProcessing.samples") {
260
+ this._composer.updateAASamples(settings.samples);
261
+ }
262
+ else {
263
+ const needsResize = this._composer?.updatePostProcessing(settings, field);
264
+ if (needsResize) {
265
+ this._composer.resizeEffects();
266
+ }
267
+ }
268
+ }
269
+ //
270
+ // WINDOW
271
+ //
272
+ onWindowResize(width, height, resize) {
273
+ super.onWindowResize(width, height, resize);
274
+ this._renderer?.setSize(width, height, true);
275
+ if (this._composer !== null) {
276
+ if (resize)
277
+ this._composer.resize(width, height);
278
+ else
279
+ this._composer.setSize(width, height);
280
+ }
281
+ if (this._cameraNode !== null) {
282
+ this._cameraNode.aspect = width / height;
283
+ this._cameraNode.updateProjectionMatrix();
284
+ }
285
+ }
286
+ //
287
+ // THREE NODES
288
+ //
289
+ getThreeSceneNode() {
290
+ return this._sceneNode;
291
+ }
292
+ getThreeRenderer() {
293
+ return this._renderer;
294
+ }
295
+ getThreeRootNode() {
296
+ return this._rootNode;
297
+ }
298
+ getThreeCamera() {
299
+ return this._cameraNode;
300
+ }
301
+ //
302
+ // SETTINGS
303
+ //
304
+ updateRendererSettings(field, isettings) {
305
+ if (isettings instanceof Settings_Threejs) {
306
+ const settings = isettings.renderer;
307
+ if (field === "renderer" || field === "renderer.toneMapping") {
308
+ this.setToneMapping(settings.toneMapping);
309
+ }
310
+ if (field === "renderer" || field === "renderer.toneMappingExposure") {
311
+ this.setToneMappingExposure(settings.toneMappingExposure);
312
+ }
313
+ }
314
+ else {
315
+ console.log("[ThreeCanvas] updateRendererSettings() skipped, settings was not supported", isettings);
316
+ }
317
+ }
318
+ updateCameraSettings(field, settings) {
319
+ if (field === "camera" || field === "camera.fov") {
320
+ this.setFOV(settings.camera.fov);
321
+ }
322
+ if (field === "camera" || field === "camera.background") {
323
+ this.setBackgroundColor(settings.camera.background);
324
+ }
325
+ if (field === "camera" ||
326
+ field === "camera.near" ||
327
+ field === "camera.far") {
328
+ this.setNearFar(settings.camera.near, settings.camera.far);
329
+ }
330
+ }
331
+ //
332
+ // QUALITY
333
+ //
334
+ /**
335
+ * Quality is always clamped to steps of 0.05
336
+ */
337
+ setQuality(quality) {
338
+ return this._composer?.setCurrentQuality(quality) || false;
339
+ }
340
+ updateRenderScale(value) {
341
+ if (this._composer) {
342
+ this._composer.setPixelRatio(value);
343
+ }
344
+ else {
345
+ this._renderer.setPixelRatio(value);
346
+ }
347
+ }
348
+ //
349
+ // RENDER LOOP
350
+ //
351
+ startRenderLoop() {
352
+ // Start rendering
353
+ this._renderer.setAnimationLoop(this.update);
354
+ }
355
+ stopRenderLoop() {
356
+ // Stop rendering
357
+ this._renderer.setAnimationLoop(null);
358
+ }
359
+ addCollider(object) {
360
+ this._colliders.push(object);
361
+ }
362
+ removeCollider(object) {
363
+ const index = this._colliders.indexOf(object);
364
+ if (index >= 0) {
365
+ this._colliders.splice(index, 1);
366
+ }
367
+ }
368
+ getRaycaster() {
369
+ return this._raycaster;
370
+ }
371
+ raycast() {
372
+ const raycaster = this._raycaster;
373
+ if (this._hoverCanvas) {
374
+ _pointer.x = this._pointerX;
375
+ _pointer.y = this._pointerY;
376
+ raycaster.setFromCamera(_pointer, this._cameraNode);
377
+ const intersects = raycaster.intersectObjects(this._colliders, false);
378
+ this.onHover(intersects.length > 0 ? intersects : null);
379
+ }
380
+ else {
381
+ this.onHover(null);
382
+ }
383
+ }
384
+ /**
385
+ * User hovers collider
386
+ */
387
+ onHover(intersects) {
388
+ let object3D = null;
389
+ let distance = 999999;
390
+ let point = null;
391
+ if (intersects !== null) {
392
+ for (const intersect of intersects) {
393
+ // Check that we hover a valid target
394
+ if (intersect.object.visible && intersect.distance < distance) {
395
+ object3D = intersect.object;
396
+ distance = intersect.distance;
397
+ point = intersect.point;
398
+ }
399
+ }
400
+ }
401
+ if (object3D === null) {
402
+ this.setHovered(null, null);
403
+ return;
404
+ }
405
+ const collider = object3D.collider || object3D.userData.collider;
406
+ if (collider)
407
+ this.setHovered(collider.node, point);
408
+ }
409
+ }
410
+ //# sourceMappingURL=ThreeCanvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeCanvas.js","sourceRoot":"","sources":["../src/ThreeCanvas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { GameContext, type ICameraControls, type ICameraSettings, type IComponentFactory, type IPNodeRenderer, type IStats, type IVector3, type IEngine, IThreeRenderSettings, Coordinates } from "@p100-web/core";
2
+ import ThreeCanvas from "./ThreeCanvas";
3
+ import { type IAudioListener } from "@p100-web/core";
4
+ import ComponentFactory from "./ComponentFactory";
5
+ import ThreeAssetLoader from "./assets/ThreeAssetLoader";
6
+ export default class ThreeEngine implements IEngine {
7
+ private _componentFactory;
8
+ private _pcanvas;
9
+ constructor(componentFactory: IComponentFactory);
10
+ getEngineType(): number;
11
+ getCoordinates(): Coordinates;
12
+ getComponentFactory(): ComponentFactory;
13
+ getCameraForwardVector(context: GameContext): IVector3;
14
+ setupCanvas(canvas: HTMLCanvasElement, context: GameContext, width: number, height: number, settings: IThreeRenderSettings): ThreeCanvas;
15
+ getCanvas(): ThreeCanvas | null;
16
+ setupNodeRenderer(context: GameContext): IPNodeRenderer;
17
+ setupCameraControls(context: GameContext, cameraSettings: ICameraSettings | null): ICameraControls | null;
18
+ setupAudioListener(): Promise<IAudioListener>;
19
+ private _assetLoader;
20
+ getAssetLoader(): ThreeAssetLoader;
21
+ setupAssetLoader(context: GameContext): ThreeAssetLoader;
22
+ getStats(context: GameContext): IStats;
23
+ }
24
+ //# sourceMappingURL=ThreeEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeEngine.d.ts","sourceRoot":"","sources":["../src/ThreeEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,oBAAoB,EACpB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAKxB,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAIlD,OAAO,gBAAgB,MAAM,2BAA2B,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,WAAY,YAAW,OAAO;IACjD,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAA4B;gBAEhC,gBAAgB,EAAE,iBAAiB;IAI/C,aAAa,IAAI,MAAM;IAIvB,cAAc,IAAI,WAAW;IAQ7B,mBAAmB,IAAI,gBAAgB;IAQvC,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ;IAatD,WAAW,CACT,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB,GAC7B,WAAW;IAKd,SAAS,IAAI,WAAW,GAAG,IAAI;IAQ/B,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc;IAQvD,mBAAmB,CACjB,OAAO,EAAE,WAAW,EACpB,cAAc,EAAE,eAAe,GAAG,IAAI,GACrC,eAAe,GAAG,IAAI;IAmBzB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC;IAQ7C,OAAO,CAAC,YAAY,CAAiC;IAErD,cAAc;IAId,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,gBAAgB;IAQxD,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;CAUvC"}
@@ -0,0 +1,102 @@
1
+ import { Coordinates, } from "@p100-web/core";
2
+ import ThreeNodeRenderer from "./ThreeNodeRenderer";
3
+ import FreeCameraControls from "./three/FreeCameraControls";
4
+ import OrbitCameraControls from "./three/OrbitCameraControls";
5
+ import VrCameraControls from "./three/VrCameraControls";
6
+ import ThreeCanvas from "./ThreeCanvas";
7
+ import { AudioListener, Quaternion, Vector3 } from "three";
8
+ import ThreeAssetLoader from "./assets/ThreeAssetLoader";
9
+ export default class ThreeEngine {
10
+ constructor(componentFactory) {
11
+ this._pcanvas = null;
12
+ //
13
+ // ASSETS
14
+ //
15
+ this._assetLoader = null;
16
+ this._componentFactory = componentFactory;
17
+ }
18
+ getEngineType() {
19
+ return 0;
20
+ }
21
+ getCoordinates() {
22
+ return Coordinates.RightHanded;
23
+ }
24
+ //
25
+ // COMPONENTS
26
+ //
27
+ getComponentFactory() {
28
+ return this._componentFactory;
29
+ }
30
+ //
31
+ // CAMERA
32
+ //
33
+ getCameraForwardVector(context) {
34
+ const pcanvas = context.getPCanvas();
35
+ const forward = new Vector3(0, 0, -1); // local forward
36
+ forward.applyQuaternion(pcanvas.getThreeCamera().getWorldQuaternion(new Quaternion()));
37
+ return forward;
38
+ }
39
+ //
40
+ // PCANVAS
41
+ //
42
+ setupCanvas(canvas, context, width, height, settings) {
43
+ this._pcanvas = new ThreeCanvas(canvas, context, width, height, settings);
44
+ return this._pcanvas;
45
+ }
46
+ getCanvas() {
47
+ return this._pcanvas;
48
+ }
49
+ //
50
+ // NODE RENDERER
51
+ //
52
+ setupNodeRenderer(context) {
53
+ return new ThreeNodeRenderer(context);
54
+ }
55
+ //
56
+ // CAMERA CONTROLS
57
+ //
58
+ setupCameraControls(context, cameraSettings) {
59
+ if (cameraSettings === null)
60
+ return null;
61
+ const pcanvas = context.getPCanvas();
62
+ if (cameraSettings.type === 0) {
63
+ return new FreeCameraControls(context, pcanvas, cameraSettings);
64
+ }
65
+ else if (cameraSettings.type === 1) {
66
+ return new OrbitCameraControls(context, pcanvas, cameraSettings);
67
+ }
68
+ else if (cameraSettings.type === 2) {
69
+ return new VrCameraControls(context, pcanvas, cameraSettings);
70
+ }
71
+ else {
72
+ context.error("Unknown controls: " + cameraSettings.type);
73
+ return null;
74
+ }
75
+ }
76
+ //
77
+ // AUDIO
78
+ //
79
+ setupAudioListener() {
80
+ return Promise.resolve(new AudioListener());
81
+ }
82
+ getAssetLoader() {
83
+ return this._assetLoader;
84
+ }
85
+ setupAssetLoader(context) {
86
+ return new ThreeAssetLoader(context.s3Url, context);
87
+ }
88
+ //
89
+ // STATS
90
+ //
91
+ getStats(context) {
92
+ const renderer = context.getPCanvas().getThreeRenderer();
93
+ return {
94
+ textures: renderer?.info.memory.textures || 0,
95
+ programs: renderer?.info.programs?.length || 0,
96
+ triangles: renderer?.info.render.triangles || 0,
97
+ calls: renderer?.info.render.calls || 0,
98
+ geometries: renderer?.info.memory.geometries || 0,
99
+ };
100
+ }
101
+ }
102
+ //# sourceMappingURL=ThreeEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeEngine.js","sourceRoot":"","sources":["../src/ThreeEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type IVector3, PNode, type IPNodeRenderer, GameContext, Coordinates } from "@p100-web/core";
2
+ export default class ThreeNodeRenderer implements IPNodeRenderer {
3
+ _coordinates: Coordinates;
4
+ constructor(context: GameContext);
5
+ show(node: PNode): void;
6
+ hide(node: PNode): void;
7
+ render(node: PNode): void;
8
+ unrender(node: PNode): void;
9
+ getForwardVector(node: PNode): IVector3;
10
+ getWorldPosition(node: PNode): IVector3;
11
+ getPositionVector(node: PNode): IVector3;
12
+ getRotationVector(node: PNode): IVector3;
13
+ getScaleVector(node: PNode): IVector3;
14
+ copyPosition(node: PNode, vector: IVector3): void;
15
+ /**
16
+ * Attach a node to the camera
17
+ */
18
+ addToCamera(child: PNode): void;
19
+ /**
20
+ * Add a node to its parent in the 3d world
21
+ */
22
+ addToParent(child: PNode): void;
23
+ /**
24
+ * Remove a node from its parent in the 3d world
25
+ */
26
+ removeFromParent(child: PNode): void;
27
+ /**
28
+ * Called when we have both an el and a transform
29
+ */
30
+ updateElTransform(node: PNode): void;
31
+ setPosition(node: PNode, vector: IVector3): void;
32
+ setRotation(node: PNode, vector: IVector3): void;
33
+ setScale(node: PNode, vector: IVector3): void;
34
+ /**
35
+ * Probably only used in editor, update the PNode's PTransform with the current
36
+ * values of the element.
37
+ */
38
+ updatePTransform(node: PNode): void;
39
+ set_default_el(node: PNode): void;
40
+ }
41
+ //# sourceMappingURL=ThreeNodeRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeNodeRenderer.d.ts","sourceRoot":"","sources":["../src/ThreeNodeRenderer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,EACL,KAAK,cAAc,EACnB,WAAW,EACX,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAGxB,MAAM,CAAC,OAAO,OAAO,iBAAkB,YAAW,cAAc;IAC9D,YAAY,EAAE,WAAW,CAAC;gBAEd,OAAO,EAAE,WAAW;IAIhC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAKvB,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAKvB,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAMzB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAM3B,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ;IAOvC,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ;IAOvC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ;IAIxC,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ;IAIxC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,QAAQ;IAIrC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAIjD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAK/B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI/B;;OAEG;IACH,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIpC;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IASpC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAKhD,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAMhD,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI;IAM7C;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAkBnC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;CAKlC"}