@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.
- package/README.md +0 -0
- package/blender_exporter/build_blender_scene.py +0 -1
- package/blender_exporter/spherical_to_cube_texture.py +0 -0
- package/dist/2d/components/physics/i-physics-world-2d.component.d.ts +0 -0
- package/dist/2d/components/physics/i-physics-world-2d.component.js +0 -0
- package/dist/2d/components/physics/i-rigid-body-2d.component.d.ts +0 -0
- package/dist/2d/components/physics/i-rigid-body-2d.component.js +0 -0
- package/dist/2d/components/physics/i-trigger-2d.component.d.ts +0 -0
- package/dist/2d/components/physics/i-trigger-2d.component.js +0 -0
- package/dist/2d/components/rendering/i-display-object-2d.component.d.ts +0 -0
- package/dist/2d/components/rendering/i-display-object-2d.component.js +0 -0
- package/dist/2d/components/rendering/i-renderer-2d.component.d.ts +0 -0
- package/dist/2d/components/rendering/i-renderer-2d.component.js +0 -0
- package/dist/2d/components/rendering/i-visual-scene-2d.component.d.ts +1 -1
- package/dist/2d/components/rendering/i-visual-scene-2d.component.js +0 -0
- package/dist/2d/entities/controllers/entity-2d-positioning.animator.d.ts +1 -1
- package/dist/2d/entities/controllers/entity-2d-positioning.animator.js +0 -0
- package/dist/2d/entities/entity-2d.d.ts +0 -0
- package/dist/2d/entities/entity-2d.js +25 -25
- package/dist/2d/entities/i-renderable-2d.entity.d.ts +3 -1
- package/dist/2d/entities/i-renderable-2d.entity.js +7 -0
- package/dist/2d/entities/renderer-2d.entity.d.ts +0 -0
- package/dist/2d/entities/renderer-2d.entity.js +0 -0
- package/dist/2d/entities/trigger-2d.entity.d.ts +0 -0
- package/dist/2d/entities/trigger-2d.entity.js +11 -11
- package/dist/2d/factories.d.ts +1 -1
- package/dist/2d/factories.js +0 -0
- package/dist/2d/gg-2d-world.d.ts +4 -3
- package/dist/2d/gg-2d-world.js +0 -0
- package/dist/2d/index.d.ts +0 -0
- package/dist/2d/index.js +0 -0
- package/dist/2d/interfaces/i-positionable-2d.d.ts +0 -0
- package/dist/2d/interfaces/i-positionable-2d.js +0 -0
- package/dist/2d/models/body-options.d.ts +1 -1
- package/dist/2d/models/body-options.js +0 -0
- package/dist/2d/models/shapes.d.ts +2 -2
- package/dist/2d/models/shapes.js +0 -0
- package/dist/3d/components/physics/i-physics-world-3d.component.d.ts +0 -0
- package/dist/3d/components/physics/i-physics-world-3d.component.js +0 -0
- package/dist/3d/components/physics/i-raycast-vehicle.component.d.ts +2 -2
- package/dist/3d/components/physics/i-raycast-vehicle.component.js +0 -0
- package/dist/3d/components/physics/i-rigid-body-3d.component.d.ts +0 -0
- package/dist/3d/components/physics/i-rigid-body-3d.component.js +0 -0
- package/dist/3d/components/physics/i-trigger-3d.component.d.ts +0 -0
- package/dist/3d/components/physics/i-trigger-3d.component.js +0 -0
- package/dist/3d/components/rendering/i-camera.component.d.ts +0 -0
- package/dist/3d/components/rendering/i-camera.component.js +0 -0
- package/dist/3d/components/rendering/i-display-object-3d.component.d.ts +0 -0
- package/dist/3d/components/rendering/i-display-object-3d.component.js +0 -0
- package/dist/3d/components/rendering/i-renderer-3d.component.d.ts +0 -0
- package/dist/3d/components/rendering/i-renderer-3d.component.js +0 -0
- package/dist/3d/components/rendering/i-visual-scene-3d.component.d.ts +1 -1
- package/dist/3d/components/rendering/i-visual-scene-3d.component.js +0 -0
- package/dist/3d/entities/controllers/animators/camera-3d.animator.d.ts +1 -1
- package/dist/3d/entities/controllers/animators/camera-3d.animator.js +0 -0
- package/dist/3d/entities/controllers/animators/entity-3d-positioning.animator.d.ts +1 -1
- package/dist/3d/entities/controllers/animators/entity-3d-positioning.animator.js +0 -0
- package/dist/3d/entities/controllers/input/car-keyboard-handling.controller.d.ts +2 -2
- package/dist/3d/entities/controllers/input/car-keyboard-handling.controller.js +3 -3
- package/dist/3d/entities/controllers/input/free-camera.controller.d.ts +1 -1
- package/dist/3d/entities/controllers/input/free-camera.controller.js +0 -0
- package/dist/3d/entities/controllers/input/gg-car-keyboard-handling.controller.d.ts +1 -1
- package/dist/3d/entities/controllers/input/gg-car-keyboard-handling.controller.js +0 -0
- package/dist/3d/entities/controllers/input/orbit-camera.controller.d.ts +1 -1
- package/dist/3d/entities/controllers/input/orbit-camera.controller.js +10 -10
- package/dist/3d/entities/entity-3d.d.ts +0 -0
- package/dist/3d/entities/entity-3d.js +25 -25
- package/dist/3d/entities/gg-car/gg-car.entity.d.ts +1 -1
- package/dist/3d/entities/gg-car/gg-car.entity.js +16 -16
- package/dist/3d/entities/i-renderable-3d.entity.d.ts +3 -1
- package/dist/3d/entities/i-renderable-3d.entity.js +7 -0
- package/dist/3d/entities/map-graph-3d.entity.d.ts +9 -6
- package/dist/3d/entities/map-graph-3d.entity.js +70 -26
- package/dist/3d/entities/raycast-vehicle-3d.entity.d.ts +6 -4
- package/dist/3d/entities/raycast-vehicle-3d.entity.js +44 -30
- package/dist/3d/entities/renderer-3d.entity.d.ts +0 -0
- package/dist/3d/entities/renderer-3d.entity.js +0 -0
- package/dist/3d/entities/trigger-3d.entity.d.ts +0 -0
- package/dist/3d/entities/trigger-3d.entity.js +11 -11
- package/dist/3d/factories.d.ts +1 -1
- package/dist/3d/factories.js +0 -0
- package/dist/3d/gg-3d-world.d.ts +4 -3
- package/dist/3d/gg-3d-world.js +0 -0
- package/dist/3d/index.d.ts +0 -0
- package/dist/3d/index.js +0 -0
- package/dist/3d/interfaces/i-positionable-3d.d.ts +0 -0
- package/dist/3d/interfaces/i-positionable-3d.js +0 -0
- package/dist/3d/loader.d.ts +4 -4
- package/dist/3d/loader.js +7 -7
- package/dist/3d/loaders.d.ts +0 -0
- package/dist/3d/loaders.js +0 -0
- package/dist/3d/models/body-options.d.ts +1 -1
- package/dist/3d/models/body-options.js +0 -0
- package/dist/3d/models/gg-meta.d.ts +4 -4
- package/dist/3d/models/gg-meta.js +0 -0
- package/dist/3d/models/shapes.d.ts +3 -3
- package/dist/3d/models/shapes.js +0 -0
- package/dist/base/clock/global-clock.d.ts +0 -0
- package/dist/base/clock/global-clock.js +8 -8
- package/dist/base/clock/i-clock.d.ts +0 -0
- package/dist/base/clock/i-clock.js +0 -0
- package/dist/base/clock/pausable-clock.d.ts +8 -1
- package/dist/base/clock/pausable-clock.js +38 -23
- package/dist/base/components/i-component.d.ts +0 -0
- package/dist/base/components/i-component.js +0 -0
- package/dist/base/components/i-world-component.d.ts +0 -0
- package/dist/base/components/i-world-component.js +0 -0
- package/dist/base/components/physics/i-body.component.d.ts +0 -0
- package/dist/base/components/physics/i-body.component.js +0 -0
- package/dist/base/components/physics/i-physics-world.component.d.ts +0 -0
- package/dist/base/components/physics/i-physics-world.component.js +0 -0
- package/dist/base/components/physics/i-rigid-body.component.d.ts +0 -0
- package/dist/base/components/physics/i-rigid-body.component.js +0 -0
- package/dist/base/components/physics/i-trigger.component.d.ts +0 -0
- package/dist/base/components/physics/i-trigger.component.js +0 -0
- package/dist/base/components/rendering/i-display-object.component.d.ts +0 -0
- package/dist/base/components/rendering/i-display-object.component.js +0 -0
- package/dist/base/components/rendering/i-renderer.component.d.ts +3 -3
- package/dist/base/components/rendering/i-renderer.component.js +0 -0
- package/dist/base/components/rendering/i-visual-scene.component.d.ts +0 -0
- package/dist/base/components/rendering/i-visual-scene.component.js +0 -0
- package/dist/base/data-structures/bitmask.d.ts +0 -0
- package/dist/base/data-structures/bitmask.js +0 -0
- package/dist/base/data-structures/graph.d.ts +0 -0
- package/dist/base/data-structures/graph.js +4 -4
- package/dist/base/entities/controllers/animation-mixer.d.ts +1 -1
- package/dist/base/entities/controllers/animation-mixer.js +27 -27
- package/dist/base/entities/controllers/inline-controller.d.ts +1 -1
- package/dist/base/entities/controllers/inline-controller.js +4 -1
- package/dist/base/entities/i-entity.d.ts +0 -0
- package/dist/base/entities/i-entity.js +0 -0
- package/dist/base/entities/i-renderable.entity.d.ts +0 -0
- package/dist/base/entities/i-renderable.entity.js +0 -0
- package/dist/base/entities/i-renderer.entity.d.ts +0 -0
- package/dist/base/entities/i-renderer.entity.js +15 -15
- package/dist/base/gg-world.d.ts +11 -5
- package/dist/base/gg-world.js +60 -17
- package/dist/base/index.d.ts +0 -0
- package/dist/base/index.js +0 -0
- package/dist/base/inputs/direction.keyboard.input.d.ts +2 -2
- package/dist/base/inputs/direction.keyboard.input.js +6 -6
- package/dist/base/inputs/i-input.d.ts +0 -0
- package/dist/base/inputs/i-input.js +0 -0
- package/dist/base/inputs/keyboard.input.d.ts +0 -0
- package/dist/base/inputs/keyboard.input.js +0 -0
- package/dist/base/inputs/mouse.input.d.ts +1 -1
- package/dist/base/inputs/mouse.input.js +27 -22
- package/dist/base/interfaces/i-positionable.d.ts +0 -0
- package/dist/base/interfaces/i-positionable.js +0 -0
- package/dist/base/math/box.d.ts +0 -0
- package/dist/base/math/box.js +0 -0
- package/dist/base/math/matrix4.d.ts +0 -0
- package/dist/base/math/matrix4.js +0 -0
- package/dist/base/math/numbers.d.ts +0 -0
- package/dist/base/math/numbers.js +0 -0
- package/dist/base/math/point2.d.ts +0 -0
- package/dist/base/math/point2.js +0 -0
- package/dist/base/math/point3.d.ts +0 -0
- package/dist/base/math/point3.js +0 -0
- package/dist/base/math/quaternion.d.ts +6 -0
- package/dist/base/math/quaternion.js +38 -0
- package/dist/base/math/splines.d.ts +0 -0
- package/dist/base/math/splines.js +0 -0
- package/dist/base/models/axis-directions.d.ts +3 -3
- package/dist/base/models/axis-directions.js +0 -0
- package/dist/base/models/body-options.d.ts +2 -2
- package/dist/base/models/body-options.js +0 -0
- package/dist/base/models/geometry-nodes.d.ts +3 -3
- package/dist/base/models/geometry-nodes.js +0 -0
- package/dist/base/models/points.d.ts +5 -5
- package/dist/base/models/points.js +0 -0
- package/dist/dev/gg-console.ui.d.ts +0 -0
- package/dist/dev/gg-console.ui.js +0 -0
- package/dist/dev/gg-debugger.ui.d.ts +5 -0
- package/dist/dev/gg-debugger.ui.js +129 -8
- package/dist/dev/gg-static.d.ts +0 -0
- package/dist/dev/gg-static.js +49 -41
- package/dist/dev/index.d.ts +1 -0
- package/dist/dev/index.js +1 -0
- package/dist/dev/performance-meter.entity.d.ts +21 -0
- package/dist/dev/performance-meter.entity.js +120 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -0
- package/package.json +7 -7
- 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.
|
|
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.
|
|
36
|
-
"jest": "^29.
|
|
37
|
-
"jest-environment-jsdom": "^29.
|
|
38
|
-
"prettier": "^
|
|
39
|
-
"ts-jest": "^29.
|
|
40
|
-
"typescript": "~
|
|
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
|