@benjos/create-boilerplate 1.3.5 → 1.4.1
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/package.json +1 -1
- package/template-react/package-lock.json +2 -2
- package/template-react/package.json +1 -1
- package/template-react/src/App.css +21 -21
- package/template-react/src/App.tsx +5 -9
- package/template-react/src/index.css +42 -42
- package/template-react/src/main.tsx +8 -8
- package/template-vanilla/index.html +23 -14
- package/template-vanilla/package-lock.json +8 -6
- package/template-vanilla/package.json +2 -2
- package/template-vanilla/src/experiences/Experience.ts +11 -11
- package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +13 -18
- package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +7 -10
- package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +6 -10
- package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +20 -39
- package/template-vanilla/src/experiences/commands/InitCommand.ts +30 -33
- package/template-vanilla/src/experiences/engines/htmls/MainHTML.ts +10 -7
- package/template-vanilla/src/experiences/engines/threes/MainThree.ts +8 -168
- package/template-vanilla/src/experiences/engines/threes/app/LoaderThreeApp.ts +39 -0
- package/template-vanilla/src/experiences/engines/threes/app/MainThreeApp.ts +96 -0
- package/template-vanilla/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +92 -0
- package/template-vanilla/src/experiences/managers/DebugManager.ts +31 -33
- package/template-vanilla/src/experiences/managers/LoaderManager.ts +53 -45
- package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +94 -109
- package/template-vanilla/src/experiences/managers/threes/ThreeCameraControllerManager.ts +22 -19
- package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +12 -14
- package/template-vanilla/src/experiences/materials/threes/loaders/LoaderMaterial.ts +0 -4
- package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +0 -4
- package/template-vanilla/src/experiences/renderers/threes/Renderer.ts +5 -9
- package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +3 -3
- package/template-vanilla/src/experiences/styles/commons/main.scss +6 -6
- package/template-vanilla/src/experiences/styles/style.scss +1 -1
- package/template-vanilla/src/experiences/styles/views/loader.scss +7 -6
- package/template-vanilla/src/experiences/types/cameraTypes.ts +37 -0
- package/template-vanilla/src/experiences/types/global.d.ts +2 -2
- package/template-vanilla/src/experiences/types/shaders.d.ts +4 -0
- package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +13 -33
- package/template-vanilla/src/experiences/views/htmls/loaders/LoaderHTMLView.ts +27 -18
- package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +26 -18
- package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +11 -15
- package/template-vanilla/src/experiences/views/threes/loaders/components/ThreeTemplateLoader.ts +15 -12
- package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +9 -17
- package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +14 -18
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +11 -9
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +11 -9
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +2 -6
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ActorBase.ts +13 -1
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/AnimatedModelBase.ts +5 -9
- package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ModelBase.ts +18 -4
- package/template-vanilla/src/main.ts +1 -1
- package/template-vanilla/tsconfig.json +17 -0
- package/template-vanilla/src/experiences/constants/experiences/CameraType.ts +0 -6
- package/template-vanilla/src/experiences/managers/KeyboardManager.ts +0 -65
- package/template-vanilla/src/experiences/managers/MouseManager.ts +0 -100
- package/template-vanilla/src/experiences/managers/ResizeManager.ts +0 -53
- package/template-vanilla/src/experiences/managers/TickerManager.ts +0 -86
- package/template-vanilla/src/experiences/proxies/ViewProxy.ts +0 -45
- package/template-vanilla/src/experiences/views/bases/ViewBase.ts +0 -36
- package/template-vanilla/src/experiences/views/htmls/loaders/components/HTMLTemplateLoader.ts +0 -57
- /package/template-vanilla/src/experiences/{constants/experiences/AssetType.ts → types/assetTypes.ts} +0 -0
|
@@ -1,53 +1,50 @@
|
|
|
1
|
-
import { AssetUtils } from '@benjos/cookware';
|
|
1
|
+
import { AssetUtils, DomKeyboardManager, DomPointerManager, DomResizeManager, TickerManager } from '@benjos/cookware';
|
|
2
2
|
import { AssetId } from '../constants/experiences/AssetId';
|
|
3
3
|
import DebugManager from '../managers/DebugManager';
|
|
4
|
-
import { KeyboardManager } from '../managers/KeyboardManager';
|
|
5
4
|
import LoaderManager from '../managers/LoaderManager';
|
|
6
|
-
import MouseManager from '../managers/MouseManager';
|
|
7
|
-
import { ResizeManager } from '../managers/ResizeManager';
|
|
8
5
|
import ThreeAssetsManager from '../managers/threes/ThreeAssetsManager';
|
|
9
6
|
import ThreeCameraControllerManager from '../managers/threes/ThreeCameraControllerManager';
|
|
10
7
|
import ThreeRaycasterManager from '../managers/threes/ThreeRaycasterManager';
|
|
11
|
-
import TickerManager from '../managers/TickerManager';
|
|
12
|
-
import ViewProxy from '../proxies/ViewProxy';
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
public
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
9
|
+
class InitCommand {
|
|
10
|
+
public init(): void {
|
|
11
|
+
this._initUtils();
|
|
12
|
+
this._initProxies();
|
|
13
|
+
this._initManagers();
|
|
14
|
+
this._initCommon();
|
|
15
|
+
this._initThree();
|
|
21
16
|
}
|
|
22
17
|
|
|
23
|
-
private
|
|
24
|
-
AssetUtils.
|
|
18
|
+
private _initUtils(): void {
|
|
19
|
+
AssetUtils.Init();
|
|
25
20
|
}
|
|
26
21
|
|
|
27
|
-
private
|
|
28
|
-
|
|
22
|
+
private _initProxies(): void {
|
|
23
|
+
//
|
|
29
24
|
}
|
|
30
25
|
|
|
31
|
-
private
|
|
32
|
-
TickerManager.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
ThreeAssetsManager.
|
|
36
|
-
ThreeCameraControllerManager.
|
|
37
|
-
|
|
38
|
-
DebugManager.
|
|
39
|
-
ThreeRaycasterManager.
|
|
40
|
-
LoaderManager.
|
|
26
|
+
private _initManagers(): void {
|
|
27
|
+
TickerManager.init();
|
|
28
|
+
DomKeyboardManager.init();
|
|
29
|
+
DomPointerManager.init();
|
|
30
|
+
ThreeAssetsManager.init();
|
|
31
|
+
ThreeCameraControllerManager.init();
|
|
32
|
+
DomResizeManager.init();
|
|
33
|
+
DebugManager.init();
|
|
34
|
+
ThreeRaycasterManager.init();
|
|
35
|
+
LoaderManager.init();
|
|
41
36
|
}
|
|
42
37
|
|
|
43
|
-
private
|
|
38
|
+
private _initCommon(): void {
|
|
44
39
|
//
|
|
45
40
|
}
|
|
46
41
|
|
|
47
|
-
private
|
|
48
|
-
ThreeAssetsManager.
|
|
49
|
-
ThreeAssetsManager.
|
|
50
|
-
ThreeAssetsManager.
|
|
51
|
-
ThreeAssetsManager.
|
|
42
|
+
private _initThree(): void {
|
|
43
|
+
ThreeAssetsManager.addHDR(AssetId.THREE_HDR_TEMPLATE, AssetUtils.GetPath('hdrs/template.hdr'));
|
|
44
|
+
ThreeAssetsManager.addModel(AssetId.THREE_GLTF_TEMPLATE, AssetUtils.GetPath('models/template.glb'));
|
|
45
|
+
ThreeAssetsManager.addTexture(AssetId.THREE_TEXTURE_TEMPLATE, AssetUtils.GetPath('textures/template.jpg'));
|
|
46
|
+
ThreeAssetsManager.addFont(AssetId.THREE_FONT_TEMPLATE, AssetUtils.GetPath('fonts/template.typeface.json'));
|
|
52
47
|
}
|
|
53
48
|
}
|
|
49
|
+
|
|
50
|
+
export default new InitCommand();
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import ViewProxy from '../../proxies/ViewProxy';
|
|
1
|
+
import HTMLViewBase from '../../views/htmls/bases/HTMLViewBase';
|
|
3
2
|
import LoaderHTMLView from '../../views/htmls/loaders/LoaderHTMLView';
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
class MainHTML {
|
|
5
|
+
private _views: HTMLViewBase[] = [];
|
|
6
|
+
|
|
7
|
+
public init(): void {
|
|
8
|
+
this._generateViews();
|
|
8
9
|
}
|
|
9
10
|
|
|
10
|
-
private
|
|
11
|
-
|
|
11
|
+
private _generateViews(): void {
|
|
12
|
+
this._views.push(new LoaderHTMLView());
|
|
12
13
|
}
|
|
13
14
|
}
|
|
15
|
+
|
|
16
|
+
export default new MainHTML();
|
|
@@ -1,171 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { MeshStandardMaterial, Scene } from 'three';
|
|
4
|
-
import type ThreeCameraControllerBase from '../../cameras/threes/bases/ThreeCameraControllerBase';
|
|
5
|
-
import DebugThreeCameraController from '../../cameras/threes/DebugThreeCameraController';
|
|
6
|
-
import LoaderThreeCameraController from '../../cameras/threes/LoaderThreeCameraController';
|
|
7
|
-
import MainThreeCameraController from '../../cameras/threes/MainThreeCameraController';
|
|
8
|
-
import { CameraId } from '../../constants/experiences/CameraId';
|
|
9
|
-
import { ViewId } from '../../constants/experiences/ViewId';
|
|
10
|
-
import DebugManager from '../../managers/DebugManager';
|
|
11
|
-
import { KeyboardManager } from '../../managers/KeyboardManager';
|
|
12
|
-
import { ResizeManager } from '../../managers/ResizeManager';
|
|
13
|
-
import ThreeCameraControllerManager from '../../managers/threes/ThreeCameraControllerManager';
|
|
14
|
-
import TickerManager from '../../managers/TickerManager';
|
|
15
|
-
import ViewProxy from '../../proxies/ViewProxy';
|
|
16
|
-
import WebGLRendererBase from '../../renderers/threes/bases/WebGLRendererBase';
|
|
17
|
-
import LoaderRenderer from '../../renderers/threes/LoaderRenderer';
|
|
18
|
-
import Renderer from '../../renderers/threes/Renderer';
|
|
19
|
-
import LoaderThreeView from '../../views/threes/loaders/LoaderThreeView';
|
|
20
|
-
import WorldThreeView from '../../views/threes/worlds/WorldThreeView';
|
|
1
|
+
import LoaderThreeApp from "./app/LoaderThreeApp";
|
|
2
|
+
import MainThreeApp from "./app/MainThreeApp";
|
|
21
3
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
private static _LoaderScene: Scene;
|
|
27
|
-
private static _CameraController: ThreeCameraControllerBase;
|
|
28
|
-
private static _Renderer: Renderer;
|
|
29
|
-
private static _LoaderRenderer: WebGLRendererBase;
|
|
30
|
-
private static _DebugWireframeMaterial: MeshStandardMaterial;
|
|
31
|
-
|
|
32
|
-
//#region Constants
|
|
33
|
-
//
|
|
34
|
-
private static readonly _DEBUG_WIREFRAME_MATERIAL_COLOR: number = 0x3f79f3;
|
|
35
|
-
private static readonly _TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS: string[] = [
|
|
36
|
-
KeyboardConstant.CODES.SHIFT_LEFT,
|
|
37
|
-
KeyboardConstant.CODES.KEY_C,
|
|
38
|
-
];
|
|
39
|
-
private static readonly _TOGGLE_WIREFRAME_KEYS: string[] = [
|
|
40
|
-
KeyboardConstant.CODES.SHIFT_LEFT,
|
|
41
|
-
KeyboardConstant.CODES.KEY_W,
|
|
42
|
-
];
|
|
43
|
-
//
|
|
44
|
-
//#endregion
|
|
45
|
-
|
|
46
|
-
public static Init(): void {
|
|
47
|
-
TickerManager.Add(MainThree.Update);
|
|
48
|
-
|
|
49
|
-
MainThree._DomElementContainer = DomUtils.getApp();
|
|
50
|
-
MainThree._LoaderDomElementContainer = DomUtils.getLoader();
|
|
51
|
-
|
|
52
|
-
MainThree._GenerateScenes();
|
|
53
|
-
MainThree._GenerateCameras();
|
|
54
|
-
MainThree._GenerateRenderers();
|
|
55
|
-
|
|
56
|
-
MainThree._OnResize();
|
|
57
|
-
ResizeManager.OnResize.add(MainThree._OnResize);
|
|
58
|
-
|
|
59
|
-
MainThree._GenerateViews();
|
|
60
|
-
|
|
61
|
-
if (DebugManager.IsActive) {
|
|
62
|
-
window.experience = MainThree;
|
|
63
|
-
KeyboardManager.OnKeyUp.add(MainThree._OnKeyUp);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private static _GenerateScenes(): void {
|
|
68
|
-
MainThree._Scene = new Scene();
|
|
69
|
-
MainThree._LoaderScene = new Scene();
|
|
70
|
-
|
|
71
|
-
if (DebugManager.IsActive) {
|
|
72
|
-
MainThree._DebugWireframeMaterial = new MeshStandardMaterial({
|
|
73
|
-
wireframe: true,
|
|
74
|
-
color: MainThree._DEBUG_WIREFRAME_MATERIAL_COLOR,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
private static _GenerateViews(): void {
|
|
80
|
-
ViewProxy.Add(ViewId.THREE_LOADER, LoaderThreeView);
|
|
81
|
-
ViewProxy.Add(ViewId.THREE_WORLD, WorldThreeView);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
private static _GenerateCameras(): void {
|
|
85
|
-
ThreeCameraControllerManager.Add(new MainThreeCameraController(), true);
|
|
86
|
-
ThreeCameraControllerManager.Add(new LoaderThreeCameraController());
|
|
87
|
-
MainThree._CameraController = ThreeCameraControllerManager.Get(CameraId.THREE_MAIN);
|
|
88
|
-
|
|
89
|
-
if (DebugManager.IsActive) {
|
|
90
|
-
ThreeCameraControllerManager.Add(new DebugThreeCameraController());
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
ThreeCameraControllerManager.OnActiveThreeCameraControllerChange.add(MainThree._OnActiveCameraControllerChange);
|
|
4
|
+
class MainThree {
|
|
5
|
+
public init(): void {
|
|
6
|
+
LoaderThreeApp.init();
|
|
7
|
+
MainThreeApp.init();
|
|
94
8
|
}
|
|
95
|
-
|
|
96
|
-
private static _GenerateRenderers(): void {
|
|
97
|
-
MainThree._Renderer = new Renderer(MainThree.Scene, MainThree._CameraController.camera, { antialias: true });
|
|
98
|
-
MainThree._DomElementContainer.appendChild(MainThree._Renderer.domElement);
|
|
99
|
-
|
|
100
|
-
MainThree._LoaderRenderer = new LoaderRenderer(
|
|
101
|
-
MainThree.LoaderScene,
|
|
102
|
-
ThreeCameraControllerManager.Get(CameraId.THREE_LOADER).camera
|
|
103
|
-
);
|
|
104
|
-
MainThree._LoaderDomElementContainer.appendChild(MainThree._LoaderRenderer.domElement);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
private static _OnActiveCameraControllerChange = (): void => {
|
|
108
|
-
MainThree._CameraController = ThreeCameraControllerManager.ActiveThreeCameraController;
|
|
109
|
-
MainThree._Renderer.setCamera(MainThree._CameraController.camera);
|
|
110
|
-
MainThree._OnResize();
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
private static readonly _OnKeyUp = (_e: KeyboardEvent): void => {
|
|
114
|
-
if (DebugManager.IsActive) {
|
|
115
|
-
if (KeyboardManager.AreAllKeysDown(MainThree._TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS)) {
|
|
116
|
-
ThreeCameraControllerManager.SetActiveCamera(
|
|
117
|
-
MainThree._CameraController.cameraId === CameraId.THREE_MAIN
|
|
118
|
-
? CameraId.THREE_DEBUG
|
|
119
|
-
: CameraId.THREE_MAIN
|
|
120
|
-
);
|
|
121
|
-
} else if (KeyboardManager.AreAllKeysDown(MainThree._TOGGLE_WIREFRAME_KEYS)) {
|
|
122
|
-
if (MainThree._Scene.overrideMaterial === null) {
|
|
123
|
-
MainThree._Scene.overrideMaterial = MainThree._DebugWireframeMaterial;
|
|
124
|
-
MainThree._LoaderScene.overrideMaterial = MainThree._DebugWireframeMaterial;
|
|
125
|
-
} else {
|
|
126
|
-
MainThree._Scene.overrideMaterial = null;
|
|
127
|
-
MainThree._LoaderScene.overrideMaterial = null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
private static _OnResize = (): void => {
|
|
134
|
-
MainThree._Renderer.domElement.width = window.innerWidth;
|
|
135
|
-
MainThree._Renderer.domElement.height = window.innerHeight;
|
|
136
|
-
|
|
137
|
-
MainThree._LoaderRenderer.domElement.width = window.innerWidth;
|
|
138
|
-
MainThree._LoaderRenderer.domElement.height = window.innerHeight;
|
|
139
|
-
|
|
140
|
-
MainThree._CameraController.resize();
|
|
141
|
-
MainThree._Renderer.resize();
|
|
142
|
-
MainThree._LoaderRenderer.resize();
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
public static Update = (dt: number): void => {
|
|
146
|
-
MainThree._CameraController.update(dt);
|
|
147
|
-
if (ViewProxy.Has(ViewId.THREE_WORLD)) ViewProxy.GetById<WorldThreeView>(ViewId.THREE_WORLD).update(dt);
|
|
148
|
-
MainThree._Renderer.update(dt);
|
|
149
|
-
MainThree._LoaderRenderer.update(dt);
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
//#region Getters
|
|
153
|
-
//
|
|
154
|
-
public static get DomElementContainer(): HTMLElement {
|
|
155
|
-
return this._DomElementContainer;
|
|
156
|
-
}
|
|
157
|
-
public static get Scene(): Scene {
|
|
158
|
-
return this._Scene;
|
|
159
|
-
}
|
|
160
|
-
public static get LoaderScene(): Scene {
|
|
161
|
-
return this._LoaderScene;
|
|
162
|
-
}
|
|
163
|
-
public static get Renderer(): WebGLRendererBase {
|
|
164
|
-
return this._Renderer;
|
|
165
|
-
}
|
|
166
|
-
public static get CameraController(): ThreeCameraControllerBase {
|
|
167
|
-
return this._CameraController;
|
|
168
|
-
}
|
|
169
|
-
//
|
|
170
|
-
//#endregion
|
|
171
9
|
}
|
|
10
|
+
|
|
11
|
+
export default new MainThree();
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { DomUtils } from '@benjos/cookware';
|
|
2
|
+
import { Scene } from 'three';
|
|
3
|
+
import LoaderThreeCameraController from '../../../cameras/threes/LoaderThreeCameraController';
|
|
4
|
+
import { CameraId } from '../../../constants/experiences/CameraId';
|
|
5
|
+
import ThreeCameraControllerManager from '../../../managers/threes/ThreeCameraControllerManager';
|
|
6
|
+
import LoaderRenderer from '../../../renderers/threes/LoaderRenderer';
|
|
7
|
+
import LoaderThreeView from '../../../views/threes/loaders/LoaderThreeView';
|
|
8
|
+
import ThreeAppBase from './bases/ThreeAppBase';
|
|
9
|
+
|
|
10
|
+
class LoaderThreeApp extends ThreeAppBase {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(DomUtils.GetLoader());
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
protected override _generateScenes(): void {
|
|
16
|
+
this._scene = new Scene();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
protected override _generateCameras(): void {
|
|
20
|
+
ThreeCameraControllerManager.add(new LoaderThreeCameraController());
|
|
21
|
+
this._cameraController = ThreeCameraControllerManager.get(CameraId.THREE_LOADER);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
protected override _generateRenderers(): void {
|
|
25
|
+
this._renderer = new LoaderRenderer(
|
|
26
|
+
this._scene,
|
|
27
|
+
ThreeCameraControllerManager.get(CameraId.THREE_LOADER).camera
|
|
28
|
+
);
|
|
29
|
+
this._domElementContainer.appendChild(this._renderer.domElement);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
protected override _generateViews(): void {
|
|
33
|
+
const loaderThreeView = new LoaderThreeView();
|
|
34
|
+
this._views.push(loaderThreeView);
|
|
35
|
+
this._setCurrentView(loaderThreeView);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default new LoaderThreeApp();
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { DomKeyboardManager, DomUtils } from '@benjos/cookware';
|
|
2
|
+
import { KeyboardConstant } from '@benjos/spices';
|
|
3
|
+
import { MeshStandardMaterial, Scene } from 'three';
|
|
4
|
+
import DebugThreeCameraController from '../../../cameras/threes/DebugThreeCameraController';
|
|
5
|
+
import MainThreeCameraController from '../../../cameras/threes/MainThreeCameraController';
|
|
6
|
+
import { CameraId } from '../../../constants/experiences/CameraId';
|
|
7
|
+
import DebugManager from '../../../managers/DebugManager';
|
|
8
|
+
import ThreeCameraControllerManager from '../../../managers/threes/ThreeCameraControllerManager';
|
|
9
|
+
import Renderer from '../../../renderers/threes/Renderer';
|
|
10
|
+
import WorldThreeView from '../../../views/threes/worlds/WorldThreeView';
|
|
11
|
+
import ThreeAppBase from './bases/ThreeAppBase';
|
|
12
|
+
|
|
13
|
+
class MainThreeApp extends ThreeAppBase {
|
|
14
|
+
private static readonly _DEBUG_WIREFRAME_MATERIAL_COLOR: number = 0x3f79f3;
|
|
15
|
+
private static readonly _TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS: string[] = [
|
|
16
|
+
KeyboardConstant.CODES.SHIFT_LEFT,
|
|
17
|
+
KeyboardConstant.CODES.KEY_C,
|
|
18
|
+
];
|
|
19
|
+
private static readonly _TOGGLE_WIREFRAME_KEYS: string[] = [
|
|
20
|
+
KeyboardConstant.CODES.SHIFT_LEFT,
|
|
21
|
+
KeyboardConstant.CODES.KEY_W,
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
declare private _debugWireframeMaterial: MeshStandardMaterial;
|
|
25
|
+
|
|
26
|
+
constructor() {
|
|
27
|
+
super(DomUtils.GetApp());
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
public override init(): void {
|
|
31
|
+
super.init();
|
|
32
|
+
|
|
33
|
+
if (DebugManager.isActive) {
|
|
34
|
+
window.mainThreeApp = this;
|
|
35
|
+
DomKeyboardManager.onKeyDown.add(this._onKeyDown);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
protected override _generateScenes(): void {
|
|
40
|
+
this._scene = new Scene();
|
|
41
|
+
|
|
42
|
+
if (DebugManager.isActive) {
|
|
43
|
+
this._debugWireframeMaterial = new MeshStandardMaterial({
|
|
44
|
+
wireframe: true,
|
|
45
|
+
color: MainThreeApp._DEBUG_WIREFRAME_MATERIAL_COLOR,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
protected override _generateCameras(): void {
|
|
51
|
+
ThreeCameraControllerManager.add(new MainThreeCameraController(), true);
|
|
52
|
+
this._cameraController = ThreeCameraControllerManager.get(CameraId.THREE_MAIN);
|
|
53
|
+
|
|
54
|
+
if (DebugManager.isActive) {
|
|
55
|
+
ThreeCameraControllerManager.add(new DebugThreeCameraController());
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
ThreeCameraControllerManager.onActiveThreeCameraControllerChange.add(this._onActiveCameraControllerChange);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
protected override _generateRenderers(): void {
|
|
62
|
+
this._renderer = new Renderer(this._scene, this._cameraController.camera, { antialias: true });
|
|
63
|
+
this._domElementContainer.appendChild(this._renderer.domElement);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
protected override _generateViews(): void {
|
|
67
|
+
const worldThreeView = new WorldThreeView();
|
|
68
|
+
this._views.push(worldThreeView);
|
|
69
|
+
this._setCurrentView(worldThreeView);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private _onActiveCameraControllerChange = (): void => {
|
|
73
|
+
this._cameraController = ThreeCameraControllerManager.activeThreeCameraController;
|
|
74
|
+
this._renderer.setCamera(this._cameraController.camera);
|
|
75
|
+
this._onResize();
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
private readonly _onKeyDown = (_e: KeyboardEvent): void => {
|
|
79
|
+
if (DebugManager.isActive) {
|
|
80
|
+
if (DomKeyboardManager.areAllKeysDown(MainThreeApp._TOGGLE_SWITCH_TO_DEBUG_CAMERA_KEYS)) {
|
|
81
|
+
ThreeCameraControllerManager.setActiveCamera(
|
|
82
|
+
this._cameraController.cameraId === CameraId.THREE_MAIN ? CameraId.THREE_DEBUG : CameraId.THREE_MAIN
|
|
83
|
+
);
|
|
84
|
+
} else if (DomKeyboardManager.areAllKeysDown(MainThreeApp._TOGGLE_WIREFRAME_KEYS)) {
|
|
85
|
+
if (this._scene.overrideMaterial === null) {
|
|
86
|
+
this._scene.overrideMaterial = this._debugWireframeMaterial;
|
|
87
|
+
} else {
|
|
88
|
+
this._scene.overrideMaterial = null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export type { MainThreeApp };
|
|
96
|
+
export default new MainThreeApp();
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { DomResizeManager, TickerManager } from '@benjos/cookware';
|
|
2
|
+
import { Scene } from 'three';
|
|
3
|
+
import ThreeCameraControllerBase from '../../../../cameras/threes/bases/ThreeCameraControllerBase';
|
|
4
|
+
import WebGLRendererBase from '../../../../renderers/threes/bases/WebGLRendererBase';
|
|
5
|
+
import ThreeViewBase from '../../../../views/threes/bases/ThreeViewBase';
|
|
6
|
+
|
|
7
|
+
export default abstract class ThreeAppBase {
|
|
8
|
+
declare protected _domElementContainer: HTMLElement;
|
|
9
|
+
declare protected _scene: Scene;
|
|
10
|
+
declare protected _cameraController: ThreeCameraControllerBase;
|
|
11
|
+
declare protected _renderer: WebGLRendererBase;
|
|
12
|
+
protected readonly _views: ThreeViewBase[];
|
|
13
|
+
declare protected _currentView: ThreeViewBase;
|
|
14
|
+
|
|
15
|
+
constructor(domElementContainer: HTMLElement) {
|
|
16
|
+
this._domElementContainer = domElementContainer;
|
|
17
|
+
this._views = [];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public init(): void {
|
|
21
|
+
TickerManager.add(this._update);
|
|
22
|
+
|
|
23
|
+
this._generateScenes();
|
|
24
|
+
this._generateCameras();
|
|
25
|
+
this._generateRenderers();
|
|
26
|
+
this._generateViews();
|
|
27
|
+
|
|
28
|
+
this._onResize();
|
|
29
|
+
DomResizeManager.onResize.add(this._onResize);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
protected _generateScenes(): void {
|
|
33
|
+
//
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
protected _generateCameras(): void {
|
|
37
|
+
//
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
protected _generateRenderers(): void {
|
|
41
|
+
//
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
protected _generateViews(): void {
|
|
45
|
+
//
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
protected _setCurrentView(view: ThreeViewBase): void {
|
|
49
|
+
if (this._currentView === view) return;
|
|
50
|
+
if (this._currentView) this._removeOldView(this._currentView);
|
|
51
|
+
this._currentView = view;
|
|
52
|
+
view.init();
|
|
53
|
+
this.scene.add(this._currentView);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private _removeOldView(view: ThreeViewBase): void {
|
|
57
|
+
this.scene.remove(view);
|
|
58
|
+
view.dispose();
|
|
59
|
+
view.reset();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
protected _onResize = (): void => {
|
|
63
|
+
this._renderer.domElement.width = window.innerWidth;
|
|
64
|
+
this._renderer.domElement.height = window.innerHeight;
|
|
65
|
+
|
|
66
|
+
this._cameraController.resize();
|
|
67
|
+
this._renderer.resize();
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
private _update = (dt: number): void => {
|
|
71
|
+
this._cameraController.update(dt);
|
|
72
|
+
this._currentView.update(dt);
|
|
73
|
+
this._renderer.update(dt);
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
//#region Getters
|
|
77
|
+
//
|
|
78
|
+
public get domElementContainer(): HTMLElement {
|
|
79
|
+
return this._domElementContainer;
|
|
80
|
+
}
|
|
81
|
+
public get scene(): Scene {
|
|
82
|
+
return this._scene;
|
|
83
|
+
}
|
|
84
|
+
public get renderer(): WebGLRendererBase {
|
|
85
|
+
return this._renderer;
|
|
86
|
+
}
|
|
87
|
+
public get cameraController(): ThreeCameraControllerBase {
|
|
88
|
+
return this._cameraController;
|
|
89
|
+
}
|
|
90
|
+
//
|
|
91
|
+
//#endregion
|
|
92
|
+
}
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
+
import { DomKeyboardManager } from '@benjos/cookware';
|
|
1
2
|
import { KeyboardConstant } from '@benjos/spices';
|
|
2
3
|
import GUI from 'lil-gui';
|
|
3
4
|
import { ThreePerf } from 'three-perf';
|
|
4
|
-
import
|
|
5
|
-
import { KeyboardManager } from './KeyboardManager';
|
|
5
|
+
import MainThreeApp from '../engines/threes/app/MainThreeApp';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
private static _Gui: GUI;
|
|
9
|
-
private static _ThreePerf: ThreePerf;
|
|
10
|
-
|
|
11
|
-
//#region Constants
|
|
12
|
-
//
|
|
7
|
+
class DebugManager {
|
|
13
8
|
private static readonly _IS_ACTIVE_STRING: string = '#debug';
|
|
14
9
|
private static readonly _GUI_WIDTH: number = 300;
|
|
15
10
|
private static readonly _GUI_TITLE: string = 'Debug Panel';
|
|
@@ -19,60 +14,63 @@ export default class DebugManager {
|
|
|
19
14
|
KeyboardConstant.CODES.SHIFT_LEFT,
|
|
20
15
|
KeyboardConstant.CODES.KEY_H,
|
|
21
16
|
];
|
|
22
|
-
//
|
|
23
|
-
//#endregion
|
|
24
17
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
declare private _gui: GUI;
|
|
19
|
+
declare private _threePerf: ThreePerf;
|
|
20
|
+
|
|
21
|
+
public init(): void {
|
|
22
|
+
if (this.isActive) {
|
|
23
|
+
this._initGui();
|
|
28
24
|
}
|
|
29
25
|
}
|
|
30
26
|
|
|
31
|
-
private
|
|
32
|
-
|
|
27
|
+
private _initGui(): void {
|
|
28
|
+
this._gui = new GUI({
|
|
33
29
|
width: DebugManager._GUI_WIDTH,
|
|
34
30
|
title: DebugManager._GUI_TITLE,
|
|
35
31
|
closeFolders: true,
|
|
36
32
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
this._gui.close();
|
|
34
|
+
DomKeyboardManager.onKeyDown.remove(this._onKeyDown);
|
|
35
|
+
DomKeyboardManager.onKeyDown.add(this._onKeyDown);
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
private
|
|
43
|
-
|
|
38
|
+
private _initThreePerf = (): void => {
|
|
39
|
+
this._threePerf = new ThreePerf({
|
|
44
40
|
anchorX: DebugManager._THREE_PERF_ANCHOR_X,
|
|
45
41
|
anchorY: DebugManager._THREE_PERF_ANCHOR_Y,
|
|
46
42
|
domElement: document.body,
|
|
47
|
-
renderer:
|
|
43
|
+
renderer: MainThreeApp.renderer,
|
|
48
44
|
showGraph: false,
|
|
49
45
|
});
|
|
50
46
|
};
|
|
51
47
|
|
|
52
|
-
public
|
|
53
|
-
if (!
|
|
54
|
-
|
|
48
|
+
public beginThreePerf(): void {
|
|
49
|
+
if (!this._threePerf) this._initThreePerf();
|
|
50
|
+
this._threePerf.begin();
|
|
55
51
|
}
|
|
56
52
|
|
|
57
|
-
public
|
|
58
|
-
|
|
53
|
+
public endThreePerf(): void {
|
|
54
|
+
this._threePerf.end();
|
|
59
55
|
}
|
|
60
56
|
|
|
61
|
-
private
|
|
62
|
-
if (
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
private readonly _onKeyDown = (_e: KeyboardEvent): void => {
|
|
58
|
+
if (DomKeyboardManager.areAllKeysDown(DebugManager._TOGGLE_HIDDEN_KEYS)) {
|
|
59
|
+
this._gui.show(this._gui._hidden);
|
|
60
|
+
this._threePerf.visible = !this._threePerf.visible;
|
|
65
61
|
}
|
|
66
62
|
};
|
|
67
63
|
|
|
68
64
|
//#region Getters
|
|
69
65
|
//
|
|
70
|
-
public
|
|
66
|
+
public get isActive(): boolean {
|
|
71
67
|
return window.location.hash === DebugManager._IS_ACTIVE_STRING;
|
|
72
68
|
}
|
|
73
|
-
public
|
|
74
|
-
return
|
|
69
|
+
public get gui(): GUI {
|
|
70
|
+
return this._gui;
|
|
75
71
|
}
|
|
76
72
|
//
|
|
77
73
|
//#endregion
|
|
78
74
|
}
|
|
75
|
+
|
|
76
|
+
export default new DebugManager();
|