@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.
Files changed (82) hide show
  1. package/README.md +60 -60
  2. package/dist/src/core/cli.js +22 -22
  3. package/dist/src/templates/scripts/genesys/genesys-mcp.js +25 -25
  4. package/dist/src/templates/scripts/genesys/mcp/editor-functions.js +4 -4
  5. package/dist/src/templates/src/templates/vehicle/src/ui-hints.js +30 -30
  6. package/package.json +176 -176
  7. package/scripts/post-install.ts +143 -143
  8. package/src/asset-pack/.gitattributes +88 -88
  9. package/src/asset-pack/eslint.config.js +45 -45
  10. package/src/asset-pack/gitignore +11 -11
  11. package/src/asset-pack/scripts/postinstall.ts +81 -81
  12. package/src/asset-pack/tsconfig.json +33 -33
  13. package/src/templates/.cursor/mcp.json +20 -20
  14. package/src/templates/.cursorignore +2 -2
  15. package/src/templates/.gitattributes +88 -88
  16. package/src/templates/.vscode/settings.json +6 -6
  17. package/src/templates/AGENTS.md +86 -86
  18. package/src/templates/README.md +24 -24
  19. package/src/templates/eslint.config.js +45 -45
  20. package/src/templates/gitignore +11 -11
  21. package/src/templates/index.html +34 -34
  22. package/src/templates/pnpm-lock.yaml +3676 -3676
  23. package/src/templates/scripts/genesys/build-project.ts +51 -51
  24. package/src/templates/scripts/genesys/calc-bounding-box.ts +272 -272
  25. package/src/templates/scripts/genesys/common.ts +46 -46
  26. package/src/templates/scripts/genesys/const.ts +9 -9
  27. package/src/templates/scripts/genesys/dev/dump-default-scene.ts +11 -11
  28. package/src/templates/scripts/genesys/dev/generate-manifest.ts +146 -146
  29. package/src/templates/scripts/genesys/dev/launcher.ts +46 -46
  30. package/src/templates/scripts/genesys/dev/storage-provider.ts +229 -229
  31. package/src/templates/scripts/genesys/dev/update-template-scenes.ts +84 -84
  32. package/src/templates/scripts/genesys/doc-server.ts +16 -16
  33. package/src/templates/scripts/genesys/genesys-mcp.ts +526 -526
  34. package/src/templates/scripts/genesys/mcp/doc-tools.ts +86 -86
  35. package/src/templates/scripts/genesys/mcp/editor-functions.ts +151 -151
  36. package/src/templates/scripts/genesys/mcp/editor-tools.ts +73 -73
  37. package/src/templates/scripts/genesys/mcp/get-scene-state.ts +35 -35
  38. package/src/templates/scripts/genesys/mcp/run-subprocess.ts +30 -30
  39. package/src/templates/scripts/genesys/mcp/search-actors.ts +858 -858
  40. package/src/templates/scripts/genesys/mcp/search-assets.ts +380 -380
  41. package/src/templates/scripts/genesys/mcp/utils.ts +281 -281
  42. package/src/templates/scripts/genesys/misc.ts +42 -42
  43. package/src/templates/scripts/genesys/mock.ts +6 -6
  44. package/src/templates/scripts/genesys/place-actors.ts +179 -179
  45. package/src/templates/scripts/genesys/post-install.ts +30 -30
  46. package/src/templates/scripts/genesys/prefab.schema.json +84 -84
  47. package/src/templates/scripts/genesys/remove-engine-comments.ts +134 -134
  48. package/src/templates/scripts/genesys/run-mcp-inspector.bat +4 -4
  49. package/src/templates/scripts/genesys/storageProvider.ts +182 -182
  50. package/src/templates/scripts/genesys/validate-prefabs.ts +138 -138
  51. package/src/templates/src/index.ts +22 -22
  52. package/src/templates/src/templates/firstPerson/assets/default.genesys-scene +165 -165
  53. package/src/templates/src/templates/firstPerson/src/game.ts +39 -39
  54. package/src/templates/src/templates/firstPerson/src/player.ts +63 -63
  55. package/src/templates/src/templates/fps/assets/default.genesys-scene +9459 -9459
  56. package/src/templates/src/templates/fps/src/game.ts +39 -39
  57. package/src/templates/src/templates/fps/src/player.ts +69 -69
  58. package/src/templates/src/templates/fps/src/weapon.ts +54 -54
  59. package/src/templates/src/templates/freeCamera/assets/default.genesys-scene +165 -165
  60. package/src/templates/src/templates/freeCamera/src/game.ts +39 -39
  61. package/src/templates/src/templates/freeCamera/src/player.ts +45 -45
  62. package/src/templates/src/templates/sideScroller/assets/default.genesys-scene +121 -121
  63. package/src/templates/src/templates/sideScroller/src/const.ts +45 -45
  64. package/src/templates/src/templates/sideScroller/src/game.ts +122 -122
  65. package/src/templates/src/templates/sideScroller/src/level-generator.ts +361 -361
  66. package/src/templates/src/templates/sideScroller/src/player.ts +125 -125
  67. package/src/templates/src/templates/thirdPerson/assets/default.genesys-scene +165 -165
  68. package/src/templates/src/templates/thirdPerson/src/game.ts +39 -39
  69. package/src/templates/src/templates/thirdPerson/src/player.ts +61 -61
  70. package/src/templates/src/templates/vehicle/assets/default.genesys-scene +225 -225
  71. package/src/templates/src/templates/vehicle/src/base-vehicle.ts +145 -145
  72. package/src/templates/src/templates/vehicle/src/game.ts +43 -43
  73. package/src/templates/src/templates/vehicle/src/mesh-vehicle.ts +191 -191
  74. package/src/templates/src/templates/vehicle/src/player.ts +109 -109
  75. package/src/templates/src/templates/vehicle/src/primitive-vehicle.ts +266 -266
  76. package/src/templates/src/templates/vehicle/src/ui-hints.ts +101 -101
  77. package/src/templates/src/templates/vr-game/assets/default.genesys-scene +246 -246
  78. package/src/templates/src/templates/vr-game/src/auto-imports.ts +1 -1
  79. package/src/templates/src/templates/vr-game/src/game.ts +66 -66
  80. package/src/templates/src/templates/vr-game/src/sample-vr-actor.ts +26 -26
  81. package/src/templates/tsconfig.json +34 -34
  82. 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 { FirstPersonPlayer } from './player.js';
6
- import './auto-imports.js';
7
-
8
- class FirstPersonGame extends ENGINE.BaseGameLoop {
9
- private pawn: FirstPersonPlayer | 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 / 2, 0);
20
-
21
- // now create the pawn
22
- this.pawn = new FirstPersonPlayer({ 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 FirstPersonGame(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 { FirstPersonPlayer } from './player.js';
6
+ import './auto-imports.js';
7
+
8
+ class FirstPersonGame extends ENGINE.BaseGameLoop {
9
+ private pawn: FirstPersonPlayer | 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 / 2, 0);
20
+
21
+ // now create the pawn
22
+ this.pawn = new FirstPersonPlayer({ 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 FirstPersonGame(container, {
35
+ ...ENGINE.BaseGameLoop.DEFAULT_OPTIONS,
36
+ gameId
37
+ });
38
+ return game;
39
+ }
@@ -1,63 +1,63 @@
1
- import * as ENGINE from 'genesys.js';
2
- import * as THREE from 'three';
3
-
4
- /**
5
- * Options for the FirstPersonPlayer class.
6
- * Currently empty, can be extended if needed.
7
- */
8
- export interface FirstPersonPlayerOptions extends ENGINE.PawnOptions {
9
- }
10
-
11
- /**
12
- * A first person player class.
13
- *
14
- * Key points:
15
- * - No need to provide movementComponent and camera, they are created internally
16
- * - The pawn is set to be transient so it's never saved in the level
17
- * - The directional light follows the player for consistent shadows
18
- *
19
- */
20
- @ENGINE.GameClass()
21
- export class FirstPersonPlayer extends ENGINE.Pawn<FirstPersonPlayerOptions> {
22
- // No need to provide rootComponent, movementComponent and camera, they are created internally
23
- constructor(options: Omit<FirstPersonPlayerOptions, 'rootComponent' | 'movementComponent' | 'camera'>) {
24
- // simple camera component - contains a perspective camera by default
25
- const camera = new THREE.PerspectiveCamera(ENGINE.CAMERA_FOV, 1, ENGINE.CAMERA_NEAR, ENGINE.CAMERA_FAR);
26
- // set proper camera height for first person view
27
- camera.position.set(0, ENGINE.CHARACTER_HEIGHT * 0.4, 0);
28
-
29
- // use a simple capsule geometry as the root component
30
- const rootComponent = new ENGINE.MeshComponent({
31
- geometry: ENGINE.GameBuilder.createDefaultPawnCapsuleGeometry(),
32
- material: new THREE.MeshStandardMaterial({ color: ENGINE.Color.YELLOW }),
33
- physicsOptions: {
34
- enabled: true,
35
- // KinematicVelocityBased is required to use the physics character controller
36
- motionType: ENGINE.PhysicsMotionType.KinematicVelocityBased,
37
- collisionProfile: ENGINE.DefaultCollisionProfile.Pawn,
38
- generateCollisionEvents: true,
39
- }
40
- });
41
- // hide the mesh in first person view
42
- rootComponent.getMesh().visible = false;
43
-
44
- // create the movement component
45
- const movementComponent = new ENGINE.CharacterMovementComponent({
46
- ...ENGINE.CharacterMovementComponent.DEFAULT_OPTIONS,
47
- movementType: ENGINE.CharacterMovementType.FirstPerson,
48
- });
49
-
50
- // construct the pawn
51
- super({
52
- ...options,
53
- rootComponent,
54
- movementComponent,
55
- // make sure the directional light follows the player for consistent shadows
56
- enableDirectionalLightFollowing: true,
57
- camera,
58
- });
59
-
60
- // set the pawn to be transient so it's never saved in the level
61
- this.setTransient(true);
62
- }
63
- }
1
+ import * as ENGINE from 'genesys.js';
2
+ import * as THREE from 'three';
3
+
4
+ /**
5
+ * Options for the FirstPersonPlayer class.
6
+ * Currently empty, can be extended if needed.
7
+ */
8
+ export interface FirstPersonPlayerOptions extends ENGINE.PawnOptions {
9
+ }
10
+
11
+ /**
12
+ * A first person player class.
13
+ *
14
+ * Key points:
15
+ * - No need to provide movementComponent and camera, they are created internally
16
+ * - The pawn is set to be transient so it's never saved in the level
17
+ * - The directional light follows the player for consistent shadows
18
+ *
19
+ */
20
+ @ENGINE.GameClass()
21
+ export class FirstPersonPlayer extends ENGINE.Pawn<FirstPersonPlayerOptions> {
22
+ // No need to provide rootComponent, movementComponent and camera, they are created internally
23
+ constructor(options: Omit<FirstPersonPlayerOptions, 'rootComponent' | 'movementComponent' | 'camera'>) {
24
+ // simple camera component - contains a perspective camera by default
25
+ const camera = new THREE.PerspectiveCamera(ENGINE.CAMERA_FOV, 1, ENGINE.CAMERA_NEAR, ENGINE.CAMERA_FAR);
26
+ // set proper camera height for first person view
27
+ camera.position.set(0, ENGINE.CHARACTER_HEIGHT * 0.4, 0);
28
+
29
+ // use a simple capsule geometry as the root component
30
+ const rootComponent = new ENGINE.MeshComponent({
31
+ geometry: ENGINE.GameBuilder.createDefaultPawnCapsuleGeometry(),
32
+ material: new THREE.MeshStandardMaterial({ color: ENGINE.Color.YELLOW }),
33
+ physicsOptions: {
34
+ enabled: true,
35
+ // KinematicVelocityBased is required to use the physics character controller
36
+ motionType: ENGINE.PhysicsMotionType.KinematicVelocityBased,
37
+ collisionProfile: ENGINE.DefaultCollisionProfile.Pawn,
38
+ generateCollisionEvents: true,
39
+ }
40
+ });
41
+ // hide the mesh in first person view
42
+ rootComponent.getMesh().visible = false;
43
+
44
+ // create the movement component
45
+ const movementComponent = new ENGINE.CharacterMovementComponent({
46
+ ...ENGINE.CharacterMovementComponent.DEFAULT_OPTIONS,
47
+ movementType: ENGINE.CharacterMovementType.FirstPerson,
48
+ });
49
+
50
+ // construct the pawn
51
+ super({
52
+ ...options,
53
+ rootComponent,
54
+ movementComponent,
55
+ // make sure the directional light follows the player for consistent shadows
56
+ enableDirectionalLightFollowing: true,
57
+ camera,
58
+ });
59
+
60
+ // set the pawn to be transient so it's never saved in the level
61
+ this.setTransient(true);
62
+ }
63
+ }