@gg-web-engine/core 0.0.39 → 0.0.48

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 (185) hide show
  1. package/README.md +0 -0
  2. package/blender_exporter/build_blender_scene.py +0 -1
  3. package/blender_exporter/spherical_to_cube_texture.py +0 -0
  4. package/dist/2d/components/physics/i-physics-world-2d.component.d.ts +0 -0
  5. package/dist/2d/components/physics/i-physics-world-2d.component.js +0 -0
  6. package/dist/2d/components/physics/i-rigid-body-2d.component.d.ts +0 -0
  7. package/dist/2d/components/physics/i-rigid-body-2d.component.js +0 -0
  8. package/dist/2d/components/physics/i-trigger-2d.component.d.ts +0 -0
  9. package/dist/2d/components/physics/i-trigger-2d.component.js +0 -0
  10. package/dist/2d/components/rendering/i-display-object-2d.component.d.ts +0 -0
  11. package/dist/2d/components/rendering/i-display-object-2d.component.js +0 -0
  12. package/dist/2d/components/rendering/i-renderer-2d.component.d.ts +0 -0
  13. package/dist/2d/components/rendering/i-renderer-2d.component.js +0 -0
  14. package/dist/2d/components/rendering/i-visual-scene-2d.component.d.ts +1 -1
  15. package/dist/2d/components/rendering/i-visual-scene-2d.component.js +0 -0
  16. package/dist/2d/entities/controllers/entity-2d-positioning.animator.d.ts +1 -1
  17. package/dist/2d/entities/controllers/entity-2d-positioning.animator.js +0 -0
  18. package/dist/2d/entities/entity-2d.d.ts +0 -0
  19. package/dist/2d/entities/entity-2d.js +25 -25
  20. package/dist/2d/entities/i-renderable-2d.entity.d.ts +3 -1
  21. package/dist/2d/entities/i-renderable-2d.entity.js +7 -0
  22. package/dist/2d/entities/renderer-2d.entity.d.ts +0 -0
  23. package/dist/2d/entities/renderer-2d.entity.js +0 -0
  24. package/dist/2d/entities/trigger-2d.entity.d.ts +0 -0
  25. package/dist/2d/entities/trigger-2d.entity.js +11 -11
  26. package/dist/2d/factories.d.ts +1 -1
  27. package/dist/2d/factories.js +0 -0
  28. package/dist/2d/gg-2d-world.d.ts +4 -3
  29. package/dist/2d/gg-2d-world.js +0 -0
  30. package/dist/2d/index.d.ts +0 -0
  31. package/dist/2d/index.js +0 -0
  32. package/dist/2d/interfaces/i-positionable-2d.d.ts +0 -0
  33. package/dist/2d/interfaces/i-positionable-2d.js +0 -0
  34. package/dist/2d/models/body-options.d.ts +1 -1
  35. package/dist/2d/models/body-options.js +0 -0
  36. package/dist/2d/models/shapes.d.ts +2 -2
  37. package/dist/2d/models/shapes.js +0 -0
  38. package/dist/3d/components/physics/i-physics-world-3d.component.d.ts +0 -0
  39. package/dist/3d/components/physics/i-physics-world-3d.component.js +0 -0
  40. package/dist/3d/components/physics/i-raycast-vehicle.component.d.ts +2 -2
  41. package/dist/3d/components/physics/i-raycast-vehicle.component.js +0 -0
  42. package/dist/3d/components/physics/i-rigid-body-3d.component.d.ts +0 -0
  43. package/dist/3d/components/physics/i-rigid-body-3d.component.js +0 -0
  44. package/dist/3d/components/physics/i-trigger-3d.component.d.ts +0 -0
  45. package/dist/3d/components/physics/i-trigger-3d.component.js +0 -0
  46. package/dist/3d/components/rendering/i-camera.component.d.ts +0 -0
  47. package/dist/3d/components/rendering/i-camera.component.js +0 -0
  48. package/dist/3d/components/rendering/i-display-object-3d.component.d.ts +0 -0
  49. package/dist/3d/components/rendering/i-display-object-3d.component.js +0 -0
  50. package/dist/3d/components/rendering/i-renderer-3d.component.d.ts +0 -0
  51. package/dist/3d/components/rendering/i-renderer-3d.component.js +0 -0
  52. package/dist/3d/components/rendering/i-visual-scene-3d.component.d.ts +1 -1
  53. package/dist/3d/components/rendering/i-visual-scene-3d.component.js +0 -0
  54. package/dist/3d/entities/controllers/animators/camera-3d.animator.d.ts +1 -1
  55. package/dist/3d/entities/controllers/animators/camera-3d.animator.js +0 -0
  56. package/dist/3d/entities/controllers/animators/entity-3d-positioning.animator.d.ts +1 -1
  57. package/dist/3d/entities/controllers/animators/entity-3d-positioning.animator.js +0 -0
  58. package/dist/3d/entities/controllers/input/car-keyboard-handling.controller.d.ts +2 -2
  59. package/dist/3d/entities/controllers/input/car-keyboard-handling.controller.js +3 -3
  60. package/dist/3d/entities/controllers/input/free-camera.controller.d.ts +1 -1
  61. package/dist/3d/entities/controllers/input/free-camera.controller.js +0 -0
  62. package/dist/3d/entities/controllers/input/gg-car-keyboard-handling.controller.d.ts +1 -1
  63. package/dist/3d/entities/controllers/input/gg-car-keyboard-handling.controller.js +0 -0
  64. package/dist/3d/entities/controllers/input/orbit-camera.controller.d.ts +1 -1
  65. package/dist/3d/entities/controllers/input/orbit-camera.controller.js +10 -10
  66. package/dist/3d/entities/entity-3d.d.ts +0 -0
  67. package/dist/3d/entities/entity-3d.js +25 -25
  68. package/dist/3d/entities/gg-car/gg-car.entity.d.ts +1 -1
  69. package/dist/3d/entities/gg-car/gg-car.entity.js +16 -16
  70. package/dist/3d/entities/i-renderable-3d.entity.d.ts +3 -1
  71. package/dist/3d/entities/i-renderable-3d.entity.js +7 -0
  72. package/dist/3d/entities/map-graph-3d.entity.d.ts +9 -6
  73. package/dist/3d/entities/map-graph-3d.entity.js +70 -26
  74. package/dist/3d/entities/raycast-vehicle-3d.entity.d.ts +6 -4
  75. package/dist/3d/entities/raycast-vehicle-3d.entity.js +44 -30
  76. package/dist/3d/entities/renderer-3d.entity.d.ts +0 -0
  77. package/dist/3d/entities/renderer-3d.entity.js +0 -0
  78. package/dist/3d/entities/trigger-3d.entity.d.ts +0 -0
  79. package/dist/3d/entities/trigger-3d.entity.js +11 -11
  80. package/dist/3d/factories.d.ts +1 -1
  81. package/dist/3d/factories.js +0 -0
  82. package/dist/3d/gg-3d-world.d.ts +4 -3
  83. package/dist/3d/gg-3d-world.js +0 -0
  84. package/dist/3d/index.d.ts +0 -0
  85. package/dist/3d/index.js +0 -0
  86. package/dist/3d/interfaces/i-positionable-3d.d.ts +0 -0
  87. package/dist/3d/interfaces/i-positionable-3d.js +0 -0
  88. package/dist/3d/loader.d.ts +4 -4
  89. package/dist/3d/loader.js +7 -7
  90. package/dist/3d/loaders.d.ts +0 -0
  91. package/dist/3d/loaders.js +0 -0
  92. package/dist/3d/models/body-options.d.ts +1 -1
  93. package/dist/3d/models/body-options.js +0 -0
  94. package/dist/3d/models/gg-meta.d.ts +4 -4
  95. package/dist/3d/models/gg-meta.js +0 -0
  96. package/dist/3d/models/shapes.d.ts +3 -3
  97. package/dist/3d/models/shapes.js +0 -0
  98. package/dist/base/clock/global-clock.d.ts +0 -0
  99. package/dist/base/clock/global-clock.js +8 -8
  100. package/dist/base/clock/i-clock.d.ts +0 -0
  101. package/dist/base/clock/i-clock.js +0 -0
  102. package/dist/base/clock/pausable-clock.d.ts +8 -1
  103. package/dist/base/clock/pausable-clock.js +38 -23
  104. package/dist/base/components/i-component.d.ts +0 -0
  105. package/dist/base/components/i-component.js +0 -0
  106. package/dist/base/components/i-world-component.d.ts +0 -0
  107. package/dist/base/components/i-world-component.js +0 -0
  108. package/dist/base/components/physics/i-body.component.d.ts +0 -0
  109. package/dist/base/components/physics/i-body.component.js +0 -0
  110. package/dist/base/components/physics/i-physics-world.component.d.ts +0 -0
  111. package/dist/base/components/physics/i-physics-world.component.js +0 -0
  112. package/dist/base/components/physics/i-rigid-body.component.d.ts +0 -0
  113. package/dist/base/components/physics/i-rigid-body.component.js +0 -0
  114. package/dist/base/components/physics/i-trigger.component.d.ts +0 -0
  115. package/dist/base/components/physics/i-trigger.component.js +0 -0
  116. package/dist/base/components/rendering/i-display-object.component.d.ts +0 -0
  117. package/dist/base/components/rendering/i-display-object.component.js +0 -0
  118. package/dist/base/components/rendering/i-renderer.component.d.ts +3 -3
  119. package/dist/base/components/rendering/i-renderer.component.js +0 -0
  120. package/dist/base/components/rendering/i-visual-scene.component.d.ts +0 -0
  121. package/dist/base/components/rendering/i-visual-scene.component.js +0 -0
  122. package/dist/base/data-structures/bitmask.d.ts +0 -0
  123. package/dist/base/data-structures/bitmask.js +0 -0
  124. package/dist/base/data-structures/graph.d.ts +0 -0
  125. package/dist/base/data-structures/graph.js +4 -4
  126. package/dist/base/entities/controllers/animation-mixer.d.ts +1 -1
  127. package/dist/base/entities/controllers/animation-mixer.js +27 -27
  128. package/dist/base/entities/controllers/inline-controller.d.ts +1 -1
  129. package/dist/base/entities/controllers/inline-controller.js +4 -1
  130. package/dist/base/entities/i-entity.d.ts +0 -0
  131. package/dist/base/entities/i-entity.js +0 -0
  132. package/dist/base/entities/i-renderable.entity.d.ts +0 -0
  133. package/dist/base/entities/i-renderable.entity.js +0 -0
  134. package/dist/base/entities/i-renderer.entity.d.ts +0 -0
  135. package/dist/base/entities/i-renderer.entity.js +15 -15
  136. package/dist/base/gg-world.d.ts +11 -5
  137. package/dist/base/gg-world.js +60 -17
  138. package/dist/base/index.d.ts +0 -0
  139. package/dist/base/index.js +0 -0
  140. package/dist/base/inputs/direction.keyboard.input.d.ts +2 -2
  141. package/dist/base/inputs/direction.keyboard.input.js +6 -6
  142. package/dist/base/inputs/i-input.d.ts +0 -0
  143. package/dist/base/inputs/i-input.js +0 -0
  144. package/dist/base/inputs/keyboard.input.d.ts +0 -0
  145. package/dist/base/inputs/keyboard.input.js +0 -0
  146. package/dist/base/inputs/mouse.input.d.ts +1 -1
  147. package/dist/base/inputs/mouse.input.js +27 -22
  148. package/dist/base/interfaces/i-positionable.d.ts +0 -0
  149. package/dist/base/interfaces/i-positionable.js +0 -0
  150. package/dist/base/math/box.d.ts +0 -0
  151. package/dist/base/math/box.js +0 -0
  152. package/dist/base/math/matrix4.d.ts +0 -0
  153. package/dist/base/math/matrix4.js +0 -0
  154. package/dist/base/math/numbers.d.ts +0 -0
  155. package/dist/base/math/numbers.js +0 -0
  156. package/dist/base/math/point2.d.ts +0 -0
  157. package/dist/base/math/point2.js +0 -0
  158. package/dist/base/math/point3.d.ts +0 -0
  159. package/dist/base/math/point3.js +0 -0
  160. package/dist/base/math/quaternion.d.ts +6 -0
  161. package/dist/base/math/quaternion.js +38 -0
  162. package/dist/base/math/splines.d.ts +0 -0
  163. package/dist/base/math/splines.js +0 -0
  164. package/dist/base/models/axis-directions.d.ts +3 -3
  165. package/dist/base/models/axis-directions.js +0 -0
  166. package/dist/base/models/body-options.d.ts +2 -2
  167. package/dist/base/models/body-options.js +0 -0
  168. package/dist/base/models/geometry-nodes.d.ts +3 -3
  169. package/dist/base/models/geometry-nodes.js +0 -0
  170. package/dist/base/models/points.d.ts +5 -5
  171. package/dist/base/models/points.js +0 -0
  172. package/dist/dev/gg-console.ui.d.ts +0 -0
  173. package/dist/dev/gg-console.ui.js +0 -0
  174. package/dist/dev/gg-debugger.ui.d.ts +5 -0
  175. package/dist/dev/gg-debugger.ui.js +129 -8
  176. package/dist/dev/gg-static.d.ts +0 -0
  177. package/dist/dev/gg-static.js +49 -41
  178. package/dist/dev/index.d.ts +1 -0
  179. package/dist/dev/index.js +1 -0
  180. package/dist/dev/performance-meter.entity.d.ts +21 -0
  181. package/dist/dev/performance-meter.entity.js +120 -0
  182. package/dist/index.d.ts +0 -0
  183. package/dist/index.js +0 -0
  184. package/package.json +7 -7
  185. package/tsconfig.json +0 -0
@@ -0,0 +1,120 @@
1
+ import { IEntity } from '../base';
2
+ import { takeUntil } from 'rxjs';
3
+ export class PerformanceMeterEntity extends IEntity {
4
+ get avgReport() {
5
+ return this._avgReport;
6
+ }
7
+ get peakReport() {
8
+ return this._peakReport;
9
+ }
10
+ constructor(maxSamples = 60, maxRows = 15) {
11
+ super();
12
+ this.maxSamples = maxSamples;
13
+ this.maxRows = maxRows;
14
+ this.tickOrder = Number.MAX_SAFE_INTEGER;
15
+ this.sampleIndex = 0;
16
+ this.collectedData = new Map();
17
+ this._avgReport = { totalTime: 0, entries: [] };
18
+ this._peakReport = { totalTime: 0, entries: [] };
19
+ }
20
+ onSpawned(world) {
21
+ super.onSpawned(world);
22
+ this.sampleIndex = 0;
23
+ const now = () => (typeof performance === 'undefined' ? Date : performance).now();
24
+ this.world.tickForwardTo$.pipe(takeUntil(this.onRemoved$)).subscribe(e => {
25
+ if (e === this)
26
+ return;
27
+ if (!this.collectedData.has(e)) {
28
+ this.collectedData.set(e, [[this.sampleIndex, now(), 0]]);
29
+ }
30
+ else {
31
+ this.collectedData.get(e).push([this.sampleIndex, now(), 0]);
32
+ }
33
+ });
34
+ this.world.tickForwardedTo$.pipe(takeUntil(this.onRemoved$)).subscribe(e => {
35
+ if (e === this)
36
+ return;
37
+ const report = this.collectedData.get(e);
38
+ report[report.length - 1][2] = now();
39
+ });
40
+ this.tick$.pipe(takeUntil(this.onRemoved$)).subscribe(() => {
41
+ this.sampleIndex++;
42
+ // remove oldest samples
43
+ const entries = Array.from(this.collectedData.entries());
44
+ for (const [k, v] of entries) {
45
+ while (v.length > 0 && v[0][0] < this.sampleIndex - this.maxSamples) {
46
+ v.shift();
47
+ }
48
+ if (v.length === 0) {
49
+ this.collectedData.delete(k);
50
+ }
51
+ }
52
+ // helper functions
53
+ const label = (e) => {
54
+ if (e instanceof IEntity) {
55
+ if (e.name === '') {
56
+ return e.constructor.name;
57
+ }
58
+ else {
59
+ return e.name;
60
+ }
61
+ }
62
+ else if (e === 'PHYSICS_WORLD') {
63
+ return 'Physics simulation';
64
+ }
65
+ else {
66
+ return e;
67
+ }
68
+ };
69
+ const truncateReport = (report) => {
70
+ let restSum = 0;
71
+ let restAmount = 0;
72
+ for (restAmount; restAmount < report.length - 2; restAmount++) {
73
+ if (this.maxRows > report.length - restAmount + 1) {
74
+ restAmount--;
75
+ break;
76
+ }
77
+ restSum += report[report.length - restAmount - 1][1];
78
+ }
79
+ if (restAmount > 1) {
80
+ report = report.slice(0, report.length - restAmount);
81
+ report.push([`Rest (${restAmount})`, restSum]);
82
+ }
83
+ return report;
84
+ };
85
+ // build avg report
86
+ let totalTimeAvg = 0;
87
+ let avgReport = Array.from(this.collectedData.entries())
88
+ .map(([e, samples]) => {
89
+ const timeSpentAvg = samples.reduce((prev, [_, start, finish]) => prev + finish - start, 0) / this.maxSamples;
90
+ totalTimeAvg += timeSpentAvg;
91
+ return [label(e), timeSpentAvg];
92
+ })
93
+ .sort((a, b) => b[1] - a[1]);
94
+ avgReport = truncateReport(avgReport);
95
+ this._avgReport = { totalTime: totalTimeAvg, entries: avgReport };
96
+ // build peak report
97
+ let totalTimePeaks = new Map();
98
+ let peakReport = Array.from(this.collectedData.entries())
99
+ .map(([e, samples]) => {
100
+ let peakTime = 0;
101
+ for (const [sample, start, finish] of samples) {
102
+ const time = finish - start;
103
+ peakTime = Math.max(peakTime, time);
104
+ totalTimePeaks.set(sample, time + (totalTimePeaks.get(sample) || 0));
105
+ }
106
+ return [label(e), peakTime];
107
+ })
108
+ .sort((a, b) => b[1] - a[1]);
109
+ peakReport = truncateReport(peakReport);
110
+ let totalPeak = Array.from(totalTimePeaks.values()).reduce((prev, cur) => Math.max(prev, cur), 0);
111
+ this._peakReport = { totalTime: totalPeak, entries: peakReport };
112
+ });
113
+ }
114
+ onRemoved() {
115
+ super.onRemoved();
116
+ this.collectedData = new Map();
117
+ this._avgReport = { totalTime: 0, entries: [] };
118
+ this._peakReport = { totalTime: 0, entries: [] };
119
+ }
120
+ }
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gg-web-engine/core",
3
- "version": "0.0.39",
3
+ "version": "0.0.48",
4
4
  "description": "An attempt to create open source game engine for browser",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -32,12 +32,12 @@
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/jest": "^29.5.12",
35
- "@types/stats.js": "^0.17.0",
36
- "jest": "^29.5.0",
37
- "jest-environment-jsdom": "^29.5.0",
38
- "prettier": "^2.8.6",
39
- "ts-jest": "^29.0.5",
40
- "typescript": "~4.7.2"
35
+ "@types/stats.js": "^0.17.3",
36
+ "jest": "^29.7.0",
37
+ "jest-environment-jsdom": "^29.7.0",
38
+ "prettier": "^3.3.3",
39
+ "ts-jest": "^29.2.4",
40
+ "typescript": "~5.5.4"
41
41
  },
42
42
  "jest": {
43
43
  "moduleFileExtensions": [
package/tsconfig.json CHANGED
File without changes