@p100-web/core-three 100.2.14 → 100.2.16

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/package.json +33 -33
  2. package/dist/App.d.ts +0 -42
  3. package/dist/App.d.ts.map +0 -1
  4. package/dist/App.js +0 -180
  5. package/dist/App.js.map +0 -1
  6. package/dist/ComponentFactory.d.ts +0 -5
  7. package/dist/ComponentFactory.d.ts.map +0 -1
  8. package/dist/ComponentFactory.js +0 -13
  9. package/dist/ComponentFactory.js.map +0 -1
  10. package/dist/ThreeCanvas.d.ts +0 -56
  11. package/dist/ThreeCanvas.d.ts.map +0 -1
  12. package/dist/ThreeCanvas.js +0 -410
  13. package/dist/ThreeCanvas.js.map +0 -1
  14. package/dist/ThreeEngine.d.ts +0 -24
  15. package/dist/ThreeEngine.d.ts.map +0 -1
  16. package/dist/ThreeEngine.js +0 -102
  17. package/dist/ThreeEngine.js.map +0 -1
  18. package/dist/ThreeNodeRenderer.d.ts +0 -41
  19. package/dist/ThreeNodeRenderer.d.ts.map +0 -1
  20. package/dist/ThreeNodeRenderer.js +0 -116
  21. package/dist/ThreeNodeRenderer.js.map +0 -1
  22. package/dist/animations/ModelAnimation.d.ts +0 -23
  23. package/dist/animations/ModelAnimation.d.ts.map +0 -1
  24. package/dist/animations/ModelAnimation.js +0 -55
  25. package/dist/animations/ModelAnimation.js.map +0 -1
  26. package/dist/assets/ThreeAssetLoader.d.ts +0 -98
  27. package/dist/assets/ThreeAssetLoader.d.ts.map +0 -1
  28. package/dist/assets/ThreeAssetLoader.js +0 -489
  29. package/dist/assets/ThreeAssetLoader.js.map +0 -1
  30. package/dist/index.d.ts +0 -7
  31. package/dist/index.d.ts.map +0 -1
  32. package/dist/index.js +0 -8
  33. package/dist/index.js.map +0 -1
  34. package/dist/pcomponents/PAnimator.d.ts +0 -25
  35. package/dist/pcomponents/PAnimator.d.ts.map +0 -1
  36. package/dist/pcomponents/PAnimator.js +0 -151
  37. package/dist/pcomponents/PAnimator.js.map +0 -1
  38. package/dist/pcomponents/PBackground.d.ts +0 -17
  39. package/dist/pcomponents/PBackground.d.ts.map +0 -1
  40. package/dist/pcomponents/PBackground.js +0 -114
  41. package/dist/pcomponents/PBackground.js.map +0 -1
  42. package/dist/pcomponents/PBasicMaterial.d.ts +0 -22
  43. package/dist/pcomponents/PBasicMaterial.d.ts.map +0 -1
  44. package/dist/pcomponents/PBasicMaterial.js +0 -171
  45. package/dist/pcomponents/PBasicMaterial.js.map +0 -1
  46. package/dist/pcomponents/PCollider.d.ts +0 -18
  47. package/dist/pcomponents/PCollider.d.ts.map +0 -1
  48. package/dist/pcomponents/PCollider.js +0 -59
  49. package/dist/pcomponents/PCollider.js.map +0 -1
  50. package/dist/pcomponents/PCubeGeometry.d.ts +0 -8
  51. package/dist/pcomponents/PCubeGeometry.d.ts.map +0 -1
  52. package/dist/pcomponents/PCubeGeometry.js +0 -23
  53. package/dist/pcomponents/PCubeGeometry.js.map +0 -1
  54. package/dist/pcomponents/PEnvironment.d.ts +0 -12
  55. package/dist/pcomponents/PEnvironment.d.ts.map +0 -1
  56. package/dist/pcomponents/PEnvironment.js +0 -41
  57. package/dist/pcomponents/PEnvironment.js.map +0 -1
  58. package/dist/pcomponents/PImageCache.d.ts +0 -11
  59. package/dist/pcomponents/PImageCache.d.ts.map +0 -1
  60. package/dist/pcomponents/PImageCache.js +0 -38
  61. package/dist/pcomponents/PImageCache.js.map +0 -1
  62. package/dist/pcomponents/PLight.d.ts +0 -8
  63. package/dist/pcomponents/PLight.d.ts.map +0 -1
  64. package/dist/pcomponents/PLight.js +0 -45
  65. package/dist/pcomponents/PLight.js.map +0 -1
  66. package/dist/pcomponents/PLightDirectional.d.ts +0 -8
  67. package/dist/pcomponents/PLightDirectional.d.ts.map +0 -1
  68. package/dist/pcomponents/PLightDirectional.js +0 -36
  69. package/dist/pcomponents/PLightDirectional.js.map +0 -1
  70. package/dist/pcomponents/PMaskedMaterial.d.ts +0 -18
  71. package/dist/pcomponents/PMaskedMaterial.d.ts.map +0 -1
  72. package/dist/pcomponents/PMaskedMaterial.js +0 -200
  73. package/dist/pcomponents/PMaskedMaterial.js.map +0 -1
  74. package/dist/pcomponents/PMaterialModifier.d.ts +0 -12
  75. package/dist/pcomponents/PMaterialModifier.d.ts.map +0 -1
  76. package/dist/pcomponents/PMaterialModifier.js +0 -78
  77. package/dist/pcomponents/PMaterialModifier.js.map +0 -1
  78. package/dist/pcomponents/PModelAnnotation.d.ts +0 -11
  79. package/dist/pcomponents/PModelAnnotation.d.ts.map +0 -1
  80. package/dist/pcomponents/PModelAnnotation.js +0 -21
  81. package/dist/pcomponents/PModelAnnotation.js.map +0 -1
  82. package/dist/pcomponents/PModelAnnotations.d.ts +0 -10
  83. package/dist/pcomponents/PModelAnnotations.d.ts.map +0 -1
  84. package/dist/pcomponents/PModelAnnotations.js +0 -25
  85. package/dist/pcomponents/PModelAnnotations.js.map +0 -1
  86. package/dist/pcomponents/PModelGLTF.d.ts +0 -15
  87. package/dist/pcomponents/PModelGLTF.d.ts.map +0 -1
  88. package/dist/pcomponents/PModelGLTF.js +0 -111
  89. package/dist/pcomponents/PModelGLTF.js.map +0 -1
  90. package/dist/pcomponents/PModelNode.d.ts +0 -14
  91. package/dist/pcomponents/PModelNode.d.ts.map +0 -1
  92. package/dist/pcomponents/PModelNode.js +0 -82
  93. package/dist/pcomponents/PModelNode.js.map +0 -1
  94. package/dist/pcomponents/PPhysicalMaterial.d.ts +0 -15
  95. package/dist/pcomponents/PPhysicalMaterial.d.ts.map +0 -1
  96. package/dist/pcomponents/PPhysicalMaterial.js +0 -110
  97. package/dist/pcomponents/PPhysicalMaterial.js.map +0 -1
  98. package/dist/pcomponents/PPlaneGeometry.d.ts +0 -8
  99. package/dist/pcomponents/PPlaneGeometry.d.ts.map +0 -1
  100. package/dist/pcomponents/PPlaneGeometry.js +0 -23
  101. package/dist/pcomponents/PPlaneGeometry.js.map +0 -1
  102. package/dist/pcomponents/PProjectRoot.d.ts +0 -8
  103. package/dist/pcomponents/PProjectRoot.d.ts.map +0 -1
  104. package/dist/pcomponents/PProjectRoot.js +0 -24
  105. package/dist/pcomponents/PProjectRoot.js.map +0 -1
  106. package/dist/pcomponents/PSlider.d.ts +0 -18
  107. package/dist/pcomponents/PSlider.d.ts.map +0 -1
  108. package/dist/pcomponents/PSlider.js +0 -62
  109. package/dist/pcomponents/PSlider.js.map +0 -1
  110. package/dist/pcomponents/PSound.d.ts +0 -17
  111. package/dist/pcomponents/PSound.d.ts.map +0 -1
  112. package/dist/pcomponents/PSound.js +0 -119
  113. package/dist/pcomponents/PSound.js.map +0 -1
  114. package/dist/pcomponents/PSphereGeometry.d.ts +0 -9
  115. package/dist/pcomponents/PSphereGeometry.d.ts.map +0 -1
  116. package/dist/pcomponents/PSphereGeometry.js +0 -24
  117. package/dist/pcomponents/PSphereGeometry.js.map +0 -1
  118. package/dist/pcomponents/PSprite.d.ts +0 -13
  119. package/dist/pcomponents/PSprite.d.ts.map +0 -1
  120. package/dist/pcomponents/PSprite.js +0 -73
  121. package/dist/pcomponents/PSprite.js.map +0 -1
  122. package/dist/pcomponents/PSpriteSheet.d.ts +0 -13
  123. package/dist/pcomponents/PSpriteSheet.d.ts.map +0 -1
  124. package/dist/pcomponents/PSpriteSheet.js +0 -49
  125. package/dist/pcomponents/PSpriteSheet.js.map +0 -1
  126. package/dist/pcomponents/PText.d.ts +0 -9
  127. package/dist/pcomponents/PText.d.ts.map +0 -1
  128. package/dist/pcomponents/PText.js +0 -42
  129. package/dist/pcomponents/PText.js.map +0 -1
  130. package/dist/pcomponents/PVideoPlayer.d.ts +0 -5
  131. package/dist/pcomponents/PVideoPlayer.d.ts.map +0 -1
  132. package/dist/pcomponents/PVideoPlayer.js +0 -12
  133. package/dist/pcomponents/PVideoPlayer.js.map +0 -1
  134. package/dist/pcomponents.d.ts +0 -27
  135. package/dist/pcomponents.d.ts.map +0 -1
  136. package/dist/pcomponents.js +0 -33
  137. package/dist/pcomponents.js.map +0 -1
  138. package/dist/postprocessing/PSSRPass.d.ts +0 -19
  139. package/dist/postprocessing/PSSRPass.d.ts.map +0 -1
  140. package/dist/postprocessing/PSSRPass.js +0 -69
  141. package/dist/postprocessing/PSSRPass.js.map +0 -1
  142. package/dist/postprocessing/ThreeJsPostProcessor.d.ts +0 -32
  143. package/dist/postprocessing/ThreeJsPostProcessor.d.ts.map +0 -1
  144. package/dist/postprocessing/ThreeJsPostProcessor.js +0 -264
  145. package/dist/postprocessing/ThreeJsPostProcessor.js.map +0 -1
  146. package/dist/three/ColliderObject3D.d.ts +0 -19
  147. package/dist/three/ColliderObject3D.d.ts.map +0 -1
  148. package/dist/three/ColliderObject3D.js +0 -96
  149. package/dist/three/ColliderObject3D.js.map +0 -1
  150. package/dist/three/FreeCameraControls.d.ts +0 -32
  151. package/dist/three/FreeCameraControls.d.ts.map +0 -1
  152. package/dist/three/FreeCameraControls.js +0 -173
  153. package/dist/three/FreeCameraControls.js.map +0 -1
  154. package/dist/three/OrbitCameraControls.d.ts +0 -36
  155. package/dist/three/OrbitCameraControls.d.ts.map +0 -1
  156. package/dist/three/OrbitCameraControls.js +0 -306
  157. package/dist/three/OrbitCameraControls.js.map +0 -1
  158. package/dist/three/VrCameraControls.d.ts +0 -30
  159. package/dist/three/VrCameraControls.d.ts.map +0 -1
  160. package/dist/three/VrCameraControls.js +0 -142
  161. package/dist/three/VrCameraControls.js.map +0 -1
@@ -1,410 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeCanvas.js","sourceRoot":"","sources":["../src/ThreeCanvas.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,102 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ThreeEngine.js","sourceRoot":"","sources":["../src/ThreeEngine.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
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
@@ -1 +0,0 @@
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"}