@p100-web/core-three 100.1.1 → 100.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/dist/App.d.ts +41 -0
  2. package/dist/App.d.ts.map +1 -0
  3. package/dist/App.js +171 -0
  4. package/dist/App.js.map +1 -0
  5. package/dist/ComponentFactory.d.ts +5 -0
  6. package/dist/ComponentFactory.d.ts.map +1 -0
  7. package/dist/ComponentFactory.js +13 -0
  8. package/dist/ComponentFactory.js.map +1 -0
  9. package/dist/ThreeCanvas.d.ts +56 -0
  10. package/dist/ThreeCanvas.d.ts.map +1 -0
  11. package/dist/ThreeCanvas.js +418 -0
  12. package/dist/ThreeCanvas.js.map +1 -0
  13. package/dist/ThreeEngine.d.ts +24 -0
  14. package/dist/ThreeEngine.d.ts.map +1 -0
  15. package/dist/ThreeEngine.js +102 -0
  16. package/dist/ThreeEngine.js.map +1 -0
  17. package/dist/ThreeNodeRenderer.d.ts +42 -0
  18. package/dist/ThreeNodeRenderer.d.ts.map +1 -0
  19. package/dist/ThreeNodeRenderer.js +119 -0
  20. package/dist/ThreeNodeRenderer.js.map +1 -0
  21. package/dist/animations/ModelAnimation.d.ts +21 -0
  22. package/dist/animations/ModelAnimation.d.ts.map +1 -0
  23. package/dist/animations/ModelAnimation.js +45 -0
  24. package/dist/animations/ModelAnimation.js.map +1 -0
  25. package/dist/assets/ThreeAssetLoader.d.ts +98 -0
  26. package/dist/assets/ThreeAssetLoader.d.ts.map +1 -0
  27. package/dist/assets/ThreeAssetLoader.js +495 -0
  28. package/dist/assets/ThreeAssetLoader.js.map +1 -0
  29. package/dist/index.d.ts +7 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +8 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/pcomponents/PAnimator.d.ts +24 -0
  34. package/dist/pcomponents/PAnimator.d.ts.map +1 -0
  35. package/dist/pcomponents/PAnimator.js +133 -0
  36. package/dist/pcomponents/PAnimator.js.map +1 -0
  37. package/dist/pcomponents/PBackground.d.ts +15 -0
  38. package/dist/pcomponents/PBackground.d.ts.map +1 -0
  39. package/dist/pcomponents/PBackground.js +104 -0
  40. package/dist/pcomponents/PBackground.js.map +1 -0
  41. package/dist/pcomponents/PBasicMaterial.d.ts +20 -0
  42. package/dist/pcomponents/PBasicMaterial.d.ts.map +1 -0
  43. package/dist/pcomponents/PBasicMaterial.js +161 -0
  44. package/dist/pcomponents/PBasicMaterial.js.map +1 -0
  45. package/dist/pcomponents/PCollider.d.ts +18 -0
  46. package/dist/pcomponents/PCollider.d.ts.map +1 -0
  47. package/dist/pcomponents/PCollider.js +59 -0
  48. package/dist/pcomponents/PCollider.js.map +1 -0
  49. package/dist/pcomponents/PCubeGeometry.d.ts +8 -0
  50. package/dist/pcomponents/PCubeGeometry.d.ts.map +1 -0
  51. package/dist/pcomponents/PCubeGeometry.js +23 -0
  52. package/dist/pcomponents/PCubeGeometry.js.map +1 -0
  53. package/dist/pcomponents/PEnvironment.d.ts +12 -0
  54. package/dist/pcomponents/PEnvironment.d.ts.map +1 -0
  55. package/dist/pcomponents/PEnvironment.js +39 -0
  56. package/dist/pcomponents/PEnvironment.js.map +1 -0
  57. package/dist/pcomponents/PImageCache.d.ts +11 -0
  58. package/dist/pcomponents/PImageCache.d.ts.map +1 -0
  59. package/dist/pcomponents/PImageCache.js +35 -0
  60. package/dist/pcomponents/PImageCache.js.map +1 -0
  61. package/dist/pcomponents/PLight.d.ts +8 -0
  62. package/dist/pcomponents/PLight.d.ts.map +1 -0
  63. package/dist/pcomponents/PLight.js +45 -0
  64. package/dist/pcomponents/PLight.js.map +1 -0
  65. package/dist/pcomponents/PLightDirectional.d.ts +8 -0
  66. package/dist/pcomponents/PLightDirectional.d.ts.map +1 -0
  67. package/dist/pcomponents/PLightDirectional.js +36 -0
  68. package/dist/pcomponents/PLightDirectional.js.map +1 -0
  69. package/dist/pcomponents/PMaskedMaterial.d.ts +17 -0
  70. package/dist/pcomponents/PMaskedMaterial.d.ts.map +1 -0
  71. package/dist/pcomponents/PMaskedMaterial.js +195 -0
  72. package/dist/pcomponents/PMaskedMaterial.js.map +1 -0
  73. package/dist/pcomponents/PMaterialModifier.d.ts +8 -0
  74. package/dist/pcomponents/PMaterialModifier.d.ts.map +1 -0
  75. package/dist/pcomponents/PMaterialModifier.js +22 -0
  76. package/dist/pcomponents/PMaterialModifier.js.map +1 -0
  77. package/dist/pcomponents/PModelAnnotation.d.ts +11 -0
  78. package/dist/pcomponents/PModelAnnotation.d.ts.map +1 -0
  79. package/dist/pcomponents/PModelAnnotation.js +21 -0
  80. package/dist/pcomponents/PModelAnnotation.js.map +1 -0
  81. package/dist/pcomponents/PModelAnnotations.d.ts +10 -0
  82. package/dist/pcomponents/PModelAnnotations.d.ts.map +1 -0
  83. package/dist/pcomponents/PModelAnnotations.js +25 -0
  84. package/dist/pcomponents/PModelAnnotations.js.map +1 -0
  85. package/dist/pcomponents/PModelGLTF.d.ts +15 -0
  86. package/dist/pcomponents/PModelGLTF.d.ts.map +1 -0
  87. package/dist/pcomponents/PModelGLTF.js +111 -0
  88. package/dist/pcomponents/PModelGLTF.js.map +1 -0
  89. package/dist/pcomponents/PModelNode.d.ts +13 -0
  90. package/dist/pcomponents/PModelNode.d.ts.map +1 -0
  91. package/dist/pcomponents/PModelNode.js +71 -0
  92. package/dist/pcomponents/PModelNode.js.map +1 -0
  93. package/dist/pcomponents/PPhysicalMaterial.d.ts +13 -0
  94. package/dist/pcomponents/PPhysicalMaterial.d.ts.map +1 -0
  95. package/dist/pcomponents/PPhysicalMaterial.js +100 -0
  96. package/dist/pcomponents/PPhysicalMaterial.js.map +1 -0
  97. package/dist/pcomponents/PPlaneGeometry.d.ts +8 -0
  98. package/dist/pcomponents/PPlaneGeometry.d.ts.map +1 -0
  99. package/dist/pcomponents/PPlaneGeometry.js +23 -0
  100. package/dist/pcomponents/PPlaneGeometry.js.map +1 -0
  101. package/dist/pcomponents/PProjectRoot.d.ts +8 -0
  102. package/dist/pcomponents/PProjectRoot.d.ts.map +1 -0
  103. package/dist/pcomponents/PProjectRoot.js +24 -0
  104. package/dist/pcomponents/PProjectRoot.js.map +1 -0
  105. package/dist/pcomponents/PSlider.d.ts +18 -0
  106. package/dist/pcomponents/PSlider.d.ts.map +1 -0
  107. package/dist/pcomponents/PSlider.js +62 -0
  108. package/dist/pcomponents/PSlider.js.map +1 -0
  109. package/dist/pcomponents/PSound.d.ts +17 -0
  110. package/dist/pcomponents/PSound.d.ts.map +1 -0
  111. package/dist/pcomponents/PSound.js +119 -0
  112. package/dist/pcomponents/PSound.js.map +1 -0
  113. package/dist/pcomponents/PSphereGeometry.d.ts +9 -0
  114. package/dist/pcomponents/PSphereGeometry.d.ts.map +1 -0
  115. package/dist/pcomponents/PSphereGeometry.js +24 -0
  116. package/dist/pcomponents/PSphereGeometry.js.map +1 -0
  117. package/dist/pcomponents/PSprite.d.ts +13 -0
  118. package/dist/pcomponents/PSprite.d.ts.map +1 -0
  119. package/dist/pcomponents/PSprite.js +73 -0
  120. package/dist/pcomponents/PSprite.js.map +1 -0
  121. package/dist/pcomponents/PSpriteSheet.d.ts +13 -0
  122. package/dist/pcomponents/PSpriteSheet.d.ts.map +1 -0
  123. package/dist/pcomponents/PSpriteSheet.js +49 -0
  124. package/dist/pcomponents/PSpriteSheet.js.map +1 -0
  125. package/dist/pcomponents/PText.d.ts +10 -0
  126. package/dist/pcomponents/PText.d.ts.map +1 -0
  127. package/dist/pcomponents/PText.js +44 -0
  128. package/dist/pcomponents/PText.js.map +1 -0
  129. package/dist/pcomponents/PVideoPlayer.d.ts +5 -0
  130. package/dist/pcomponents/PVideoPlayer.d.ts.map +1 -0
  131. package/dist/pcomponents/PVideoPlayer.js +12 -0
  132. package/dist/pcomponents/PVideoPlayer.js.map +1 -0
  133. package/dist/pcomponents.d.ts +27 -0
  134. package/dist/pcomponents.d.ts.map +1 -0
  135. package/dist/pcomponents.js +33 -0
  136. package/dist/pcomponents.js.map +1 -0
  137. package/dist/postprocessing/PSSRPass.d.ts +19 -0
  138. package/dist/postprocessing/PSSRPass.d.ts.map +1 -0
  139. package/dist/postprocessing/PSSRPass.js +69 -0
  140. package/dist/postprocessing/PSSRPass.js.map +1 -0
  141. package/dist/postprocessing/ThreeJsPostProcessor.d.ts +32 -0
  142. package/dist/postprocessing/ThreeJsPostProcessor.d.ts.map +1 -0
  143. package/dist/postprocessing/ThreeJsPostProcessor.js +264 -0
  144. package/dist/postprocessing/ThreeJsPostProcessor.js.map +1 -0
  145. package/dist/three/ColliderObject3D.d.ts +19 -0
  146. package/dist/three/ColliderObject3D.d.ts.map +1 -0
  147. package/dist/three/ColliderObject3D.js +96 -0
  148. package/dist/three/ColliderObject3D.js.map +1 -0
  149. package/dist/three/FreeCameraControls.d.ts +32 -0
  150. package/dist/three/FreeCameraControls.d.ts.map +1 -0
  151. package/dist/three/FreeCameraControls.js +173 -0
  152. package/dist/three/FreeCameraControls.js.map +1 -0
  153. package/dist/three/OrbitCameraControls.d.ts +32 -0
  154. package/dist/three/OrbitCameraControls.d.ts.map +1 -0
  155. package/dist/three/OrbitCameraControls.js +247 -0
  156. package/dist/three/OrbitCameraControls.js.map +1 -0
  157. package/dist/three/VrCameraControls.d.ts +30 -0
  158. package/dist/three/VrCameraControls.d.ts.map +1 -0
  159. package/dist/three/VrCameraControls.js +140 -0
  160. package/dist/three/VrCameraControls.js.map +1 -0
  161. package/package.json +2 -2
package/dist/App.d.ts ADDED
@@ -0,0 +1,41 @@
1
+ import { IGameContextOwner, PNode, GameContext } from "@p100-web/core";
2
+ import ThreeCanvas from "./ThreeCanvas";
3
+ type EventListener = (event: string, payload: string) => void;
4
+ export type { EventListener };
5
+ export default class App implements IGameContextOwner {
6
+ canvas: HTMLCanvasElement;
7
+ url: string;
8
+ project_id: string;
9
+ language: number;
10
+ context: GameContext | null;
11
+ pcanvas: ThreeCanvas | null;
12
+ private _listeners;
13
+ private _disposed;
14
+ constructor(canvas: HTMLCanvasElement, url: string, project_id: string, language: number);
15
+ init(): Promise<void>;
16
+ /**
17
+ * Trigger when application is shut down. This will remove
18
+ * events and clean resources.
19
+ */
20
+ dispose(): void;
21
+ private onP100Event;
22
+ removeEventListener(listener: EventListener): void;
23
+ addEventListener(listener: EventListener): void;
24
+ dispatchEvent(event: string, payload: string): void;
25
+ getGlobalEvents(): import("@p100-web/core").PEvent[];
26
+ private onWindowResize;
27
+ editor_render(): void;
28
+ setSleepState(_value: boolean): void;
29
+ setWorkState(_value: boolean): void;
30
+ onTreeChange(): void;
31
+ catch: (error: any) => void;
32
+ onClick: () => void;
33
+ onHoverEnter: () => void;
34
+ onHoverExit: () => void;
35
+ getRenderTarget(): HTMLCanvasElement;
36
+ onLoadScene(_node: PNode): void;
37
+ onUnloadScene(_node: PNode): void;
38
+ error(msg: string, details?: any): void;
39
+ rerenderNode(): void;
40
+ }
41
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,iBAAiB,EAEjB,KAAK,EAEL,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,WAAW,MAAM,eAAe,CAAC;AAKxC,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,MAAM,CAAC,OAAO,OAAO,GAAI,YAAW,iBAAiB;IACnD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAK;IACrB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAQ;IAEnC,OAAO,CAAC,UAAU,CAAkB;IAEpC,OAAO,CAAC,SAAS,CAAS;gBAGxB,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM;IAWZ,IAAI;IAyFV;;;OAGG;IACH,OAAO;IA8BP,OAAO,CAAC,WAAW,CAMjB;IAEF,mBAAmB,CAAC,QAAQ,EAAE,aAAa;IAI3C,gBAAgB,CAAC,QAAQ,EAAE,aAAa;IAIxC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAgB5C,eAAe;IASf,OAAO,CAAC,cAAc,CAIpB;IAMF,aAAa,IAAI,IAAI;IAErB,aAAa,CAAC,MAAM,EAAE,OAAO;IAC7B,YAAY,CAAC,MAAM,EAAE,OAAO;IAE5B,YAAY;IAEZ,KAAK,GAAI,OAAO,GAAG,UAEjB;IAEF,OAAO,aAAY;IAEnB,YAAY,aAIV;IAEF,WAAW,aAIT;IAEF,eAAe;IAIf,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAE/B,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAEjC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAIhC,YAAY;CACb"}
package/dist/App.js ADDED
@@ -0,0 +1,171 @@
1
+ import { DBNode, Platform, MediaManager, PFile, GameContext, Settings_Threejs, } from "@p100-web/core";
2
+ import ThreeEngine from "./ThreeEngine";
3
+ import ComponentFactory from "./ComponentFactory";
4
+ export default class App {
5
+ constructor(canvas, url, project_id, language) {
6
+ this.language = 0;
7
+ this.pcanvas = null;
8
+ this._disposed = false;
9
+ //
10
+ // EVENTS
11
+ //
12
+ this.onP100Event = (e) => {
13
+ const event = e.detail.name;
14
+ const payload = e.detail.payload;
15
+ for (const listener of this._listeners) {
16
+ listener(event, payload);
17
+ }
18
+ };
19
+ //
20
+ // Event Listeners
21
+ //
22
+ this.onWindowResize = () => {
23
+ const width = window.innerWidth;
24
+ const height = window.innerHeight;
25
+ this.pcanvas?.onWindowResize(width, height, true);
26
+ };
27
+ this.catch = (error) => {
28
+ console.error(error);
29
+ };
30
+ this.onClick = () => { };
31
+ this.onHoverEnter = () => {
32
+ if (this.canvas) {
33
+ this.canvas.style.cursor = "pointer";
34
+ }
35
+ };
36
+ this.onHoverExit = () => {
37
+ if (this.canvas) {
38
+ this.canvas.style.cursor = "inherit";
39
+ }
40
+ };
41
+ this.canvas = canvas;
42
+ this.url = url;
43
+ this.project_id = project_id;
44
+ this._listeners = [];
45
+ this.language = language || 1;
46
+ this.context = new GameContext(this, Platform.Threejs, MediaManager);
47
+ this.context.setLanguage(language);
48
+ }
49
+ async init() {
50
+ if (this._disposed)
51
+ throw new Error("Context is disposed. Create a new.");
52
+ if (!this.context)
53
+ throw new Error("No context.");
54
+ if (!this.canvas)
55
+ throw new Error("Canvas not found");
56
+ this.canvas.addEventListener("p100-out-event", this.onP100Event);
57
+ const width = window.innerWidth;
58
+ const height = window.innerHeight;
59
+ // Load project
60
+ const response = await fetch(`${this.url}/projects/${this.project_id}/1/${this.language}`);
61
+ if (!response.ok)
62
+ throw new Error(`Failed to load project: ${response.status}`);
63
+ const json = await response.json();
64
+ if (!json.settings)
65
+ throw new Error("Missing settings for platform");
66
+ const settings = new Settings_Threejs();
67
+ settings.init(json.settings);
68
+ // Init engine
69
+ const engine = new ThreeEngine(new ComponentFactory());
70
+ this.context.setEngine(engine);
71
+ this.context.setCoordinates(json.coordinates);
72
+ // Init nodes
73
+ this.pcanvas = engine.setupCanvas(this.canvas, this.context, width, height, settings);
74
+ this.pcanvas.render(settings, true);
75
+ // Need to init sound on click
76
+ this.context.setupAudioListener();
77
+ // Prepare window
78
+ window.addEventListener("resize", this.onWindowResize);
79
+ // Init files
80
+ const files = json.files.map((dbFile) => new PFile(dbFile));
81
+ MediaManager.setFiles(files);
82
+ // Init events
83
+ json.events.map(this.context.registerEvent);
84
+ // Init variables
85
+ json.variables.map(this.context.registerVariable);
86
+ const dbNodes = json.nodes.map((dbNode) => new DBNode(dbNode));
87
+ const dbRoot = dbNodes.find((n) => n._parent === null && n._scene === null);
88
+ if (!dbRoot)
89
+ throw new Error("Could not find dbRoot");
90
+ const root = this.context.createRootNode(dbRoot, dbNodes);
91
+ if (root === null)
92
+ throw new Error("Could not find root node");
93
+ // Init scenes
94
+ const dbSceneRoots = dbNodes.filter((n) => n._scene !== null && n._parent === null);
95
+ dbSceneRoots.map((dbSceneRoot) => {
96
+ const dbSceneNodes = dbNodes.filter((n) => n._scene === dbSceneRoot._scene);
97
+ this.context.registerScene(dbSceneRoot, dbSceneNodes);
98
+ });
99
+ this.context.setRoot(root);
100
+ this.context.enable();
101
+ // Set camera controls
102
+ this.context.setCameraControlSettings(settings.camera);
103
+ // Set layer mask
104
+ this.context.setLayers(settings.mask);
105
+ this.context.play();
106
+ }
107
+ /**
108
+ * Trigger when application is shut down. This will remove
109
+ * events and clean resources.
110
+ */
111
+ dispose() {
112
+ this._disposed = true;
113
+ console.log("[App] dispose()");
114
+ this._listeners = [];
115
+ const canvas = this.context?.getCanvasElement();
116
+ if (canvas) {
117
+ canvas.removeEventListener("p100-out-event", this.onP100Event);
118
+ }
119
+ window.removeEventListener("resize", this.onWindowResize);
120
+ if (this.context) {
121
+ if (this.context.isRunning()) {
122
+ console.log("[App] stop()");
123
+ this.context.stop();
124
+ }
125
+ this.context.disable();
126
+ this.context.dispose();
127
+ this.context = null;
128
+ }
129
+ }
130
+ removeEventListener(listener) {
131
+ this._listeners = this._listeners.filter((l) => l !== listener);
132
+ }
133
+ addEventListener(listener) {
134
+ this._listeners.push(listener);
135
+ }
136
+ dispatchEvent(event, payload) {
137
+ const e = this.context?.getEvent(event)?.name || event;
138
+ const canvas = this.context?.getCanvasElement();
139
+ if (!canvas) {
140
+ throw new Error("No canvas");
141
+ }
142
+ canvas.dispatchEvent(new CustomEvent("p100-in-event", {
143
+ detail: {
144
+ name: e,
145
+ payload: payload,
146
+ },
147
+ }));
148
+ }
149
+ getGlobalEvents() {
150
+ if (this.context)
151
+ return Object.values(this.context.getEvents());
152
+ return [];
153
+ }
154
+ //
155
+ // IGameContextOwner
156
+ //
157
+ editor_render() { }
158
+ setSleepState(_value) { }
159
+ setWorkState(_value) { }
160
+ onTreeChange() { }
161
+ getRenderTarget() {
162
+ return this.canvas;
163
+ }
164
+ onLoadScene(_node) { }
165
+ onUnloadScene(_node) { }
166
+ error(msg, details) {
167
+ console.error(msg, details);
168
+ }
169
+ rerenderNode() { }
170
+ }
171
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type DBComponent, PComponent, PNode, type IComponentFactory, GameContext } from "@p100-web/core";
2
+ export default class ComponentFactory implements IComponentFactory {
3
+ component(dbComponent: DBComponent, node: PNode, gameContext: GameContext): PComponent | null;
4
+ }
5
+ //# sourceMappingURL=ComponentFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentFactory.d.ts","sourceRoot":"","sources":["../src/ComponentFactory.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAChB,UAAU,EACV,KAAK,EACL,KAAK,iBAAiB,EACtB,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,OAAO,OAAO,gBAAiB,YAAW,iBAAiB;IAChE,SAAS,CACP,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,WAAW,GACvB,UAAU,GAAG,IAAI;CAWrB"}
@@ -0,0 +1,13 @@
1
+ import * as Components from "./pcomponents";
2
+ export default class ComponentFactory {
3
+ component(dbComponent, node, gameContext) {
4
+ const Type = Components[dbComponent.primitive];
5
+ if (!Type) {
6
+ console.error("[Three] Type not found: " + dbComponent.primitive + " on: " + node.name);
7
+ return null;
8
+ }
9
+ const component = new Type(dbComponent, node, gameContext);
10
+ return component;
11
+ }
12
+ }
13
+ //# sourceMappingURL=ComponentFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComponentFactory.js","sourceRoot":"","sources":["../src/ComponentFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAS5C,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,SAAS,CACP,WAAwB,EACxB,IAAW,EACX,WAAwB;QAExB,MAAM,IAAI,GAAI,UAAkB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CACX,0BAA0B,GAAG,WAAW,CAAC,SAAS,GAAG,OAAO,GAAG,IAAI,CAAC,IAAI,CACzE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAe,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,56 @@
1
+ import { Intersection, Object3D, Object3DEventMap, PerspectiveCamera, Raycaster, Scene, WebGLRenderer, Group } from "three";
2
+ import ThreeJsPostProcessor from "./postprocessing/ThreeJsPostProcessor";
3
+ import { Settings_Threejs, PCanvas, GameContext, Settings_Base, PEnvironment, IThreeRenderSettings } from "@p100-web/core";
4
+ export default class ThreeCanvas extends PCanvas {
5
+ private _sceneNode;
6
+ private _rootNode;
7
+ private _cameraNode;
8
+ private _raycaster;
9
+ private _renderer;
10
+ private _composer;
11
+ private _clock;
12
+ private _backgroundColor;
13
+ constructor(canvas: HTMLCanvasElement, context: GameContext, width: number, height: number, settings: IThreeRenderSettings);
14
+ getScene<T>(): T;
15
+ render(settings: IThreeRenderSettings, startLoop: boolean): void;
16
+ dispose(): void;
17
+ getComposer(): ThreeJsPostProcessor | null;
18
+ updateEnvironment(): void;
19
+ setBackgroundColor(bg: string): void;
20
+ clearEnvironment(environment: PEnvironment): void;
21
+ setToneMapping(value: number): void;
22
+ setToneMappingExposure(value: number): void;
23
+ setFOV(fov: number): void;
24
+ setNearFar(near?: number, far?: number): void;
25
+ private setupShadows;
26
+ private setupPostProcessing;
27
+ /**
28
+ * Base settings has changed for post processing
29
+ */
30
+ updatePostProcessingSettings(field: string, psettings: Settings_Threejs): void;
31
+ onWindowResize(width: number, height: number, resize: boolean): void;
32
+ getThreeSceneNode(): Scene;
33
+ getThreeRenderer(): WebGLRenderer | null;
34
+ getThreeRootNode(): Group<Object3DEventMap>;
35
+ getThreeCamera(): PerspectiveCamera;
36
+ startRenderLoop(): void;
37
+ stopRenderLoop(): void;
38
+ updateRendererSettings(field: string, isettings: Settings_Base): void;
39
+ updateCameraSettings(field: string, settings: Settings_Base): void;
40
+ /**
41
+ * Quality is always clamped to steps of 0.05
42
+ */
43
+ protected setQuality(quality: number): boolean;
44
+ protected updateRenderScale(value: number): void;
45
+ update: () => void;
46
+ _colliders: Object3D[];
47
+ addCollider(object: Object3D): void;
48
+ removeCollider(object: Object3D): void;
49
+ getRaycaster(): Raycaster;
50
+ private raycast;
51
+ /**
52
+ * User hovers collider
53
+ */
54
+ onHover(intersects: Intersection<Object3D<Object3DEventMap>>[] | null): void;
55
+ }
56
+ //# sourceMappingURL=ThreeCanvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreeCanvas.d.ts","sourceRoot":"","sources":["../src/ThreeCanvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,aAAa,EACb,KAAK,EAON,MAAM,OAAO,CAAC;AAEf,OAAO,oBAAoB,MAAM,uCAAuC,CAAC;AACzE,OAAO,EAGL,gBAAgB,EAChB,OAAO,EACP,WAAW,EAEX,aAAa,EACb,YAAY,EACZ,oBAAoB,EAErB,MAAM,gBAAgB,CAAC;AAMxB,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,WAAW,CAAoB;IAEvC,OAAO,CAAC,UAAU,CAAY;IAE9B,OAAO,CAAC,SAAS,CAA8B;IAG/C,OAAO,CAAC,SAAS,CAAqC;IAEtD,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO,CAAC,gBAAgB,CAA8B;gBAGpD,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,oBAAoB;IAyFhC,QAAQ,CAAC,CAAC,KAAK,CAAC;IAIhB,MAAM,CAAC,QAAQ,EAAE,oBAAoB,EAAE,SAAS,EAAE,OAAO;IAgBzD,OAAO;IAyBP,WAAW;IAQX,iBAAiB,IAAI,IAAI;IAyBzB,kBAAkB,CAAC,EAAE,EAAE,MAAM;IAQ7B,gBAAgB,CAAC,WAAW,EAAE,YAAY;IAwB1C,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,sBAAsB,CAAC,KAAK,EAAE,MAAM;IAIpC,MAAM,CAAC,GAAG,EAAE,MAAM;IAKlB,UAAU,CAAC,IAAI,GAAE,MAAW,EAAE,GAAG,GAAE,MAAW;IAU9C,OAAO,CAAC,YAAY;IA0BpB,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB;IAkBvE,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAoB7D,iBAAiB;IAIjB,gBAAgB;IAIhB,gBAAgB;IAIhB,cAAc;IAQd,eAAe,IAAI,IAAI;IAMvB,cAAc,IAAI,IAAI;IAUtB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa;IAiB9D,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;IAoB3D;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI9C,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAYhD,MAAM,aA0CJ;IAMF,UAAU,EAAE,QAAQ,EAAE,CAAM;IAE5B,WAAW,CAAC,MAAM,EAAE,QAAQ;IAI5B,cAAc,CAAC,MAAM,EAAE,QAAQ;IAO/B,YAAY;IAIZ,OAAO,CAAC,OAAO;IAcf;;OAEG;IACH,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,IAAI;CAwBtE"}