ohzi-core 11.2.4 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/build/index.mjs +2 -0
  2. package/build/index.mjs.map +1 -0
  3. package/package.json +10 -8
  4. package/src/BaseApplication.js +0 -3
  5. package/src/Browser.js +4 -4
  6. package/src/Initializer.js +5 -1
  7. package/src/OS.js +2 -2
  8. package/src/RenderLoop.js +9 -9
  9. package/src/ResourceContainer.js +0 -1
  10. package/src/Screen.js +55 -0
  11. package/src/Time.js +2 -14
  12. package/src/action_sequencer/ActionSequencer.js +7 -3
  13. package/src/gpu_particles/ParticleAttribute.js +2 -2
  14. package/src/index.js +18 -12
  15. package/src/loaders/AsyncAbstractLoader.js +144 -0
  16. package/src/loaders/AsyncAudiosLoader.js +34 -0
  17. package/src/loaders/AsyncObjectsLoader.js +38 -0
  18. package/src/loaders/AsyncTexturesLoader.js +70 -0
  19. package/src/loaders/assets_loader/AbstractLoader.js +129 -0
  20. package/src/loaders/assets_loader/AssetLoader.js +24 -0
  21. package/src/loaders/assets_loader/AsyncAssetsLoaderWorker.js +69 -0
  22. package/src/loaders/assets_loader/ResourceBatch.js +86 -0
  23. package/src/loaders/assets_loader/ResourceContainer.js +37 -0
  24. package/src/loaders/assets_loader/ResourceLoaderChecker.js +39 -0
  25. package/src/render_mode/NormalAORender.js +2 -2
  26. package/src/resource_loader/AsyncTextureLoader.js +1 -3
  27. package/src/resource_loader/BasisLoader.js +4 -0
  28. package/src/scenes/AbstractScene.js +166 -0
  29. package/src/scenes/loading_states/CompilatorManager.js +41 -0
  30. package/src/scenes/loading_states/HighQualityLoadingState.js +28 -0
  31. package/src/scenes/loading_states/LoadingState.js +106 -0
  32. package/src/scenes/loading_states/RegularLoadingState.js +41 -0
  33. package/src/utilities/OMath.js +2 -0
  34. package/src/view_components/ApplicationView.js +26 -3
  35. package/src/view_components/TransitionManager.js +15 -0
  36. package/src/view_components/ViewComponent.js +26 -12
  37. package/src/view_components/ViewComponentManager.js +10 -0
  38. package/src/view_components/ViewManager.js +52 -14
  39. package/src/view_components/ViewState.js +7 -7
  40. package/src/view_components/transition/ActionSequencerBuilder.js +3 -3
  41. package/src/view_components/transition/TransitionTable.js +2 -9
  42. package/types/BaseApplication.d.ts +0 -1
  43. package/types/Browser.d.ts +1 -1
  44. package/types/CameraManager.d.ts +4 -2
  45. package/types/Graphics.d.ts +3 -8
  46. package/types/Initializer.d.ts +1 -1
  47. package/types/RenderLoop.d.ts +2 -1
  48. package/types/SceneManager.d.ts +3 -1
  49. package/types/Time.d.ts +0 -5
  50. package/types/action_sequencer/ActionSequencer.d.ts +2 -2
  51. package/types/canvas_drawer/SimpleTextDrawer.d.ts +1 -0
  52. package/types/index.d.ts +122 -105
  53. package/types/loaders/AsyncAbstractLoader.d.ts +27 -0
  54. package/types/loaders/AsyncAudiosLoader.d.ts +5 -0
  55. package/types/loaders/AsyncObjectsLoader.d.ts +6 -0
  56. package/types/loaders/AsyncTexturesLoader.d.ts +8 -0
  57. package/types/render_mode/NormalAORender.d.ts +0 -1
  58. package/types/resource_loader/AsyncTextureLoader.d.ts +1 -1
  59. package/types/resource_loader/AudioLoader.d.ts +1 -0
  60. package/types/resource_loader/BasisLoader.d.ts +1 -0
  61. package/types/resource_loader/CubemapLoader.d.ts +1 -0
  62. package/types/resource_loader/DAELoader.d.ts +1 -0
  63. package/types/resource_loader/FileLoader.d.ts +1 -0
  64. package/types/resource_loader/FontLoader.d.ts +1 -0
  65. package/types/resource_loader/GLTFDRACOLoader.d.ts +1 -0
  66. package/types/resource_loader/GLTFLoader.d.ts +1 -0
  67. package/types/resource_loader/HDRCubeTextureLoader.d.ts +1 -0
  68. package/types/resource_loader/OBJLoader.d.ts +1 -0
  69. package/types/resource_loader/PointArrayLoader.d.ts +1 -0
  70. package/types/resource_loader/RGBETextureLoader.d.ts +1 -0
  71. package/types/resource_loader/TextLoader.d.ts +1 -0
  72. package/types/scenes/AbstractScene.d.ts +31 -0
  73. package/types/scenes/loading_states/CompilatorManager.d.ts +8 -0
  74. package/types/scenes/loading_states/HighQualityLoadingState.d.ts +3 -0
  75. package/types/scenes/loading_states/LoadingState.d.ts +28 -0
  76. package/types/scenes/loading_states/RegularLoadingState.d.ts +5 -0
  77. package/types/utilities/FrustumPointFitter.d.ts +3 -1
  78. package/types/utilities/OMath.d.ts +9 -9
  79. package/types/view_components/ApplicationView.d.ts +3 -1
  80. package/types/view_components/ViewComponent.d.ts +5 -1
  81. package/types/view_components/ViewComponentManager.d.ts +1 -0
  82. package/types/view_components/ViewManager.d.ts +22 -4
  83. package/types/view_components/ViewState.d.ts +3 -0
  84. package/types/view_components/transition/ActionSequencerBuilder.d.ts +1 -1
  85. package/types/view_components/transition/TransitionTable.d.ts +0 -2
  86. package/build/index.module.js +0 -2
  87. package/build/index.module.js.map +0 -1
  88. package/src/view_components/ApplicationViewController.js +0 -85
  89. package/src/view_components/VCManager.js +0 -9
  90. package/src/view_components/ViewComponentController.js +0 -73
  91. package/src/view_components/ViewComponentControllerManager.js +0 -59
  92. package/src/view_components/ViewControllerManager.js +0 -91
  93. package/src/view_components/WorkerToMain.js +0 -25
  94. package/types/blitter_index.d.ts +0 -6
  95. package/types/render_mode/TransparencyMixRender.d.ts +0 -21
  96. package/types/view_components/ApplicationViewController.d.ts +0 -11
  97. package/types/view_components/VCManager.d.ts +0 -5
  98. package/types/view_components/ViewComponentController.d.ts +0 -14
  99. package/types/view_components/ViewComponentControllerManager.d.ts +0 -12
  100. package/types/view_components/ViewControllerManager.d.ts +0 -12
  101. package/types/view_components/WorkerToMain.d.ts +0 -8
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "ohzi-core",
3
- "sideEffects": false,
4
- "version": "11.2.4",
3
+ "version": "12.0.0",
5
4
  "description": "OHZI Interactive Core Library",
6
5
  "source": "src/index.js",
7
- "module": "build/index.module.js",
6
+ "module": "build/index.mjs",
8
7
  "types": "types/index.d.ts",
8
+ "sideEffects": false,
9
9
  "files": [
10
10
  "build",
11
11
  "LICENSE",
@@ -15,6 +15,7 @@
15
15
  ],
16
16
  "scripts": {
17
17
  "preinstall": "yarn config-hooks",
18
+ "start": "rollup -w -c",
18
19
  "config-hooks": "git config core.hooksPath git_hooks",
19
20
  "build": "rollup -c",
20
21
  "create-tag": "node tasks/app/create_tag.mjs",
@@ -44,7 +45,7 @@
44
45
  "registry": "https://registry.npmjs.org/"
45
46
  },
46
47
  "dependencies": {
47
- "three": "0.161.0"
48
+ "three": "0.166.0"
48
49
  },
49
50
  "standardx": {
50
51
  "ignore": [
@@ -52,10 +53,11 @@
52
53
  ]
53
54
  },
54
55
  "devDependencies": {
55
- "@rollup/plugin-terser": "^0.4.4",
56
- "rollup": "4.1.4",
57
- "rollup-plugin-glslify": "^1.3.1",
56
+ "rollup": "^2.44.0",
57
+ "rollup-plugin-glslify": "^1.2.0",
58
+ "rollup-plugin-sourcemaps": "^0.6.3",
59
+ "rollup-plugin-terser": "^7.0.2",
58
60
  "standardx": "^7.0.0",
59
- "typescript": "4.4.4"
61
+ "typescript": "^4.4.3"
60
62
  }
61
63
  }
@@ -26,9 +26,6 @@ class BaseApplication
26
26
 
27
27
  on_frame_end()
28
28
  {}
29
-
30
- dispose()
31
- {}
32
29
  }
33
30
 
34
31
  export { BaseApplication };
package/src/Browser.js CHANGED
@@ -1,10 +1,10 @@
1
1
 
2
2
  class Browser
3
3
  {
4
- async init(opr, chrome)
4
+ async init()
5
5
  {
6
6
  this.browser_name = '';
7
- this.agent = navigator.userAgent.toLowerCase();
7
+ this.agent = window.navigator.userAgent.toLowerCase();
8
8
 
9
9
  this.has_web_xr_support = 'xr' in navigator;
10
10
  this.is_vr = this.has_web_xr_support && await navigator.xr.isSessionSupported('immersive-vr');
@@ -17,10 +17,10 @@ class Browser
17
17
  case this.agent.indexOf('edg') > -1:
18
18
  this.browser_name = 'edge_chromium';
19
19
  break;
20
- case this.agent.indexOf('opr') > -1 && !!opr:
20
+ case this.agent.indexOf('opr') > -1 && !!window.opr:
21
21
  this.browser_name = 'opera';
22
22
  break;
23
- case this.agent.indexOf('chrome') > -1 && !!chrome:
23
+ case this.agent.indexOf('chrome') > -1 && !!window.chrome:
24
24
  this.browser_name = 'chrome';
25
25
  break;
26
26
  case this.agent.indexOf('trident') > -1:
@@ -1,3 +1,4 @@
1
+ import { Browser } from './Browser';
1
2
  import { CameraManager } from './CameraManager';
2
3
  import { Capabilities } from './Capabilities';
3
4
  import { Debug } from './Debug';
@@ -26,6 +27,7 @@ class Initializer
26
27
  GeometryBatcher.init();
27
28
 
28
29
  OS.init();
30
+ Browser.init();
29
31
  ReflectionPlaneContext.init();
30
32
  ResourceContainer.init();
31
33
  SceneManager.init();
@@ -36,10 +38,12 @@ class Initializer
36
38
  Debug.init();
37
39
  }
38
40
 
39
- dispose()
41
+ dispose(render_loop)
40
42
  {
41
43
  Graphics.dispose();
42
44
  SceneManager.dispose();
45
+
46
+ render_loop.dispose();
43
47
  }
44
48
  }
45
49
 
package/src/OS.js CHANGED
@@ -23,8 +23,8 @@ class OS
23
23
 
24
24
  get_os()
25
25
  {
26
- const userAgent = navigator.userAgent;
27
- const platform = navigator.platform;
26
+ const userAgent = window.navigator.userAgent;
27
+ const platform = window.navigator.platform;
28
28
  const macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'];
29
29
  const windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'];
30
30
  const iosPlatforms = ['iPhone', 'iPad', 'iPod'];
package/src/RenderLoop.js CHANGED
@@ -3,17 +3,18 @@ import { Debug } from './Debug';
3
3
  import { Time } from './Time';
4
4
  import { UI } from './UI';
5
5
  import { TransitionManager } from './view_components/TransitionManager';
6
- import { VCManager } from './view_components/VCManager';
7
- import { ViewComponentControllerManager } from './view_components/ViewComponentControllerManager';
6
+ import { ViewComponentManager } from './view_components/ViewComponentManager';
7
+ import { ViewManager } from './view_components/ViewManager';
8
8
 
9
9
  class RenderLoop
10
10
  {
11
- constructor(target_application, graphics)
11
+ constructor(target_application, graphics, input)
12
12
  {
13
13
  target_application = target_application || new BaseApplication();
14
14
 
15
15
  this.target_application = target_application;
16
16
  this.graphics = graphics;
17
+ this.input = input;
17
18
 
18
19
  this.is_running = false;
19
20
  this.frames_passed = 0;
@@ -27,7 +28,6 @@ class RenderLoop
27
28
  {
28
29
  return;
29
30
  }
30
-
31
31
  Time.__update();
32
32
 
33
33
  // ###### START CYCLE ######
@@ -36,6 +36,8 @@ class RenderLoop
36
36
  this.target_application.on_post_start();
37
37
  }
38
38
 
39
+ this.input.update();
40
+
39
41
  this.time_accumulator += Time.delta_time;
40
42
 
41
43
  this.target_application.before_update();
@@ -48,21 +50,19 @@ class RenderLoop
48
50
 
49
51
  this.time_accumulator -= Time.fixed_delta_time;
50
52
  }
51
-
52
53
  Time.__set_frame_interpolation(this.time_accumulator / Time.fixed_delta_time);
53
54
 
54
55
  this.target_application.update();
55
56
 
56
57
  TransitionManager.update();
57
- VCManager.update();
58
- ViewComponentControllerManager.update();
58
+ ViewManager.update();
59
+ ViewComponentManager.update();
59
60
 
60
61
  this.target_application.on_pre_render();
61
62
 
62
63
  this.graphics.update(); // render scene
63
64
  UI.update(); // update after new camera matrix has been calculated
64
65
  UI.render(this.graphics); // render ui layer on top
65
-
66
66
  this.target_application.on_post_render();
67
67
 
68
68
  Debug.render(this.graphics); // render debug layer
@@ -70,9 +70,9 @@ class RenderLoop
70
70
  // ###### END CYCLE #######
71
71
 
72
72
  this.target_application.on_frame_end();
73
-
74
73
  this.frames_passed++;
75
74
 
75
+ this.input.clear();
76
76
  UI.clear();
77
77
  Debug.clear();
78
78
  }
@@ -1,4 +1,3 @@
1
-
2
1
  class ResourceContainer
3
2
  {
4
3
  init()
package/src/Screen.js ADDED
@@ -0,0 +1,55 @@
1
+ import { OScreen } from './OScreen';
2
+
3
+ class Screen
4
+ {
5
+ init()
6
+ {
7
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
8
+ OScreen.init();
9
+ }
10
+
11
+ update_position(x, y)
12
+ {
13
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
14
+ OScreen.update_position(x, y);
15
+ }
16
+
17
+ update()
18
+ {
19
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
20
+ OScreen.update();
21
+ }
22
+
23
+ update_size(width, height)
24
+ {
25
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
26
+ OScreen.update_size(width, height);
27
+ }
28
+
29
+ apply_pixel_density_v2(vector2)
30
+ {
31
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
32
+ return OScreen.apply_pixel_density_v2(vector2);
33
+ }
34
+
35
+ apply_pixel_density(value)
36
+ {
37
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
38
+ return OScreen.apply_pixel_density(value);
39
+ }
40
+
41
+ get_pixel_size()
42
+ {
43
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
44
+ return OScreen.get_pixel_size();
45
+ }
46
+
47
+ get aspect_ratio()
48
+ {
49
+ console.warn('Screen Singleton is deprecated. Please use OScreen.');
50
+ return OScreen.aspect_ratio;
51
+ }
52
+ }
53
+
54
+ const screen = new Screen();
55
+ export { screen as Screen };
package/src/Time.js CHANGED
@@ -1,4 +1,5 @@
1
- import { Clock, Vector2 } from 'three';
1
+ import { Vector2 } from 'three';
2
+ import { Clock } from 'three';
2
3
 
3
4
  class Time
4
5
  {
@@ -60,19 +61,6 @@ class Time
60
61
  return this.smooth_delta_time;
61
62
  }
62
63
 
63
- to_json()
64
- {
65
- const data = {
66
-
67
- elapsed_time: this.elapsed_time,
68
- delta_time: this.delta_time,
69
- smooth_delta_time: this.smooth_delta_time
70
-
71
- };
72
-
73
- return data;
74
- }
75
-
76
64
  __set_frame_interpolation(value)
77
65
  {
78
66
  this.__frame_interpolation_t = value;
@@ -3,11 +3,11 @@ import { OMath } from '../utilities/OMath';
3
3
 
4
4
  class ActionSequencer
5
5
  {
6
- constructor(context = {}, transitions_velocity)
6
+ constructor(context = {})
7
7
  {
8
8
  this.previous_elapsed_time = -0.00001;
9
9
  this.elapsed_time = -0.00001;
10
- this.playback_speed = this.__get_playback_speed(transitions_velocity);
10
+ this.playback_speed = this.__get_playback_speed();
11
11
  this.playing = true;
12
12
 
13
13
  this.action_events = [];
@@ -255,8 +255,12 @@ class ActionSequencer
255
255
  return current;
256
256
  }
257
257
 
258
- __get_playback_speed(transitions_velocity)
258
+ __get_playback_speed()
259
259
  {
260
+ const url_params = new URLSearchParams(window.location.search);
261
+
262
+ const transitions_velocity = url_params.get('transitions_velocity');
263
+
260
264
  if (transitions_velocity)
261
265
  {
262
266
  return Number(transitions_velocity);
@@ -1,6 +1,6 @@
1
1
  import { Graphics } from '../Graphics';
2
2
 
3
- import { FloatType, HalfFloatType, LinearSRGBColorSpace, NearestFilter, RGBAFormat, WebGLRenderTarget } from 'three';
3
+ import { FloatType, HalfFloatType, NearestFilter, NoColorSpace, RGBAFormat, WebGLRenderTarget } from 'three';
4
4
  import { Capabilities } from '../Capabilities';
5
5
 
6
6
  class ParticleAttribute
@@ -32,7 +32,7 @@ class ParticleAttribute
32
32
  minFilter: NearestFilter,
33
33
  magFilter: NearestFilter,
34
34
  format: RGBAFormat,
35
- colorSpace: LinearSRGBColorSpace,
35
+ colorScape: NoColorSpace,
36
36
  type: Capabilities.fp_textures_available ? FloatType : HalfFloatType,
37
37
  stencilBuffer: false,
38
38
  depthBuffer: false
package/src/index.js CHANGED
@@ -5,10 +5,12 @@ import { BlitMaterial } from './materials/BlitMaterial';
5
5
  import { UnrealBloomComposeMaterial } from './materials/UnrealBloomComposeMaterial';
6
6
  import { BaseRender } from './render_mode/BaseRender';
7
7
  import { AbstractLoader } from './resource_loader/AbstractLoader';
8
+ import { AbstractScene } from './scenes/AbstractScene';
9
+ import { HighQualityLoadingState } from './scenes/loading_states/HighQualityLoadingState';
10
+ import { LoadingState } from './scenes/loading_states/LoadingState';
11
+ import { RegularLoadingState } from './scenes/loading_states/RegularLoadingState';
8
12
  import { ApplicationView } from './view_components/ApplicationView';
9
- import { ApplicationViewController } from './view_components/ApplicationViewController';
10
13
  import { ActionSequencerBuilder } from './view_components/transition/ActionSequencerBuilder';
11
- import { WorkerToMain } from './view_components/WorkerToMain';
12
14
 
13
15
  import { Browser } from './Browser';
14
16
  import { CameraManager } from './CameraManager';
@@ -31,15 +33,12 @@ import { UnrealBloomRender } from './render_mode/UnrealBloomRender';
31
33
  import { VRRender } from './render_mode/VRRender';
32
34
  import { RenderLoop } from './RenderLoop';
33
35
  import { SceneManager } from './SceneManager';
36
+ import { Screen } from './Screen';
34
37
  import { Time } from './Time';
35
38
  import { UI } from './UI';
36
39
  import { DrawIOAnimationSheet } from './view_components/transition/DrawIOAnimationSheet';
37
40
  import { TransitionTable } from './view_components/transition/TransitionTable';
38
- import { TransitionManager } from './view_components/TransitionManager';
39
- import { VCManager } from './view_components/VCManager';
40
41
  import { ViewComponent } from './view_components/ViewComponent';
41
- import { ViewComponentController } from './view_components/ViewComponentController';
42
- import { ViewComponentControllerManager } from './view_components/ViewComponentControllerManager';
43
42
  import { ViewComponentManager } from './view_components/ViewComponentManager';
44
43
  import { ViewManager } from './view_components/ViewManager';
45
44
 
@@ -113,15 +112,22 @@ import { TextLoader } from './resource_loader/TextLoader';
113
112
  import { TextureLoader } from './resource_loader/TextureLoader';
114
113
  import { VideoLoader } from './resource_loader/VideoLoader';
115
114
 
115
+ import { AsyncAbstractLoader } from './loaders/AsyncAbstractLoader';
116
+ import { AsyncAudiosLoader } from './loaders/AsyncAudiosLoader';
117
+ import { AsyncObjectsLoader } from './loaders/AsyncObjectsLoader';
118
+ import { AsyncTexturesLoader } from './loaders/AsyncTexturesLoader';
116
119
  import { ResourceBatch } from './resource_loader/ResourceBatch';
117
120
  import { ResourceContainer } from './ResourceContainer';
121
+ import { TransitionManager } from './view_components/TransitionManager';
118
122
 
119
123
  export {
120
- AbstractLoader, ActionEvent, ActionInterpolator, ActionSequencer, ActionSequencerBuilder, AddMaterial, ApplicationView, ApplicationViewController, ArrayUtilities, Arrow, AsyncTextureLoader, AudioLoader, BaseApplication, BaseRender, BaseShaderMaterial, BasisLoader, BlitMaterial, Blurrer, Browser, BufferGeometryUtils, CameraManager, CameraUtilities, CanvasDrawer, Capabilities,
124
+ AbstractLoader, AbstractScene, ActionEvent, ActionInterpolator, ActionSequencer, ActionSequencerBuilder, AddMaterial, ApplicationView, ArrayUtilities, Arrow, AsyncAbstractLoader, AsyncAudiosLoader, AsyncObjectsLoader, AsyncTextureLoader, AsyncTexturesLoader, AudioLoader, BaseApplication, BaseRender, BaseShaderMaterial, BasisLoader, BlitMaterial, Blurrer, Browser, BufferGeometryUtils, CameraManager, CameraUtilities, CanvasDrawer, Capabilities,
121
125
  CSSAnimator, Cube, CubemapLoader, DAELoader, Debug, DebugNormalsRender, DrawIOAnimationSheet, DualFilteringBlurMaterial, DualFilteringBlurrer, EasingFunctions, FileLoader,
122
- FontLoader, FrustumPointFitter, GaussianBlurrer, GeometryUtilities, GLTFDRACOLoader, GLTFLoader, GPUParticleSystem, Graphics, Grid, HDRCubeTextureLoader, HorizontalPlane, HTMLUtilities,
123
- ImageUtilities, Initializer, JSONLoader, KeyboardInput, Line, MedianFilter, MeshBatcher, MeshSampler,
124
- ModelUtilities, NormalAORender, NormalRender, NumberInterpolator, ObjectUtilities, OBJLoader, OMath, OrthographicCamera, OrthographicFrustumPointFitter, OS, OScreen, ParticleAttribute,
125
- ParticlePositionAttribute, PerspectiveCamera, PerspectiveFrustumPointFitter, PointArrayLoader, RenderLoop, ResourceBatch,
126
- ResourceContainer, RGBETextureLoader, SceneManager, SDFTextBatch, SimpleTextDrawer, Sphere, StringUtilities, Text2D, TextLoader, TextureLoader, Time, TimeUtilities, TransitionManager, TransitionTable, UI, UIElement, UnrealBloomComposeMaterial, UnrealBloomRender, UpdatableMaterialMesh, Validation, VCManager, VectorInterpolator, VerticalPlane, VideoLoader, ViewComponent, ViewComponentController, ViewComponentControllerManager, ViewComponentManager, ViewManager, VRRender, WorkerToMain, WorldImage
126
+ FontLoader, FrustumPointFitter, GaussianBlurrer, GeometryUtilities, GLTFDRACOLoader, GLTFLoader, GPUParticleSystem, Graphics, Grid, HDRCubeTextureLoader, HighQualityLoadingState, HorizontalPlane, HTMLUtilities,
127
+ ImageUtilities, Initializer, JSONLoader, KeyboardInput, Line, LoadingState, MedianFilter, MeshBatcher, MeshSampler,
128
+ ModelUtilities, NormalAORender,
129
+ NormalRender, NumberInterpolator, ObjectUtilities, OBJLoader, OMath, OrthographicCamera, OrthographicFrustumPointFitter, OS, OScreen, ParticleAttribute,
130
+ ParticlePositionAttribute, PerspectiveCamera, PerspectiveFrustumPointFitter, PointArrayLoader, RegularLoadingState, RenderLoop, ResourceBatch,
131
+ ResourceContainer, RGBETextureLoader, SceneManager, Screen, SDFTextBatch, SimpleTextDrawer, Sphere, StringUtilities, Text2D, TextLoader, TextureLoader, Time, TimeUtilities, TransitionManager, TransitionTable, UI, UIElement, UnrealBloomComposeMaterial, UnrealBloomRender, UpdatableMaterialMesh, Validation, VectorInterpolator, VerticalPlane, VideoLoader, ViewComponent,
132
+ ViewComponentManager, ViewManager, VRRender, WorldImage
127
133
  };
@@ -0,0 +1,144 @@
1
+ import { ResourceContainer } from '../ResourceContainer';
2
+
3
+ class AsyncAbstractLoader
4
+ {
5
+ constructor(name, assets, worker)
6
+ {
7
+ this.resource_container = ResourceContainer;
8
+ this.assets = assets;
9
+ this.name = name;
10
+
11
+ this.worker = worker;
12
+
13
+ this.bound_on_message = this.on_message.bind(this);
14
+
15
+ this.__setup_worker();
16
+
17
+ this.assets_loaders = this.__setup_loaders();
18
+ }
19
+
20
+ load()
21
+ {
22
+ this.worker.postMessage({ type: 'load', loader_name: this.name });
23
+ }
24
+
25
+ is_loaded()
26
+ {
27
+ for (let i = 0; i < this.assets_loaders.length; i++)
28
+ {
29
+ const asset_loader = this.assets_loaders[i];
30
+
31
+ if (!asset_loader.has_finished)
32
+ {
33
+ return false;
34
+ }
35
+ else
36
+ {
37
+ if (asset_loader.has_error)
38
+ {
39
+ // Restore original url so the error message make more sense
40
+ // asset_loader.url = asset_loader.original_url;
41
+
42
+ asset_loader.print_error();
43
+ }
44
+ }
45
+ }
46
+
47
+ return true;
48
+ }
49
+
50
+ get_progress()
51
+ {
52
+ return this.__get_loaded_bytes() / this.__get_total_bytes();
53
+ }
54
+
55
+ __get_loaded_bytes()
56
+ {
57
+ let loaded_bytes = 1;
58
+
59
+ for (let i = 0; i < this.assets_loaders.length; i++)
60
+ {
61
+ loaded_bytes += this.assets_loaders[i].loaded_bytes;
62
+ }
63
+
64
+ return loaded_bytes;
65
+ }
66
+
67
+ __get_total_bytes()
68
+ {
69
+ let total_bytes = 1;
70
+
71
+ for (let i = 0; i < this.assets_loaders.length; i++)
72
+ {
73
+ total_bytes += this.assets_loaders[i].total_bytes;
74
+ }
75
+
76
+ return total_bytes;
77
+ }
78
+
79
+ get_assets_names()
80
+ {
81
+ const names = [];
82
+
83
+ for (let i = 0; i < this.assets.length; i++)
84
+ {
85
+ const asset = this.assets[i];
86
+
87
+ names.push(asset.name);
88
+ }
89
+
90
+ return names;
91
+ }
92
+
93
+ static create_worker()
94
+ {
95
+ const worker = new Worker(
96
+ new URL('./assets_loader/AsyncAssetsLoaderWorker.js', import.meta.url),
97
+ { name: 'OHZI - AssetLoader', type: 'module' });
98
+
99
+ return worker;
100
+ }
101
+
102
+ __setup_worker()
103
+ {
104
+ this.worker.addEventListener('message', this.bound_on_message);
105
+
106
+ this.worker.postMessage({ type: 'assets', loader_name: this.name, data: this.assets });
107
+ }
108
+
109
+ on_message(e)
110
+ {
111
+ const message = e.data;
112
+
113
+ switch (message.type)
114
+ {
115
+ case `asset_loaded_${this.name}`:
116
+ this.__on_assets_loaded(message.data);
117
+ break;
118
+ }
119
+ }
120
+
121
+ __on_assets_loaded(resources)
122
+ {
123
+ this.worker.removeEventListener('message', this.bound_on_message);
124
+
125
+ for (let i = 0; i < this.assets_loaders.length; i++)
126
+ {
127
+ const asset_loader = this.assets_loaders[i];
128
+
129
+ // Save original url to show in a possible error
130
+ asset_loader.original_url = asset_loader.url;
131
+
132
+ asset_loader.url = resources[asset_loader.resource_id];
133
+
134
+ asset_loader.on_preloaded_finished(this.resource_container);
135
+ }
136
+ }
137
+
138
+ __setup_loaders()
139
+ {
140
+ console.warn('Not implemented');
141
+ }
142
+ }
143
+
144
+ export { AsyncAbstractLoader };
@@ -0,0 +1,34 @@
1
+ import { AudioLoader } from '../resource_loader/AudioLoader';
2
+ import { AsyncAbstractLoader } from './AsyncAbstractLoader';
3
+
4
+ class AsyncAudiosLoader extends AsyncAbstractLoader
5
+ {
6
+ constructor(scene_name, assets, worker)
7
+ {
8
+ super(scene_name, assets, worker);
9
+ }
10
+
11
+ // Called from parent
12
+ __setup_loaders()
13
+ {
14
+ const loaders = [];
15
+
16
+ for (let i = 0; i < this.assets.length; i++)
17
+ {
18
+ const asset_data = this.assets[i];
19
+
20
+ loaders.push(new AudioLoader(
21
+ asset_data.name,
22
+ asset_data.url,
23
+ asset_data.loop,
24
+ asset_data.volume,
25
+ asset_data.size,
26
+ asset_data.positional
27
+ ));
28
+ }
29
+
30
+ return loaders;
31
+ }
32
+ }
33
+
34
+ export { AsyncAudiosLoader };
@@ -0,0 +1,38 @@
1
+ import { GLTFDRACOLoader } from '../resource_loader/GLTFDRACOLoader';
2
+ import { GLTFLoader } from '../resource_loader/GLTFLoader';
3
+ import { ResourceContainer } from '../ResourceContainer';
4
+ import { AsyncAbstractLoader } from './AsyncAbstractLoader';
5
+
6
+ class AsyncObjectsLoader extends AsyncAbstractLoader
7
+ {
8
+ constructor(scene_name, assets, worker)
9
+ {
10
+ super(scene_name, assets, worker);
11
+ }
12
+
13
+ // Called from parent
14
+ __setup_loaders()
15
+ {
16
+ const loaders = [];
17
+
18
+ for (let i = 0; i < this.assets.length; i++)
19
+ {
20
+ const asset_data = this.assets[i];
21
+
22
+ if (asset_data.draco)
23
+ {
24
+ const draco_loader = ResourceContainer.get('draco_loader');
25
+
26
+ loaders.push(new GLTFDRACOLoader(asset_data.name, asset_data.url, draco_loader, asset_data.size));
27
+ }
28
+ else
29
+ {
30
+ loaders.push(new GLTFLoader(asset_data.name, asset_data.url, asset_data.size));
31
+ }
32
+ }
33
+
34
+ return loaders;
35
+ }
36
+ }
37
+
38
+ export { AsyncObjectsLoader };
@@ -0,0 +1,70 @@
1
+
2
+ import { AsyncTextureLoader } from '../resource_loader/AsyncTextureLoader';
3
+ import { BasisLoader } from '../resource_loader/BasisLoader';
4
+ import { CubemapLoader } from '../resource_loader/CubemapLoader';
5
+ import { RGBETextureLoader } from '../resource_loader/RGBETextureLoader';
6
+ import { ResourceContainer } from '../ResourceContainer';
7
+ import { AsyncAbstractLoader } from './AsyncAbstractLoader';
8
+
9
+ class AsyncTexturesLoader extends AsyncAbstractLoader
10
+ {
11
+ constructor(scene_name, assets, worker)
12
+ {
13
+ super(scene_name, assets, worker);
14
+ }
15
+
16
+ // Called from parent
17
+ __setup_loaders()
18
+ {
19
+ const loaders = [];
20
+
21
+ for (let i = 0; i < this.assets.length; i++)
22
+ {
23
+ const asset_data = this.assets[i];
24
+
25
+ switch (asset_data.kind)
26
+ {
27
+ case 'regular':
28
+ loaders.push(new AsyncTextureLoader(
29
+ asset_data.name,
30
+ asset_data.url,
31
+ asset_data.size
32
+ ));
33
+
34
+ break;
35
+ case 'basis':
36
+ loaders.push(new BasisLoader(
37
+ asset_data.name,
38
+ asset_data.url,
39
+ ResourceContainer.get('basis_loader'),
40
+ asset_data.size
41
+ ));
42
+
43
+ break;
44
+ case 'hdr':
45
+ loaders.push(new RGBETextureLoader(
46
+ asset_data.name,
47
+ asset_data.url,
48
+ asset_data.size
49
+ ));
50
+
51
+ break;
52
+ case 'cubemap':
53
+ loaders.push(new CubemapLoader(
54
+ asset_data.name,
55
+ asset_data.url,
56
+ asset_data.extension,
57
+ asset_data.size
58
+ ));
59
+
60
+ break;
61
+ default:
62
+ break;
63
+ }
64
+ }
65
+
66
+ return loaders;
67
+ }
68
+ }
69
+
70
+ export { AsyncTexturesLoader };