@directivegames/genesys.js 3.1.27 → 3.1.29
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/dist/games/index.d.ts +1 -0
- package/dist/games/index.js +2 -1
- package/dist/games/spline-mesh-demo.d.ts +17 -0
- package/dist/games/spline-mesh-demo.js +118 -0
- package/dist/genesys.min.mjs +246 -246
- package/dist/launcher.js +5 -1
- package/dist/src/components/visual/SplineMeshComponent.d.ts +107 -0
- package/dist/src/components/visual/SplineMeshComponent.js +373 -0
- package/dist/src/components/visual/index.d.ts +1 -0
- package/dist/src/components/visual/index.js +2 -1
- package/dist/src/utils/serialization/serializer.js +54 -5
- package/games/index.ts +1 -0
- package/games/spline-mesh-demo.ts +119 -0
- package/package.json +1 -1
- package/src/components/visual/SplineMeshComponent.ts +421 -0
- package/src/components/visual/index.ts +1 -0
- package/src/utils/serialization/serializer.ts +55 -4
package/dist/games/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export * from './performance-test-demo.js';
|
|
|
12
12
|
export * from './postprocess-demo.js';
|
|
13
13
|
export * from './ragdoll-demo-simple.js';
|
|
14
14
|
export * from './ragdoll-demo.js';
|
|
15
|
+
export * from './spline-mesh-demo.js';
|
|
15
16
|
export * from './swipe-tap-demo.js';
|
|
16
17
|
export * from './tween-demo.js';
|
|
17
18
|
export * from './ui-demo.js';
|
package/dist/games/index.js
CHANGED
|
@@ -12,6 +12,7 @@ export * from './performance-test-demo.js';
|
|
|
12
12
|
export * from './postprocess-demo.js';
|
|
13
13
|
export * from './ragdoll-demo-simple.js';
|
|
14
14
|
export * from './ragdoll-demo.js';
|
|
15
|
+
export * from './spline-mesh-demo.js';
|
|
15
16
|
export * from './swipe-tap-demo.js';
|
|
16
17
|
export * from './tween-demo.js';
|
|
17
18
|
export * from './ui-demo.js';
|
|
@@ -19,4 +20,4 @@ export * from './vfx-demo.js';
|
|
|
19
20
|
export * from './vfx-wawa-demo.js';
|
|
20
21
|
export * from './vr-ui-demo-minimal.js';
|
|
21
22
|
export * from './vr-ui-demo.js';
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nYW1lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsaUJBQWlCLENBQUMifQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as ENGINE from '@directivegames/genesys.js';
|
|
2
|
+
/**
|
|
3
|
+
* SplineMeshDemo showcases the SplineMeshComponent.
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates:
|
|
6
|
+
* - Creating a road-like path using control points
|
|
7
|
+
* - Debug visualization of control points and spline curve
|
|
8
|
+
* - UV tiling for texture mapping
|
|
9
|
+
*/
|
|
10
|
+
export declare class SplineMeshDemo extends ENGINE.BaseGameLoop {
|
|
11
|
+
private splineActor;
|
|
12
|
+
private splineComponent;
|
|
13
|
+
protected preStart(): Promise<void>;
|
|
14
|
+
private createRoadPath;
|
|
15
|
+
private createRiverPath;
|
|
16
|
+
destroy(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import * as ENGINE from '@directivegames/genesys.js';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
/**
|
|
4
|
+
* SplineMeshDemo showcases the SplineMeshComponent.
|
|
5
|
+
*
|
|
6
|
+
* Demonstrates:
|
|
7
|
+
* - Creating a road-like path using control points
|
|
8
|
+
* - Debug visualization of control points and spline curve
|
|
9
|
+
* - UV tiling for texture mapping
|
|
10
|
+
*/
|
|
11
|
+
export class SplineMeshDemo extends ENGINE.BaseGameLoop {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
Object.defineProperty(this, "splineActor", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
configurable: true,
|
|
17
|
+
writable: true,
|
|
18
|
+
value: null
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(this, "splineComponent", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: null
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async preStart() {
|
|
28
|
+
// Setup camera
|
|
29
|
+
const { pawn } = ENGINE.GameBuilder.createDefaultPawn(this.world, new THREE.Vector3(0, 15, 20));
|
|
30
|
+
const camera = pawn.getComponent(THREE.Camera);
|
|
31
|
+
camera.position.set(0, 15, 20);
|
|
32
|
+
camera.lookAt(0, 0, 0);
|
|
33
|
+
// Setup lighting
|
|
34
|
+
ENGINE.GameBuilder.createDefaultLighting(this.world);
|
|
35
|
+
// Create ground plane with grass color
|
|
36
|
+
const groundMaterial = new THREE.MeshStandardMaterial({ color: 0x228833 });
|
|
37
|
+
const groundGeometry = new THREE.BoxGeometry(50, 0.1, 50);
|
|
38
|
+
const ground = new ENGINE.Actor({
|
|
39
|
+
rootComponent: new ENGINE.MeshComponent({
|
|
40
|
+
position: new THREE.Vector3(0, -0.1, 0),
|
|
41
|
+
geometry: groundGeometry,
|
|
42
|
+
material: groundMaterial,
|
|
43
|
+
})
|
|
44
|
+
});
|
|
45
|
+
this.world.addActor(ground);
|
|
46
|
+
// Create a winding road path
|
|
47
|
+
this.createRoadPath();
|
|
48
|
+
// Create a river path
|
|
49
|
+
this.createRiverPath();
|
|
50
|
+
}
|
|
51
|
+
createRoadPath() {
|
|
52
|
+
// Define control points for a winding road
|
|
53
|
+
const roadPoints = [
|
|
54
|
+
new THREE.Vector3(-15, 0, -10),
|
|
55
|
+
new THREE.Vector3(-8, 0, -5),
|
|
56
|
+
new THREE.Vector3(-3, 0, 0),
|
|
57
|
+
new THREE.Vector3(0, 0, 5),
|
|
58
|
+
new THREE.Vector3(5, 0, 3),
|
|
59
|
+
new THREE.Vector3(10, 0, -2),
|
|
60
|
+
new THREE.Vector3(15, 0, 0),
|
|
61
|
+
];
|
|
62
|
+
// Create the spline mesh component with a texture
|
|
63
|
+
this.splineComponent = new ENGINE.SplineMeshComponent({
|
|
64
|
+
points: roadPoints,
|
|
65
|
+
width: 3,
|
|
66
|
+
segments: 80,
|
|
67
|
+
tension: 0.3,
|
|
68
|
+
uvScale: 0.5,
|
|
69
|
+
material: '@engine/assets/dev/materials/RoadAsphalt.json',
|
|
70
|
+
showDebug: true, // Enable debug visualization
|
|
71
|
+
});
|
|
72
|
+
// Create actor and add component
|
|
73
|
+
this.splineActor = new ENGINE.Actor();
|
|
74
|
+
this.splineActor.rootComponent.add(this.splineComponent);
|
|
75
|
+
this.world.addActor(this.splineActor);
|
|
76
|
+
}
|
|
77
|
+
createRiverPath() {
|
|
78
|
+
// Define control points for a river
|
|
79
|
+
const riverPoints = [
|
|
80
|
+
new THREE.Vector3(-12, 0.01, 8),
|
|
81
|
+
new THREE.Vector3(-6, 0.01, 12),
|
|
82
|
+
new THREE.Vector3(0, 0.01, 10),
|
|
83
|
+
new THREE.Vector3(6, 0.01, 14),
|
|
84
|
+
new THREE.Vector3(12, 0.01, 12),
|
|
85
|
+
];
|
|
86
|
+
// Create river material with blue color
|
|
87
|
+
const riverMaterial = new THREE.MeshStandardMaterial({
|
|
88
|
+
color: 0x2266aa,
|
|
89
|
+
roughness: 0.2,
|
|
90
|
+
metalness: 0.3,
|
|
91
|
+
transparent: true,
|
|
92
|
+
opacity: 0.8,
|
|
93
|
+
});
|
|
94
|
+
// Create the spline mesh component for river
|
|
95
|
+
const riverComponent = new ENGINE.SplineMeshComponent({
|
|
96
|
+
points: riverPoints,
|
|
97
|
+
width: 2,
|
|
98
|
+
segments: 60,
|
|
99
|
+
tension: 0.5,
|
|
100
|
+
uvScale: 1,
|
|
101
|
+
material: riverMaterial,
|
|
102
|
+
showDebug: true,
|
|
103
|
+
});
|
|
104
|
+
// Create actor and add component
|
|
105
|
+
const riverActor = new ENGINE.Actor();
|
|
106
|
+
riverActor.rootComponent.add(riverComponent);
|
|
107
|
+
this.world.addActor(riverActor);
|
|
108
|
+
}
|
|
109
|
+
destroy() {
|
|
110
|
+
if (this.splineActor) {
|
|
111
|
+
this.splineActor.destroy();
|
|
112
|
+
this.splineActor = null;
|
|
113
|
+
}
|
|
114
|
+
this.splineComponent = null;
|
|
115
|
+
super.destroy();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaW5lLW1lc2gtZGVtby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2dhbWVzL3NwbGluZS1tZXNoLWRlbW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSw0QkFBNEIsQ0FBQztBQUNyRCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUUvQjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxPQUFPLGNBQWUsU0FBUSxNQUFNLENBQUMsWUFBWTtJQUF2RDs7UUFDVTs7OzttQkFBbUMsSUFBSTtXQUFDO1FBQ3hDOzs7O21CQUFxRCxJQUFJO1dBQUM7SUF3R3BFLENBQUM7SUF0R29CLEtBQUssQ0FBQyxRQUFRO1FBQy9CLGVBQWU7UUFDZixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEcsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFFLENBQUM7UUFDaEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkIsaUJBQWlCO1FBQ2pCLE1BQU0sQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJELHVDQUF1QztRQUN2QyxNQUFNLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE1BQU0sY0FBYyxHQUFHLElB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
|