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.
- package/build/index.mjs +2 -0
- package/build/index.mjs.map +1 -0
- package/package.json +10 -8
- package/src/BaseApplication.js +0 -3
- package/src/Browser.js +4 -4
- package/src/Initializer.js +5 -1
- package/src/OS.js +2 -2
- package/src/RenderLoop.js +9 -9
- package/src/ResourceContainer.js +0 -1
- package/src/Screen.js +55 -0
- package/src/Time.js +2 -14
- package/src/action_sequencer/ActionSequencer.js +7 -3
- package/src/gpu_particles/ParticleAttribute.js +2 -2
- package/src/index.js +18 -12
- package/src/loaders/AsyncAbstractLoader.js +144 -0
- package/src/loaders/AsyncAudiosLoader.js +34 -0
- package/src/loaders/AsyncObjectsLoader.js +38 -0
- package/src/loaders/AsyncTexturesLoader.js +70 -0
- package/src/loaders/assets_loader/AbstractLoader.js +129 -0
- package/src/loaders/assets_loader/AssetLoader.js +24 -0
- package/src/loaders/assets_loader/AsyncAssetsLoaderWorker.js +69 -0
- package/src/loaders/assets_loader/ResourceBatch.js +86 -0
- package/src/loaders/assets_loader/ResourceContainer.js +37 -0
- package/src/loaders/assets_loader/ResourceLoaderChecker.js +39 -0
- package/src/render_mode/NormalAORender.js +2 -2
- package/src/resource_loader/AsyncTextureLoader.js +1 -3
- package/src/resource_loader/BasisLoader.js +4 -0
- package/src/scenes/AbstractScene.js +166 -0
- package/src/scenes/loading_states/CompilatorManager.js +41 -0
- package/src/scenes/loading_states/HighQualityLoadingState.js +28 -0
- package/src/scenes/loading_states/LoadingState.js +106 -0
- package/src/scenes/loading_states/RegularLoadingState.js +41 -0
- package/src/utilities/OMath.js +2 -0
- package/src/view_components/ApplicationView.js +26 -3
- package/src/view_components/TransitionManager.js +15 -0
- package/src/view_components/ViewComponent.js +26 -12
- package/src/view_components/ViewComponentManager.js +10 -0
- package/src/view_components/ViewManager.js +52 -14
- package/src/view_components/ViewState.js +7 -7
- package/src/view_components/transition/ActionSequencerBuilder.js +3 -3
- package/src/view_components/transition/TransitionTable.js +2 -9
- package/types/BaseApplication.d.ts +0 -1
- package/types/Browser.d.ts +1 -1
- package/types/CameraManager.d.ts +4 -2
- package/types/Graphics.d.ts +3 -8
- package/types/Initializer.d.ts +1 -1
- package/types/RenderLoop.d.ts +2 -1
- package/types/SceneManager.d.ts +3 -1
- package/types/Time.d.ts +0 -5
- package/types/action_sequencer/ActionSequencer.d.ts +2 -2
- package/types/canvas_drawer/SimpleTextDrawer.d.ts +1 -0
- package/types/index.d.ts +122 -105
- package/types/loaders/AsyncAbstractLoader.d.ts +27 -0
- package/types/loaders/AsyncAudiosLoader.d.ts +5 -0
- package/types/loaders/AsyncObjectsLoader.d.ts +6 -0
- package/types/loaders/AsyncTexturesLoader.d.ts +8 -0
- package/types/render_mode/NormalAORender.d.ts +0 -1
- package/types/resource_loader/AsyncTextureLoader.d.ts +1 -1
- package/types/resource_loader/AudioLoader.d.ts +1 -0
- package/types/resource_loader/BasisLoader.d.ts +1 -0
- package/types/resource_loader/CubemapLoader.d.ts +1 -0
- package/types/resource_loader/DAELoader.d.ts +1 -0
- package/types/resource_loader/FileLoader.d.ts +1 -0
- package/types/resource_loader/FontLoader.d.ts +1 -0
- package/types/resource_loader/GLTFDRACOLoader.d.ts +1 -0
- package/types/resource_loader/GLTFLoader.d.ts +1 -0
- package/types/resource_loader/HDRCubeTextureLoader.d.ts +1 -0
- package/types/resource_loader/OBJLoader.d.ts +1 -0
- package/types/resource_loader/PointArrayLoader.d.ts +1 -0
- package/types/resource_loader/RGBETextureLoader.d.ts +1 -0
- package/types/resource_loader/TextLoader.d.ts +1 -0
- package/types/scenes/AbstractScene.d.ts +31 -0
- package/types/scenes/loading_states/CompilatorManager.d.ts +8 -0
- package/types/scenes/loading_states/HighQualityLoadingState.d.ts +3 -0
- package/types/scenes/loading_states/LoadingState.d.ts +28 -0
- package/types/scenes/loading_states/RegularLoadingState.d.ts +5 -0
- package/types/utilities/FrustumPointFitter.d.ts +3 -1
- package/types/utilities/OMath.d.ts +9 -9
- package/types/view_components/ApplicationView.d.ts +3 -1
- package/types/view_components/ViewComponent.d.ts +5 -1
- package/types/view_components/ViewComponentManager.d.ts +1 -0
- package/types/view_components/ViewManager.d.ts +22 -4
- package/types/view_components/ViewState.d.ts +3 -0
- package/types/view_components/transition/ActionSequencerBuilder.d.ts +1 -1
- package/types/view_components/transition/TransitionTable.d.ts +0 -2
- package/build/index.module.js +0 -2
- package/build/index.module.js.map +0 -1
- package/src/view_components/ApplicationViewController.js +0 -85
- package/src/view_components/VCManager.js +0 -9
- package/src/view_components/ViewComponentController.js +0 -73
- package/src/view_components/ViewComponentControllerManager.js +0 -59
- package/src/view_components/ViewControllerManager.js +0 -91
- package/src/view_components/WorkerToMain.js +0 -25
- package/types/blitter_index.d.ts +0 -6
- package/types/render_mode/TransparencyMixRender.d.ts +0 -21
- package/types/view_components/ApplicationViewController.d.ts +0 -11
- package/types/view_components/VCManager.d.ts +0 -5
- package/types/view_components/ViewComponentController.d.ts +0 -14
- package/types/view_components/ViewComponentControllerManager.d.ts +0 -12
- package/types/view_components/ViewControllerManager.d.ts +0 -12
- 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
|
-
"
|
|
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.
|
|
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.
|
|
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
|
-
"
|
|
56
|
-
"rollup": "
|
|
57
|
-
"rollup-plugin-
|
|
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.
|
|
61
|
+
"typescript": "^4.4.3"
|
|
60
62
|
}
|
|
61
63
|
}
|
package/src/BaseApplication.js
CHANGED
package/src/Browser.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
|
|
2
2
|
class Browser
|
|
3
3
|
{
|
|
4
|
-
async init(
|
|
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:
|
package/src/Initializer.js
CHANGED
|
@@ -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 {
|
|
7
|
-
import {
|
|
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
|
-
|
|
58
|
-
|
|
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
|
}
|
package/src/ResourceContainer.js
CHANGED
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 {
|
|
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 = {}
|
|
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(
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
125
|
-
|
|
126
|
-
|
|
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 };
|