@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.
@@ -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';
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9nYW1lcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDhCQUE4QixDQUFDO0FBQzdDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLGlCQUFpQixDQUFDIn0=
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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