@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.
Files changed (60) hide show
  1. package/package.json +1 -1
  2. package/template-react/package-lock.json +2 -2
  3. package/template-react/package.json +1 -1
  4. package/template-react/src/App.css +21 -21
  5. package/template-react/src/App.tsx +5 -9
  6. package/template-react/src/index.css +42 -42
  7. package/template-react/src/main.tsx +8 -8
  8. package/template-vanilla/index.html +23 -14
  9. package/template-vanilla/package-lock.json +8 -6
  10. package/template-vanilla/package.json +2 -2
  11. package/template-vanilla/src/experiences/Experience.ts +11 -11
  12. package/template-vanilla/src/experiences/cameras/threes/DebugThreeCameraController.ts +13 -18
  13. package/template-vanilla/src/experiences/cameras/threes/LoaderThreeCameraController.ts +7 -10
  14. package/template-vanilla/src/experiences/cameras/threes/MainThreeCameraController.ts +6 -10
  15. package/template-vanilla/src/experiences/cameras/threes/bases/ThreeCameraControllerBase.ts +20 -39
  16. package/template-vanilla/src/experiences/commands/InitCommand.ts +30 -33
  17. package/template-vanilla/src/experiences/engines/htmls/MainHTML.ts +10 -7
  18. package/template-vanilla/src/experiences/engines/threes/MainThree.ts +8 -168
  19. package/template-vanilla/src/experiences/engines/threes/app/LoaderThreeApp.ts +39 -0
  20. package/template-vanilla/src/experiences/engines/threes/app/MainThreeApp.ts +96 -0
  21. package/template-vanilla/src/experiences/engines/threes/app/bases/ThreeAppBase.ts +92 -0
  22. package/template-vanilla/src/experiences/managers/DebugManager.ts +31 -33
  23. package/template-vanilla/src/experiences/managers/LoaderManager.ts +53 -45
  24. package/template-vanilla/src/experiences/managers/threes/ThreeAssetsManager.ts +94 -109
  25. package/template-vanilla/src/experiences/managers/threes/ThreeCameraControllerManager.ts +22 -19
  26. package/template-vanilla/src/experiences/managers/threes/ThreeRaycasterManager.ts +12 -14
  27. package/template-vanilla/src/experiences/materials/threes/loaders/LoaderMaterial.ts +0 -4
  28. package/template-vanilla/src/experiences/renderers/threes/LoaderRenderer.ts +0 -4
  29. package/template-vanilla/src/experiences/renderers/threes/Renderer.ts +5 -9
  30. package/template-vanilla/src/experiences/renderers/threes/bases/WebGLRendererBase.ts +3 -3
  31. package/template-vanilla/src/experiences/styles/commons/main.scss +6 -6
  32. package/template-vanilla/src/experiences/styles/style.scss +1 -1
  33. package/template-vanilla/src/experiences/styles/views/loader.scss +7 -6
  34. package/template-vanilla/src/experiences/types/cameraTypes.ts +37 -0
  35. package/template-vanilla/src/experiences/types/global.d.ts +2 -2
  36. package/template-vanilla/src/experiences/types/shaders.d.ts +4 -0
  37. package/template-vanilla/src/experiences/views/htmls/bases/HTMLViewBase.ts +13 -33
  38. package/template-vanilla/src/experiences/views/htmls/loaders/LoaderHTMLView.ts +27 -18
  39. package/template-vanilla/src/experiences/views/threes/bases/ThreeViewBase.ts +26 -18
  40. package/template-vanilla/src/experiences/views/threes/loaders/LoaderThreeView.ts +11 -15
  41. package/template-vanilla/src/experiences/views/threes/loaders/components/ThreeTemplateLoader.ts +15 -12
  42. package/template-vanilla/src/experiences/views/threes/worlds/WorldThreeView.ts +9 -17
  43. package/template-vanilla/src/experiences/views/threes/worlds/components/Environment.ts +14 -18
  44. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateFont.ts +11 -9
  45. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateMesh.ts +11 -9
  46. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/TemplateModel.ts +2 -6
  47. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ActorBase.ts +13 -1
  48. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/AnimatedModelBase.ts +5 -9
  49. package/template-vanilla/src/experiences/views/threes/worlds/components/actors/bases/ModelBase.ts +18 -4
  50. package/template-vanilla/src/main.ts +1 -1
  51. package/template-vanilla/tsconfig.json +17 -0
  52. package/template-vanilla/src/experiences/constants/experiences/CameraType.ts +0 -6
  53. package/template-vanilla/src/experiences/managers/KeyboardManager.ts +0 -65
  54. package/template-vanilla/src/experiences/managers/MouseManager.ts +0 -100
  55. package/template-vanilla/src/experiences/managers/ResizeManager.ts +0 -53
  56. package/template-vanilla/src/experiences/managers/TickerManager.ts +0 -86
  57. package/template-vanilla/src/experiences/proxies/ViewProxy.ts +0 -45
  58. package/template-vanilla/src/experiences/views/bases/ViewBase.ts +0 -36
  59. package/template-vanilla/src/experiences/views/htmls/loaders/components/HTMLTemplateLoader.ts +0 -57
  60. /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
- export default class InitCommand {
15
- public static Init(): void {
16
- InitCommand._InitUtils();
17
- InitCommand._InitProxies();
18
- InitCommand._InitManagers();
19
- InitCommand._InitCommon();
20
- InitCommand._InitThree();
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 static _InitUtils(): void {
24
- AssetUtils.init();
18
+ private _initUtils(): void {
19
+ AssetUtils.Init();
25
20
  }
26
21
 
27
- private static _InitProxies(): void {
28
- ViewProxy.Init();
22
+ private _initProxies(): void {
23
+ //
29
24
  }
30
25
 
31
- private static _InitManagers(): void {
32
- TickerManager.Init();
33
- KeyboardManager.Init();
34
- MouseManager.Init();
35
- ThreeAssetsManager.Init();
36
- ThreeCameraControllerManager.Init();
37
- ResizeManager.Init();
38
- DebugManager.Init();
39
- ThreeRaycasterManager.Init();
40
- LoaderManager.Init();
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 static _InitCommon(): void {
38
+ private _initCommon(): void {
44
39
  //
45
40
  }
46
41
 
47
- private static _InitThree(): void {
48
- ThreeAssetsManager.AddHDR(AssetId.THREE_HDR_TEMPLATE, AssetUtils.getPath('hdrs/template.hdr'));
49
- ThreeAssetsManager.AddModel(AssetId.THREE_GLTF_TEMPLATE, AssetUtils.getPath('models/template.glb'));
50
- ThreeAssetsManager.AddTexture(AssetId.THREE_TEXTURE_TEMPLATE, AssetUtils.getPath('textures/template.jpg'));
51
- ThreeAssetsManager.AddFont(AssetId.THREE_FONT_TEMPLATE, AssetUtils.getPath('fonts/template.typeface.json'));
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 { ViewId } from '../../constants/experiences/ViewId';
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
- export default class MainHTML {
6
- public static Init(): void {
7
- MainHTML._GenerateViews();
4
+ class MainHTML {
5
+ private _views: HTMLViewBase[] = [];
6
+
7
+ public init(): void {
8
+ this._generateViews();
8
9
  }
9
10
 
10
- private static _GenerateViews(): void {
11
- ViewProxy.Add(ViewId.HTML_LOADER, LoaderHTMLView);
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 { DomUtils } from '@benjos/cookware';
2
- import { KeyboardConstant } from '@benjos/spices';
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
- export default class MainThree {
23
- private static _DomElementContainer: HTMLElement;
24
- private static _LoaderDomElementContainer: HTMLElement;
25
- private static _Scene: Scene;
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 MainThree from '../engines/threes/MainThree';
5
- import { KeyboardManager } from './KeyboardManager';
5
+ import MainThreeApp from '../engines/threes/app/MainThreeApp';
6
6
 
7
- export default class DebugManager {
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
- public static Init(): void {
26
- if (DebugManager.IsActive) {
27
- DebugManager._InitGui();
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 static _InitGui(): void {
32
- DebugManager._Gui = new GUI({
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
- DebugManager._Gui.close();
38
- KeyboardManager.OnKeyUp.remove(DebugManager._OnKeyUp);
39
- KeyboardManager.OnKeyUp.add(DebugManager._OnKeyUp);
33
+ this._gui.close();
34
+ DomKeyboardManager.onKeyDown.remove(this._onKeyDown);
35
+ DomKeyboardManager.onKeyDown.add(this._onKeyDown);
40
36
  }
41
37
 
42
- private static _InitThreePerf = (): void => {
43
- DebugManager._ThreePerf = new ThreePerf({
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: MainThree.Renderer,
43
+ renderer: MainThreeApp.renderer,
48
44
  showGraph: false,
49
45
  });
50
46
  };
51
47
 
52
- public static BeginThreePerf(): void {
53
- if (!DebugManager._ThreePerf) DebugManager._InitThreePerf();
54
- DebugManager._ThreePerf.begin();
48
+ public beginThreePerf(): void {
49
+ if (!this._threePerf) this._initThreePerf();
50
+ this._threePerf.begin();
55
51
  }
56
52
 
57
- public static EndThreePerf(): void {
58
- DebugManager._ThreePerf.end();
53
+ public endThreePerf(): void {
54
+ this._threePerf.end();
59
55
  }
60
56
 
61
- private static readonly _OnKeyUp = (_e: KeyboardEvent): void => {
62
- if (KeyboardManager.AreAllKeysDown(DebugManager._TOGGLE_HIDDEN_KEYS)) {
63
- DebugManager._Gui.show(DebugManager._Gui._hidden);
64
- DebugManager._ThreePerf.visible = !DebugManager._ThreePerf.visible;
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 static get IsActive(): boolean {
66
+ public get isActive(): boolean {
71
67
  return window.location.hash === DebugManager._IS_ACTIVE_STRING;
72
68
  }
73
- public static get Gui(): GUI {
74
- return DebugManager._Gui;
69
+ public get gui(): GUI {
70
+ return this._gui;
75
71
  }
76
72
  //
77
73
  //#endregion
78
74
  }
75
+
76
+ export default new DebugManager();