@directivegames/genesys.sdk 3.2.2 → 3.2.5

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 (125) hide show
  1. package/README.md +60 -60
  2. package/dist/src/asset-pack/eslint.config.js +4 -4
  3. package/dist/src/core/cli.js +22 -22
  4. package/dist/src/core/common.js +2 -2
  5. package/dist/src/core/tools/build-project.js +1 -1
  6. package/dist/src/core/tools/new-asset-pack.js +1 -1
  7. package/dist/src/core/tools/new-project.js +1 -1
  8. package/dist/src/dependencies.js +1 -1
  9. package/dist/src/electron/backend/tools/const.js +1 -1
  10. package/dist/src/electron/backend/tools/open-project.js +1 -1
  11. package/dist/src/templates/eslint.config.js +4 -4
  12. package/dist/src/templates/scripts/genesys/calc-bounding-box.js +2 -2
  13. package/dist/src/templates/scripts/genesys/dev/dump-default-scene.js +1 -1
  14. package/dist/src/templates/scripts/genesys/dev/generate-manifest.js +1 -1
  15. package/dist/src/templates/scripts/genesys/dev/launcher.js +1 -1
  16. package/dist/src/templates/scripts/genesys/dev/storage-provider.js +4 -4
  17. package/dist/src/templates/scripts/genesys/genesys-mcp.js +26 -26
  18. package/dist/src/templates/scripts/genesys/mcp/doc-tools.js +2 -2
  19. package/dist/src/templates/scripts/genesys/mcp/editor-functions.js +5 -5
  20. package/dist/src/templates/scripts/genesys/mcp/search-actors.js +1 -1
  21. package/dist/src/templates/scripts/genesys/mcp/search-assets.js +1 -1
  22. package/dist/src/templates/scripts/genesys/mcp/utils.js +1 -1
  23. package/dist/src/templates/scripts/genesys/misc.js +1 -1
  24. package/dist/src/templates/scripts/genesys/mock.js +1 -1
  25. package/dist/src/templates/scripts/genesys/place-actors.js +1 -1
  26. package/dist/src/templates/scripts/genesys/post-install.js +1 -1
  27. package/dist/src/templates/scripts/genesys/storageProvider.js +2 -2
  28. package/dist/src/templates/src/index.js +1 -1
  29. package/dist/src/templates/src/templates/firstPerson/src/game.js +1 -1
  30. package/dist/src/templates/src/templates/firstPerson/src/player.js +1 -1
  31. package/dist/src/templates/src/templates/fps/src/game.js +1 -1
  32. package/dist/src/templates/src/templates/fps/src/player.js +1 -1
  33. package/dist/src/templates/src/templates/fps/src/weapon.js +1 -1
  34. package/dist/src/templates/src/templates/freeCamera/src/game.js +1 -1
  35. package/dist/src/templates/src/templates/freeCamera/src/player.js +1 -1
  36. package/dist/src/templates/src/templates/sideScroller/src/game.js +1 -1
  37. package/dist/src/templates/src/templates/sideScroller/src/level-generator.js +1 -1
  38. package/dist/src/templates/src/templates/sideScroller/src/player.js +1 -1
  39. package/dist/src/templates/src/templates/thirdPerson/src/game.js +1 -1
  40. package/dist/src/templates/src/templates/thirdPerson/src/player.js +1 -1
  41. package/dist/src/templates/src/templates/vehicle/src/base-vehicle.js +1 -1
  42. package/dist/src/templates/src/templates/vehicle/src/game.js +1 -1
  43. package/dist/src/templates/src/templates/vehicle/src/mesh-vehicle.js +1 -1
  44. package/dist/src/templates/src/templates/vehicle/src/player.js +1 -1
  45. package/dist/src/templates/src/templates/vehicle/src/primitive-vehicle.js +1 -1
  46. package/dist/src/templates/src/templates/vehicle/src/ui-hints.js +31 -31
  47. package/dist/src/templates/src/templates/vr-game/src/game.js +1 -1
  48. package/dist/src/templates/src/templates/vr-game/src/sample-vr-actor.js +1 -1
  49. package/package.json +176 -176
  50. package/scripts/post-install.ts +143 -143
  51. package/src/asset-pack/.gitattributes +88 -88
  52. package/src/asset-pack/eslint.config.js +45 -45
  53. package/src/asset-pack/gitignore +11 -11
  54. package/src/asset-pack/scripts/postinstall.ts +81 -81
  55. package/src/asset-pack/tsconfig.json +33 -33
  56. package/src/templates/.cursor/mcp.json +20 -20
  57. package/src/templates/.cursorignore +2 -2
  58. package/src/templates/.gitattributes +88 -88
  59. package/src/templates/.vscode/settings.json +6 -6
  60. package/src/templates/AGENTS.md +86 -86
  61. package/src/templates/README.md +24 -24
  62. package/src/templates/eslint.config.js +45 -45
  63. package/src/templates/gitignore +11 -11
  64. package/src/templates/index.html +34 -34
  65. package/src/templates/pnpm-lock.yaml +3676 -3676
  66. package/src/templates/scripts/genesys/build-project.ts +51 -51
  67. package/src/templates/scripts/genesys/calc-bounding-box.ts +272 -272
  68. package/src/templates/scripts/genesys/common.ts +46 -46
  69. package/src/templates/scripts/genesys/const.ts +9 -9
  70. package/src/templates/scripts/genesys/dev/dump-default-scene.ts +11 -11
  71. package/src/templates/scripts/genesys/dev/generate-manifest.ts +146 -146
  72. package/src/templates/scripts/genesys/dev/launcher.ts +46 -46
  73. package/src/templates/scripts/genesys/dev/storage-provider.ts +229 -229
  74. package/src/templates/scripts/genesys/dev/update-template-scenes.ts +84 -84
  75. package/src/templates/scripts/genesys/doc-server.ts +16 -16
  76. package/src/templates/scripts/genesys/genesys-mcp.ts +526 -526
  77. package/src/templates/scripts/genesys/mcp/doc-tools.ts +86 -86
  78. package/src/templates/scripts/genesys/mcp/editor-functions.ts +151 -151
  79. package/src/templates/scripts/genesys/mcp/editor-tools.ts +73 -73
  80. package/src/templates/scripts/genesys/mcp/get-scene-state.ts +35 -35
  81. package/src/templates/scripts/genesys/mcp/run-subprocess.ts +30 -30
  82. package/src/templates/scripts/genesys/mcp/search-actors.ts +858 -858
  83. package/src/templates/scripts/genesys/mcp/search-assets.ts +380 -380
  84. package/src/templates/scripts/genesys/mcp/utils.ts +281 -281
  85. package/src/templates/scripts/genesys/misc.ts +42 -42
  86. package/src/templates/scripts/genesys/mock.ts +6 -6
  87. package/src/templates/scripts/genesys/place-actors.ts +179 -179
  88. package/src/templates/scripts/genesys/post-install.ts +30 -30
  89. package/src/templates/scripts/genesys/prefab.schema.json +84 -84
  90. package/src/templates/scripts/genesys/remove-engine-comments.ts +134 -134
  91. package/src/templates/scripts/genesys/run-mcp-inspector.bat +4 -4
  92. package/src/templates/scripts/genesys/storageProvider.ts +182 -182
  93. package/src/templates/scripts/genesys/validate-prefabs.ts +138 -138
  94. package/src/templates/src/index.ts +22 -22
  95. package/src/templates/src/templates/firstPerson/assets/default.genesys-scene +165 -165
  96. package/src/templates/src/templates/firstPerson/src/game.ts +39 -39
  97. package/src/templates/src/templates/firstPerson/src/player.ts +63 -63
  98. package/src/templates/src/templates/fps/assets/default.genesys-scene +9459 -9459
  99. package/src/templates/src/templates/fps/src/game.ts +39 -39
  100. package/src/templates/src/templates/fps/src/player.ts +69 -69
  101. package/src/templates/src/templates/fps/src/weapon.ts +54 -54
  102. package/src/templates/src/templates/freeCamera/assets/default.genesys-scene +165 -165
  103. package/src/templates/src/templates/freeCamera/src/game.ts +39 -39
  104. package/src/templates/src/templates/freeCamera/src/player.ts +45 -45
  105. package/src/templates/src/templates/sideScroller/assets/default.genesys-scene +121 -121
  106. package/src/templates/src/templates/sideScroller/src/const.ts +45 -45
  107. package/src/templates/src/templates/sideScroller/src/game.ts +122 -122
  108. package/src/templates/src/templates/sideScroller/src/level-generator.ts +361 -361
  109. package/src/templates/src/templates/sideScroller/src/player.ts +125 -125
  110. package/src/templates/src/templates/thirdPerson/assets/default.genesys-scene +165 -165
  111. package/src/templates/src/templates/thirdPerson/src/game.ts +39 -39
  112. package/src/templates/src/templates/thirdPerson/src/player.ts +61 -61
  113. package/src/templates/src/templates/vehicle/assets/default.genesys-scene +225 -225
  114. package/src/templates/src/templates/vehicle/src/base-vehicle.ts +145 -145
  115. package/src/templates/src/templates/vehicle/src/game.ts +43 -43
  116. package/src/templates/src/templates/vehicle/src/mesh-vehicle.ts +191 -191
  117. package/src/templates/src/templates/vehicle/src/player.ts +109 -109
  118. package/src/templates/src/templates/vehicle/src/primitive-vehicle.ts +266 -266
  119. package/src/templates/src/templates/vehicle/src/ui-hints.ts +101 -101
  120. package/src/templates/src/templates/vr-game/assets/default.genesys-scene +246 -246
  121. package/src/templates/src/templates/vr-game/src/auto-imports.ts +1 -1
  122. package/src/templates/src/templates/vr-game/src/game.ts +66 -66
  123. package/src/templates/src/templates/vr-game/src/sample-vr-actor.ts +26 -26
  124. package/src/templates/tsconfig.json +34 -34
  125. package/src/templates/vite.config.ts +52 -52
@@ -1,122 +1,122 @@
1
-
2
- import * as ENGINE from 'genesys.js';
3
- import * as THREE from 'three';
4
- import './auto-imports.js';
5
-
6
- import { SideScrollerLevelGenerator } from './level-generator.js';
7
- import { SideScrollerPlayer } from './player.js';
8
-
9
- // ============================================================================
10
- // SIDE SCROLLER GAME
11
- // ============================================================================
12
-
13
- // A side-scroller game with animated character and infinite level generation
14
- class SideScrollerGame extends ENGINE.BaseGameLoop {
15
- private player: SideScrollerPlayer | null = null;
16
- private playerController: ENGINE.PlayerController | null = null;
17
- private levelGenerator: SideScrollerLevelGenerator | null = null;
18
-
19
- protected override createLoadingScreen(): ENGINE.ILoadingScreen | null {
20
- // enable the default loading screen
21
- return new ENGINE.DefaultLoadingScreen();
22
- }
23
-
24
- protected override async preStart(): Promise<void> {
25
- this.createLevel();
26
- this.createPlayer();
27
- }
28
-
29
- protected override tick(tickTime: ENGINE.TickTime): void {
30
- super.tick(tickTime);
31
-
32
- // Update level generation based on player position
33
- if (this.player && this.levelGenerator) {
34
- const playerPosition = this.player.getWorldPosition();
35
- this.levelGenerator.updateLevel(playerPosition.x);
36
- }
37
- }
38
-
39
- private createPlayer(): void {
40
- const spawnX = 1;
41
- // Create the side-scroller player with animated character
42
- this.player = new SideScrollerPlayer({
43
- position: new THREE.Vector3(spawnX, ENGINE.CHARACTER_HEIGHT / 2, 0),
44
- });
45
-
46
- // Create the controller and possess the player
47
- this.playerController = new ENGINE.PlayerController();
48
- this.playerController.possess(this.player);
49
-
50
- // Add both to the world
51
- this.world.addActors(this.player, this.playerController);
52
- this.setInitialPlayerPosition(spawnX);
53
- }
54
-
55
- /**
56
- * Sets the initial position of the player.
57
- * @param spawnX - The X coordinate to spawn the player at.
58
- */
59
- private setInitialPlayerPosition(spawnX: number): void {
60
- const groundHeight = this.findGroundHeightAtX(spawnX);
61
- if (groundHeight !== null) {
62
- this.player?.setWorldPosition(new THREE.Vector3(spawnX, groundHeight + ENGINE.CHARACTER_HEIGHT / 2, 0));
63
- } else {
64
- this.world.runInNextTick(() => {
65
- this.setInitialPlayerPosition(spawnX);
66
- });
67
- }
68
- }
69
-
70
- /**
71
- * Performs a hit test to find the ground height at a given X coordinate
72
- * @param x - The X coordinate to test
73
- * @returns The Y coordinate of the ground surface, or 0 if no ground is found
74
- */
75
- private findGroundHeightAtX(x: number): number | null {
76
- // Start from a high position and cast downward
77
- const rayOrigin = new THREE.Vector3(x, 50, 0);
78
- const rayDirection = new THREE.Vector3(0, -1, 0); // Downward
79
-
80
- const hitResults = this.world.getPhysicsEngine()?.performHitTest({
81
- origin: rayOrigin,
82
- direction: rayDirection,
83
- maxDistance: 100, // Cast ray down 100 units
84
- stopOnFirstHit: true,
85
- });
86
-
87
- if (hitResults && hitResults.length > 0) {
88
- // Return the Y coordinate of the hit location (top surface of ground)
89
- return hitResults[0].hitLocation.y;
90
- }
91
-
92
- return null;
93
- }
94
-
95
- private createLevel(): void {
96
- // Create the level generator
97
- this.levelGenerator = new SideScrollerLevelGenerator(this.world, {
98
- enableDebugVisualization: false,
99
- createGroundMesh: true
100
- });
101
-
102
- // Generate initial level chunks
103
- this.levelGenerator.updateLevel(0);
104
- }
105
-
106
- public override destroy(): void {
107
- // Clean up level generator
108
- if (this.levelGenerator) {
109
- this.levelGenerator.cleanup();
110
- this.levelGenerator = null;
111
- }
112
- super.destroy();
113
- }
114
- }
115
-
116
- export function main(container: HTMLElement, gameId: string): ENGINE.IGameLoop {
117
- const game = new SideScrollerGame(container, {
118
- ...ENGINE.BaseGameLoop.DEFAULT_OPTIONS,
119
- gameId
120
- });
121
- return game;
122
- }
1
+
2
+ import * as ENGINE from '@directivegames/genesys.js';
3
+ import * as THREE from 'three';
4
+ import './auto-imports.js';
5
+
6
+ import { SideScrollerLevelGenerator } from './level-generator.js';
7
+ import { SideScrollerPlayer } from './player.js';
8
+
9
+ // ============================================================================
10
+ // SIDE SCROLLER GAME
11
+ // ============================================================================
12
+
13
+ // A side-scroller game with animated character and infinite level generation
14
+ class SideScrollerGame extends ENGINE.BaseGameLoop {
15
+ private player: SideScrollerPlayer | null = null;
16
+ private playerController: ENGINE.PlayerController | null = null;
17
+ private levelGenerator: SideScrollerLevelGenerator | null = null;
18
+
19
+ protected override createLoadingScreen(): ENGINE.ILoadingScreen | null {
20
+ // enable the default loading screen
21
+ return new ENGINE.DefaultLoadingScreen();
22
+ }
23
+
24
+ protected override async preStart(): Promise<void> {
25
+ this.createLevel();
26
+ this.createPlayer();
27
+ }
28
+
29
+ protected override tick(tickTime: ENGINE.TickTime): void {
30
+ super.tick(tickTime);
31
+
32
+ // Update level generation based on player position
33
+ if (this.player && this.levelGenerator) {
34
+ const playerPosition = this.player.getWorldPosition();
35
+ this.levelGenerator.updateLevel(playerPosition.x);
36
+ }
37
+ }
38
+
39
+ private createPlayer(): void {
40
+ const spawnX = 1;
41
+ // Create the side-scroller player with animated character
42
+ this.player = new SideScrollerPlayer({
43
+ position: new THREE.Vector3(spawnX, ENGINE.CHARACTER_HEIGHT / 2, 0),
44
+ });
45
+
46
+ // Create the controller and possess the player
47
+ this.playerController = new ENGINE.PlayerController();
48
+ this.playerController.possess(this.player);
49
+
50
+ // Add both to the world
51
+ this.world.addActors(this.player, this.playerController);
52
+ this.setInitialPlayerPosition(spawnX);
53
+ }
54
+
55
+ /**
56
+ * Sets the initial position of the player.
57
+ * @param spawnX - The X coordinate to spawn the player at.
58
+ */
59
+ private setInitialPlayerPosition(spawnX: number): void {
60
+ const groundHeight = this.findGroundHeightAtX(spawnX);
61
+ if (groundHeight !== null) {
62
+ this.player?.setWorldPosition(new THREE.Vector3(spawnX, groundHeight + ENGINE.CHARACTER_HEIGHT / 2, 0));
63
+ } else {
64
+ this.world.runInNextTick(() => {
65
+ this.setInitialPlayerPosition(spawnX);
66
+ });
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Performs a hit test to find the ground height at a given X coordinate
72
+ * @param x - The X coordinate to test
73
+ * @returns The Y coordinate of the ground surface, or 0 if no ground is found
74
+ */
75
+ private findGroundHeightAtX(x: number): number | null {
76
+ // Start from a high position and cast downward
77
+ const rayOrigin = new THREE.Vector3(x, 50, 0);
78
+ const rayDirection = new THREE.Vector3(0, -1, 0); // Downward
79
+
80
+ const hitResults = this.world.getPhysicsEngine()?.performHitTest({
81
+ origin: rayOrigin,
82
+ direction: rayDirection,
83
+ maxDistance: 100, // Cast ray down 100 units
84
+ stopOnFirstHit: true,
85
+ });
86
+
87
+ if (hitResults && hitResults.length > 0) {
88
+ // Return the Y coordinate of the hit location (top surface of ground)
89
+ return hitResults[0].hitLocation.y;
90
+ }
91
+
92
+ return null;
93
+ }
94
+
95
+ private createLevel(): void {
96
+ // Create the level generator
97
+ this.levelGenerator = new SideScrollerLevelGenerator(this.world, {
98
+ enableDebugVisualization: false,
99
+ createGroundMesh: true
100
+ });
101
+
102
+ // Generate initial level chunks
103
+ this.levelGenerator.updateLevel(0);
104
+ }
105
+
106
+ public override destroy(): void {
107
+ // Clean up level generator
108
+ if (this.levelGenerator) {
109
+ this.levelGenerator.cleanup();
110
+ this.levelGenerator = null;
111
+ }
112
+ super.destroy();
113
+ }
114
+ }
115
+
116
+ export function main(container: HTMLElement, gameId: string): ENGINE.IGameLoop {
117
+ const game = new SideScrollerGame(container, {
118
+ ...ENGINE.BaseGameLoop.DEFAULT_OPTIONS,
119
+ gameId
120
+ });
121
+ return game;
122
+ }