@directivegames/genesys.sdk 3.2.2 → 3.2.4
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 +60 -60
- package/dist/src/core/cli.js +22 -22
- package/dist/src/templates/scripts/genesys/genesys-mcp.js +25 -25
- package/dist/src/templates/scripts/genesys/mcp/editor-functions.js +4 -4
- package/dist/src/templates/src/templates/vehicle/src/ui-hints.js +30 -30
- package/package.json +176 -176
- package/scripts/post-install.ts +143 -143
- package/src/asset-pack/.gitattributes +88 -88
- package/src/asset-pack/eslint.config.js +45 -45
- package/src/asset-pack/gitignore +11 -11
- package/src/asset-pack/scripts/postinstall.ts +81 -81
- package/src/asset-pack/tsconfig.json +33 -33
- package/src/templates/.cursor/mcp.json +20 -20
- package/src/templates/.cursorignore +2 -2
- package/src/templates/.gitattributes +88 -88
- package/src/templates/.vscode/settings.json +6 -6
- package/src/templates/AGENTS.md +86 -86
- package/src/templates/README.md +24 -24
- package/src/templates/eslint.config.js +45 -45
- package/src/templates/gitignore +11 -11
- package/src/templates/index.html +34 -34
- package/src/templates/pnpm-lock.yaml +3676 -3676
- package/src/templates/scripts/genesys/build-project.ts +51 -51
- package/src/templates/scripts/genesys/calc-bounding-box.ts +272 -272
- package/src/templates/scripts/genesys/common.ts +46 -46
- package/src/templates/scripts/genesys/const.ts +9 -9
- package/src/templates/scripts/genesys/dev/dump-default-scene.ts +11 -11
- package/src/templates/scripts/genesys/dev/generate-manifest.ts +146 -146
- package/src/templates/scripts/genesys/dev/launcher.ts +46 -46
- package/src/templates/scripts/genesys/dev/storage-provider.ts +229 -229
- package/src/templates/scripts/genesys/dev/update-template-scenes.ts +84 -84
- package/src/templates/scripts/genesys/doc-server.ts +16 -16
- package/src/templates/scripts/genesys/genesys-mcp.ts +526 -526
- package/src/templates/scripts/genesys/mcp/doc-tools.ts +86 -86
- package/src/templates/scripts/genesys/mcp/editor-functions.ts +151 -151
- package/src/templates/scripts/genesys/mcp/editor-tools.ts +73 -73
- package/src/templates/scripts/genesys/mcp/get-scene-state.ts +35 -35
- package/src/templates/scripts/genesys/mcp/run-subprocess.ts +30 -30
- package/src/templates/scripts/genesys/mcp/search-actors.ts +858 -858
- package/src/templates/scripts/genesys/mcp/search-assets.ts +380 -380
- package/src/templates/scripts/genesys/mcp/utils.ts +281 -281
- package/src/templates/scripts/genesys/misc.ts +42 -42
- package/src/templates/scripts/genesys/mock.ts +6 -6
- package/src/templates/scripts/genesys/place-actors.ts +179 -179
- package/src/templates/scripts/genesys/post-install.ts +30 -30
- package/src/templates/scripts/genesys/prefab.schema.json +84 -84
- package/src/templates/scripts/genesys/remove-engine-comments.ts +134 -134
- package/src/templates/scripts/genesys/run-mcp-inspector.bat +4 -4
- package/src/templates/scripts/genesys/storageProvider.ts +182 -182
- package/src/templates/scripts/genesys/validate-prefabs.ts +138 -138
- package/src/templates/src/index.ts +22 -22
- package/src/templates/src/templates/firstPerson/assets/default.genesys-scene +165 -165
- package/src/templates/src/templates/firstPerson/src/game.ts +39 -39
- package/src/templates/src/templates/firstPerson/src/player.ts +63 -63
- package/src/templates/src/templates/fps/assets/default.genesys-scene +9459 -9459
- package/src/templates/src/templates/fps/src/game.ts +39 -39
- package/src/templates/src/templates/fps/src/player.ts +69 -69
- package/src/templates/src/templates/fps/src/weapon.ts +54 -54
- package/src/templates/src/templates/freeCamera/assets/default.genesys-scene +165 -165
- package/src/templates/src/templates/freeCamera/src/game.ts +39 -39
- package/src/templates/src/templates/freeCamera/src/player.ts +45 -45
- package/src/templates/src/templates/sideScroller/assets/default.genesys-scene +121 -121
- package/src/templates/src/templates/sideScroller/src/const.ts +45 -45
- package/src/templates/src/templates/sideScroller/src/game.ts +122 -122
- package/src/templates/src/templates/sideScroller/src/level-generator.ts +361 -361
- package/src/templates/src/templates/sideScroller/src/player.ts +125 -125
- package/src/templates/src/templates/thirdPerson/assets/default.genesys-scene +165 -165
- package/src/templates/src/templates/thirdPerson/src/game.ts +39 -39
- package/src/templates/src/templates/thirdPerson/src/player.ts +61 -61
- package/src/templates/src/templates/vehicle/assets/default.genesys-scene +225 -225
- package/src/templates/src/templates/vehicle/src/base-vehicle.ts +145 -145
- package/src/templates/src/templates/vehicle/src/game.ts +43 -43
- package/src/templates/src/templates/vehicle/src/mesh-vehicle.ts +191 -191
- package/src/templates/src/templates/vehicle/src/player.ts +109 -109
- package/src/templates/src/templates/vehicle/src/primitive-vehicle.ts +266 -266
- package/src/templates/src/templates/vehicle/src/ui-hints.ts +101 -101
- package/src/templates/src/templates/vr-game/assets/default.genesys-scene +246 -246
- package/src/templates/src/templates/vr-game/src/auto-imports.ts +1 -1
- package/src/templates/src/templates/vr-game/src/game.ts +66 -66
- package/src/templates/src/templates/vr-game/src/sample-vr-actor.ts +26 -26
- package/src/templates/tsconfig.json +34 -34
- package/src/templates/vite.config.ts +52 -52
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
import * as ENGINE from 'genesys.js';
|
|
3
|
-
import * as THREE from 'three';
|
|
4
|
-
|
|
5
|
-
import { FreeCameraPlayer } from './player.js';
|
|
6
|
-
import './auto-imports.js';
|
|
7
|
-
|
|
8
|
-
class MyGame extends ENGINE.BaseGameLoop {
|
|
9
|
-
private pawn: FreeCameraPlayer | null = null;
|
|
10
|
-
private controller: ENGINE.PlayerController | null = null;
|
|
11
|
-
|
|
12
|
-
protected override createLoadingScreen(): ENGINE.ILoadingScreen | null {
|
|
13
|
-
// enable the default loading screen
|
|
14
|
-
return new ENGINE.DefaultLoadingScreen();
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
protected override async preStart(): Promise<void> {
|
|
18
|
-
// default spawn location
|
|
19
|
-
const position = new THREE.Vector3(0, ENGINE.CHARACTER_HEIGHT, 0);
|
|
20
|
-
|
|
21
|
-
// create the pawn with simple movement mechanics
|
|
22
|
-
this.pawn = new FreeCameraPlayer({ position });
|
|
23
|
-
|
|
24
|
-
// create the controller and possess the pawn
|
|
25
|
-
this.controller = new ENGINE.PlayerController();
|
|
26
|
-
this.controller.possess(this.pawn);
|
|
27
|
-
|
|
28
|
-
// add both to the world
|
|
29
|
-
this.world.addActors(this.pawn, this.controller);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export function main(container: HTMLElement, gameId: string): ENGINE.IGameLoop {
|
|
34
|
-
const game = new MyGame(container, {
|
|
35
|
-
...ENGINE.BaseGameLoop.DEFAULT_OPTIONS,
|
|
36
|
-
gameId
|
|
37
|
-
});
|
|
38
|
-
return game;
|
|
39
|
-
}
|
|
1
|
+
|
|
2
|
+
import * as ENGINE from 'genesys.js';
|
|
3
|
+
import * as THREE from 'three';
|
|
4
|
+
|
|
5
|
+
import { FreeCameraPlayer } from './player.js';
|
|
6
|
+
import './auto-imports.js';
|
|
7
|
+
|
|
8
|
+
class MyGame extends ENGINE.BaseGameLoop {
|
|
9
|
+
private pawn: FreeCameraPlayer | null = null;
|
|
10
|
+
private controller: ENGINE.PlayerController | null = null;
|
|
11
|
+
|
|
12
|
+
protected override createLoadingScreen(): ENGINE.ILoadingScreen | null {
|
|
13
|
+
// enable the default loading screen
|
|
14
|
+
return new ENGINE.DefaultLoadingScreen();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
protected override async preStart(): Promise<void> {
|
|
18
|
+
// default spawn location
|
|
19
|
+
const position = new THREE.Vector3(0, ENGINE.CHARACTER_HEIGHT, 0);
|
|
20
|
+
|
|
21
|
+
// create the pawn with simple movement mechanics
|
|
22
|
+
this.pawn = new FreeCameraPlayer({ position });
|
|
23
|
+
|
|
24
|
+
// create the controller and possess the pawn
|
|
25
|
+
this.controller = new ENGINE.PlayerController();
|
|
26
|
+
this.controller.possess(this.pawn);
|
|
27
|
+
|
|
28
|
+
// add both to the world
|
|
29
|
+
this.world.addActors(this.pawn, this.controller);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function main(container: HTMLElement, gameId: string): ENGINE.IGameLoop {
|
|
34
|
+
const game = new MyGame(container, {
|
|
35
|
+
...ENGINE.BaseGameLoop.DEFAULT_OPTIONS,
|
|
36
|
+
gameId
|
|
37
|
+
});
|
|
38
|
+
return game;
|
|
39
|
+
}
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
import * as ENGINE from 'genesys.js';
|
|
2
|
-
import * as THREE from 'three';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Options for the FreeCameraPlayer class.
|
|
7
|
-
* Currently empty, can be extended if needed.
|
|
8
|
-
*/
|
|
9
|
-
export interface FreeCameraPlayerOptions extends ENGINE.PawnOptions {
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* A free camera player class.
|
|
14
|
-
*
|
|
15
|
-
* Key points:
|
|
16
|
-
* - No need to provide movementComponent and camera, they are created internally
|
|
17
|
-
* - The pawn is set to be transient so it's never saved in the level
|
|
18
|
-
* - The directional light follows the player for consistent shadows
|
|
19
|
-
*
|
|
20
|
-
*/
|
|
21
|
-
@ENGINE.GameClass()
|
|
22
|
-
export class FreeCameraPlayer extends ENGINE.Pawn<FreeCameraPlayerOptions> {
|
|
23
|
-
constructor(options: Omit<FreeCameraPlayerOptions, 'camera' | 'movementComponent'>) {
|
|
24
|
-
// simple perspective camera
|
|
25
|
-
const camera = new THREE.PerspectiveCamera(ENGINE.CAMERA_FOV, 1, ENGINE.CAMERA_NEAR, ENGINE.CAMERA_FAR);
|
|
26
|
-
// simple movement component, do not use the character controller
|
|
27
|
-
const movementComponent = new ENGINE.CharacterMovementComponent({
|
|
28
|
-
...ENGINE.CharacterMovementComponent.DEFAULT_OPTIONS,
|
|
29
|
-
// disable the character controller
|
|
30
|
-
characterControllerOptions: null,
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// construct the pawn
|
|
34
|
-
super({
|
|
35
|
-
...options,
|
|
36
|
-
camera,
|
|
37
|
-
movementComponent,
|
|
38
|
-
// make sure the directional light follows the player for consistent shadows
|
|
39
|
-
enableDirectionalLightFollowing: true,
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// set the pawn to be transient so it's never saved in the level
|
|
43
|
-
this.setTransient(true);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
import * as ENGINE from 'genesys.js';
|
|
2
|
+
import * as THREE from 'three';
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Options for the FreeCameraPlayer class.
|
|
7
|
+
* Currently empty, can be extended if needed.
|
|
8
|
+
*/
|
|
9
|
+
export interface FreeCameraPlayerOptions extends ENGINE.PawnOptions {
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A free camera player class.
|
|
14
|
+
*
|
|
15
|
+
* Key points:
|
|
16
|
+
* - No need to provide movementComponent and camera, they are created internally
|
|
17
|
+
* - The pawn is set to be transient so it's never saved in the level
|
|
18
|
+
* - The directional light follows the player for consistent shadows
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
@ENGINE.GameClass()
|
|
22
|
+
export class FreeCameraPlayer extends ENGINE.Pawn<FreeCameraPlayerOptions> {
|
|
23
|
+
constructor(options: Omit<FreeCameraPlayerOptions, 'camera' | 'movementComponent'>) {
|
|
24
|
+
// simple perspective camera
|
|
25
|
+
const camera = new THREE.PerspectiveCamera(ENGINE.CAMERA_FOV, 1, ENGINE.CAMERA_NEAR, ENGINE.CAMERA_FAR);
|
|
26
|
+
// simple movement component, do not use the character controller
|
|
27
|
+
const movementComponent = new ENGINE.CharacterMovementComponent({
|
|
28
|
+
...ENGINE.CharacterMovementComponent.DEFAULT_OPTIONS,
|
|
29
|
+
// disable the character controller
|
|
30
|
+
characterControllerOptions: null,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// construct the pawn
|
|
34
|
+
super({
|
|
35
|
+
...options,
|
|
36
|
+
camera,
|
|
37
|
+
movementComponent,
|
|
38
|
+
// make sure the directional light follows the player for consistent shadows
|
|
39
|
+
enableDirectionalLightFollowing: true,
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// set the pawn to be transient so it's never saved in the level
|
|
43
|
+
this.setTransient(true);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$version": 0,
|
|
3
|
-
"class": "ENGINE.World",
|
|
4
|
-
"uuid": "c0ae85792bc3b946",
|
|
5
|
-
"ctor": {
|
|
6
|
-
"backgroundColor": 3026478,
|
|
7
|
-
"navigationOptions": {
|
|
8
|
-
"engine": "recast-navigation",
|
|
9
|
-
"debug": false,
|
|
10
|
-
"generateOnStartUp": false
|
|
11
|
-
},
|
|
12
|
-
"physicsOptions": {
|
|
13
|
-
"gravity": [
|
|
14
|
-
0,
|
|
15
|
-
-9.81,
|
|
16
|
-
0,
|
|
17
|
-
"v"
|
|
18
|
-
],
|
|
19
|
-
"engine": "rapier"
|
|
20
|
-
},
|
|
21
|
-
"useManifold": true
|
|
22
|
-
},
|
|
23
|
-
"actors": [
|
|
24
|
-
{
|
|
25
|
-
"uuid": "9a86d389088b361c",
|
|
26
|
-
"class": "ENGINE.Actor",
|
|
27
|
-
"properties": {
|
|
28
|
-
"editorData": {
|
|
29
|
-
"displayName": "Directional Light",
|
|
30
|
-
"hidden": false
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
"ctor": {
|
|
34
|
-
"rootComponent": {
|
|
35
|
-
"class": "ENGINE.DirectionalLightComponent",
|
|
36
|
-
"uuid": "cfe05433-9edc-4dfe-a535-c71f33e92d78",
|
|
37
|
-
"ctor": {
|
|
38
|
-
"color": 16777215,
|
|
39
|
-
"intensity": 1,
|
|
40
|
-
"castShadow": true,
|
|
41
|
-
"shadowMapSize": 2048,
|
|
42
|
-
"shadowBias": 0,
|
|
43
|
-
"shadowNormalBias": 0,
|
|
44
|
-
"shadowNear": 0.1,
|
|
45
|
-
"shadowFar": 100
|
|
46
|
-
},
|
|
47
|
-
"properties": {
|
|
48
|
-
"position": [
|
|
49
|
-
10,
|
|
50
|
-
50,
|
|
51
|
-
-10,
|
|
52
|
-
"v"
|
|
53
|
-
],
|
|
54
|
-
"castShadow": true
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
"uuid": "b87cbc5e60a2e54c",
|
|
61
|
-
"class": "ENGINE.PlayerStart",
|
|
62
|
-
"properties": {
|
|
63
|
-
"editorData": {
|
|
64
|
-
"displayName": "Player Start",
|
|
65
|
-
"hidden": false
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"ctor": {
|
|
69
|
-
"rootComponent": {
|
|
70
|
-
"class": "ENGINE.SceneComponent",
|
|
71
|
-
"uuid": "b4d5f8f7-2512-45e1-9157-c7ff6772402d",
|
|
72
|
-
"ctor": {},
|
|
73
|
-
"properties": {
|
|
74
|
-
"position": [
|
|
75
|
-
0,
|
|
76
|
-
0.9,
|
|
77
|
-
0,
|
|
78
|
-
"v"
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
"uuid": "0ba1f4677e8370d1",
|
|
86
|
-
"class": "ENGINE.Actor",
|
|
87
|
-
"properties": {
|
|
88
|
-
"editorData": {
|
|
89
|
-
"displayName": "Skybox",
|
|
90
|
-
"hidden": false
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
"ctor": {
|
|
94
|
-
"rootComponent": {
|
|
95
|
-
"class": "ENGINE.SceneComponent",
|
|
96
|
-
"uuid": "195e88df-73ff-4f4b-82ae-7fb58671463d",
|
|
97
|
-
"ctor": {},
|
|
98
|
-
"properties": {},
|
|
99
|
-
"children": [
|
|
100
|
-
{
|
|
101
|
-
"class": "ENGINE.SkyboxComponent",
|
|
102
|
-
"uuid": "f7e33ae7d5ac74f9",
|
|
103
|
-
"ctor": {
|
|
104
|
-
"textureUrl": "@engine/assets/textures/skybox/citrus_orchard_road_puresky_2k.hdr",
|
|
105
|
-
"width": 2048,
|
|
106
|
-
"height": 1024,
|
|
107
|
-
"bottomColor": "#E6F3FF",
|
|
108
|
-
"middleColor": "#4A90E2",
|
|
109
|
-
"topColor": "#0F1B3C",
|
|
110
|
-
"envMapIntensity": 1
|
|
111
|
-
},
|
|
112
|
-
"properties": {}
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
],
|
|
119
|
-
"properties": {
|
|
120
|
-
"editorData": {}
|
|
121
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$version": 0,
|
|
3
|
+
"class": "ENGINE.World",
|
|
4
|
+
"uuid": "c0ae85792bc3b946",
|
|
5
|
+
"ctor": {
|
|
6
|
+
"backgroundColor": 3026478,
|
|
7
|
+
"navigationOptions": {
|
|
8
|
+
"engine": "recast-navigation",
|
|
9
|
+
"debug": false,
|
|
10
|
+
"generateOnStartUp": false
|
|
11
|
+
},
|
|
12
|
+
"physicsOptions": {
|
|
13
|
+
"gravity": [
|
|
14
|
+
0,
|
|
15
|
+
-9.81,
|
|
16
|
+
0,
|
|
17
|
+
"v"
|
|
18
|
+
],
|
|
19
|
+
"engine": "rapier"
|
|
20
|
+
},
|
|
21
|
+
"useManifold": true
|
|
22
|
+
},
|
|
23
|
+
"actors": [
|
|
24
|
+
{
|
|
25
|
+
"uuid": "9a86d389088b361c",
|
|
26
|
+
"class": "ENGINE.Actor",
|
|
27
|
+
"properties": {
|
|
28
|
+
"editorData": {
|
|
29
|
+
"displayName": "Directional Light",
|
|
30
|
+
"hidden": false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"ctor": {
|
|
34
|
+
"rootComponent": {
|
|
35
|
+
"class": "ENGINE.DirectionalLightComponent",
|
|
36
|
+
"uuid": "cfe05433-9edc-4dfe-a535-c71f33e92d78",
|
|
37
|
+
"ctor": {
|
|
38
|
+
"color": 16777215,
|
|
39
|
+
"intensity": 1,
|
|
40
|
+
"castShadow": true,
|
|
41
|
+
"shadowMapSize": 2048,
|
|
42
|
+
"shadowBias": 0,
|
|
43
|
+
"shadowNormalBias": 0,
|
|
44
|
+
"shadowNear": 0.1,
|
|
45
|
+
"shadowFar": 100
|
|
46
|
+
},
|
|
47
|
+
"properties": {
|
|
48
|
+
"position": [
|
|
49
|
+
10,
|
|
50
|
+
50,
|
|
51
|
+
-10,
|
|
52
|
+
"v"
|
|
53
|
+
],
|
|
54
|
+
"castShadow": true
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"uuid": "b87cbc5e60a2e54c",
|
|
61
|
+
"class": "ENGINE.PlayerStart",
|
|
62
|
+
"properties": {
|
|
63
|
+
"editorData": {
|
|
64
|
+
"displayName": "Player Start",
|
|
65
|
+
"hidden": false
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"ctor": {
|
|
69
|
+
"rootComponent": {
|
|
70
|
+
"class": "ENGINE.SceneComponent",
|
|
71
|
+
"uuid": "b4d5f8f7-2512-45e1-9157-c7ff6772402d",
|
|
72
|
+
"ctor": {},
|
|
73
|
+
"properties": {
|
|
74
|
+
"position": [
|
|
75
|
+
0,
|
|
76
|
+
0.9,
|
|
77
|
+
0,
|
|
78
|
+
"v"
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"uuid": "0ba1f4677e8370d1",
|
|
86
|
+
"class": "ENGINE.Actor",
|
|
87
|
+
"properties": {
|
|
88
|
+
"editorData": {
|
|
89
|
+
"displayName": "Skybox",
|
|
90
|
+
"hidden": false
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"ctor": {
|
|
94
|
+
"rootComponent": {
|
|
95
|
+
"class": "ENGINE.SceneComponent",
|
|
96
|
+
"uuid": "195e88df-73ff-4f4b-82ae-7fb58671463d",
|
|
97
|
+
"ctor": {},
|
|
98
|
+
"properties": {},
|
|
99
|
+
"children": [
|
|
100
|
+
{
|
|
101
|
+
"class": "ENGINE.SkyboxComponent",
|
|
102
|
+
"uuid": "f7e33ae7d5ac74f9",
|
|
103
|
+
"ctor": {
|
|
104
|
+
"textureUrl": "@engine/assets/textures/skybox/citrus_orchard_road_puresky_2k.hdr",
|
|
105
|
+
"width": 2048,
|
|
106
|
+
"height": 1024,
|
|
107
|
+
"bottomColor": "#E6F3FF",
|
|
108
|
+
"middleColor": "#4A90E2",
|
|
109
|
+
"topColor": "#0F1B3C",
|
|
110
|
+
"envMapIntensity": 1
|
|
111
|
+
},
|
|
112
|
+
"properties": {}
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"properties": {
|
|
120
|
+
"editorData": {}
|
|
121
|
+
}
|
|
122
122
|
}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
// Player Movement Configuration
|
|
2
|
-
export const PLAYER_MOVEMENT = {
|
|
3
|
-
JUMP_SPEED: 20,
|
|
4
|
-
MAX_SPEED: 8,
|
|
5
|
-
MAX_MID_AIR_JUMPS: 1,
|
|
6
|
-
ACCELERATION_LAMBDA: 15,
|
|
7
|
-
DECELERATION_LAMBDA: 10,
|
|
8
|
-
MID_AIR_ACCELERATION_LAMBDA: 8,
|
|
9
|
-
MID_AIR_DECELERATION_LAMBDA: 2,
|
|
10
|
-
} as const;
|
|
11
|
-
|
|
12
|
-
// Camera Settings
|
|
13
|
-
export const CAMERA_SETTINGS = {
|
|
14
|
-
FOV: 60,
|
|
15
|
-
NEAR: 0.1,
|
|
16
|
-
FAR: 1000,
|
|
17
|
-
DAMP_FACTOR: 10,
|
|
18
|
-
POSITION: { x: 0, y: 1, z: 8 },
|
|
19
|
-
LOOK_AT: { x: 0, y: 0, z: 0 },
|
|
20
|
-
} as const;
|
|
21
|
-
|
|
22
|
-
// Level Generation Configuration
|
|
23
|
-
export const LEVEL_CONFIG = {
|
|
24
|
-
DEPTH: 3,
|
|
25
|
-
CHUNK_SIZE: 50,
|
|
26
|
-
CHUNKS_AHEAD: 2,
|
|
27
|
-
CHUNKS_BEHIND: 2,
|
|
28
|
-
PLATFORM_HEIGHT_RANGE: { min: 1, max: 2 },
|
|
29
|
-
PLATFORM_WIDTH_RANGE: { min: 3, max: 6 },
|
|
30
|
-
OBSTACLE_HEIGHT_RANGE: { min: 3, max: 6 },
|
|
31
|
-
OBSTACLE_WIDTH_RANGE: { min: 1.5, max: 3.0 },
|
|
32
|
-
CHUNK_MARGIN: 0,
|
|
33
|
-
MIN_SPACING: 4,
|
|
34
|
-
DEBUG_VISUALIZATION_HEIGHT: 6,
|
|
35
|
-
DEBUG_VISUALIZATION_OPACITY: 0.3,
|
|
36
|
-
DEBUG_VISUALIZATION_COLOR: 0x00ff00,
|
|
37
|
-
GROUND_HEIGHT: 0.1,
|
|
38
|
-
GROUND_Y_POSITION: -0.05,
|
|
39
|
-
} as const;
|
|
40
|
-
|
|
41
|
-
// Material colors
|
|
42
|
-
export const COLORS = {
|
|
43
|
-
PLATFORM: 0x90ee90, // Light green
|
|
44
|
-
OBSTACLE: 0xff4444, // Red
|
|
45
|
-
GROUND: 0x8b4513, // Brown
|
|
1
|
+
// Player Movement Configuration
|
|
2
|
+
export const PLAYER_MOVEMENT = {
|
|
3
|
+
JUMP_SPEED: 20,
|
|
4
|
+
MAX_SPEED: 8,
|
|
5
|
+
MAX_MID_AIR_JUMPS: 1,
|
|
6
|
+
ACCELERATION_LAMBDA: 15,
|
|
7
|
+
DECELERATION_LAMBDA: 10,
|
|
8
|
+
MID_AIR_ACCELERATION_LAMBDA: 8,
|
|
9
|
+
MID_AIR_DECELERATION_LAMBDA: 2,
|
|
10
|
+
} as const;
|
|
11
|
+
|
|
12
|
+
// Camera Settings
|
|
13
|
+
export const CAMERA_SETTINGS = {
|
|
14
|
+
FOV: 60,
|
|
15
|
+
NEAR: 0.1,
|
|
16
|
+
FAR: 1000,
|
|
17
|
+
DAMP_FACTOR: 10,
|
|
18
|
+
POSITION: { x: 0, y: 1, z: 8 },
|
|
19
|
+
LOOK_AT: { x: 0, y: 0, z: 0 },
|
|
20
|
+
} as const;
|
|
21
|
+
|
|
22
|
+
// Level Generation Configuration
|
|
23
|
+
export const LEVEL_CONFIG = {
|
|
24
|
+
DEPTH: 3,
|
|
25
|
+
CHUNK_SIZE: 50,
|
|
26
|
+
CHUNKS_AHEAD: 2,
|
|
27
|
+
CHUNKS_BEHIND: 2,
|
|
28
|
+
PLATFORM_HEIGHT_RANGE: { min: 1, max: 2 },
|
|
29
|
+
PLATFORM_WIDTH_RANGE: { min: 3, max: 6 },
|
|
30
|
+
OBSTACLE_HEIGHT_RANGE: { min: 3, max: 6 },
|
|
31
|
+
OBSTACLE_WIDTH_RANGE: { min: 1.5, max: 3.0 },
|
|
32
|
+
CHUNK_MARGIN: 0,
|
|
33
|
+
MIN_SPACING: 4,
|
|
34
|
+
DEBUG_VISUALIZATION_HEIGHT: 6,
|
|
35
|
+
DEBUG_VISUALIZATION_OPACITY: 0.3,
|
|
36
|
+
DEBUG_VISUALIZATION_COLOR: 0x00ff00,
|
|
37
|
+
GROUND_HEIGHT: 0.1,
|
|
38
|
+
GROUND_Y_POSITION: -0.05,
|
|
39
|
+
} as const;
|
|
40
|
+
|
|
41
|
+
// Material colors
|
|
42
|
+
export const COLORS = {
|
|
43
|
+
PLATFORM: 0x90ee90, // Light green
|
|
44
|
+
OBSTACLE: 0xff4444, // Red
|
|
45
|
+
GROUND: 0x8b4513, // Brown
|
|
46
46
|
} as const;
|