@nice2dev/game-engine 0.1.0
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/CHANGELOG.md +33 -0
- package/LICENSE +21 -0
- package/README.md +105 -0
- package/dist/cjs/accessibility/Accessibility.js +162 -0
- package/dist/cjs/accessibility/Accessibility.js.map +1 -0
- package/dist/cjs/ai/AI.js +321 -0
- package/dist/cjs/ai/AI.js.map +1 -0
- package/dist/cjs/animation/Animation.js +233 -0
- package/dist/cjs/animation/Animation.js.map +1 -0
- package/dist/cjs/audio/AudioAdvanced.js +262 -0
- package/dist/cjs/audio/AudioAdvanced.js.map +1 -0
- package/dist/cjs/audio/AudioManager.js +248 -0
- package/dist/cjs/audio/AudioManager.js.map +1 -0
- package/dist/cjs/core/EventBus.js +63 -0
- package/dist/cjs/core/EventBus.js.map +1 -0
- package/dist/cjs/core/GameClock.js +70 -0
- package/dist/cjs/core/GameClock.js.map +1 -0
- package/dist/cjs/core/GameConfig.js +86 -0
- package/dist/cjs/core/GameConfig.js.map +1 -0
- package/dist/cjs/core/GameLoop.js +93 -0
- package/dist/cjs/core/GameLoop.js.map +1 -0
- package/dist/cjs/core/ServiceLocator.js +73 -0
- package/dist/cjs/core/ServiceLocator.js.map +1 -0
- package/dist/cjs/core/Validation.js +119 -0
- package/dist/cjs/core/Validation.js.map +1 -0
- package/dist/cjs/core/math.js +116 -0
- package/dist/cjs/core/math.js.map +1 -0
- package/dist/cjs/devtools/DevTools.js +560 -0
- package/dist/cjs/devtools/DevTools.js.map +1 -0
- package/dist/cjs/devtools/DeveloperExperience.js +562 -0
- package/dist/cjs/devtools/DeveloperExperience.js.map +1 -0
- package/dist/cjs/docs/DocGenerator.js +357 -0
- package/dist/cjs/docs/DocGenerator.js.map +1 -0
- package/dist/cjs/ecs/World.js +280 -0
- package/dist/cjs/ecs/World.js.map +1 -0
- package/dist/cjs/editor/AdvancedEditor.js +149 -0
- package/dist/cjs/editor/AdvancedEditor.js.map +1 -0
- package/dist/cjs/editor/AssetManager.js +190 -0
- package/dist/cjs/editor/AssetManager.js.map +1 -0
- package/dist/cjs/editor/DebugTools.js +187 -0
- package/dist/cjs/editor/DebugTools.js.map +1 -0
- package/dist/cjs/editor/NiceGameEditor.js +361 -0
- package/dist/cjs/editor/NiceGameEditor.js.map +1 -0
- package/dist/cjs/editor/SceneEditor.js +223 -0
- package/dist/cjs/editor/SceneEditor.js.map +1 -0
- package/dist/cjs/engine/NiceGameEngine.js +172 -0
- package/dist/cjs/engine/NiceGameEngine.js.map +1 -0
- package/dist/cjs/enterprise/Enterprise.js +258 -0
- package/dist/cjs/enterprise/Enterprise.js.map +1 -0
- package/dist/cjs/i18n/I18n.js +634 -0
- package/dist/cjs/i18n/I18n.js.map +1 -0
- package/dist/cjs/i18n/useTranslation.js +100 -0
- package/dist/cjs/i18n/useTranslation.js.map +1 -0
- package/dist/cjs/index.js +526 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/input/GamepadNavigation.js +181 -0
- package/dist/cjs/input/GamepadNavigation.js.map +1 -0
- package/dist/cjs/input/InputManager.js +404 -0
- package/dist/cjs/input/InputManager.js.map +1 -0
- package/dist/cjs/input/useGamepads.js +86 -0
- package/dist/cjs/input/useGamepads.js.map +1 -0
- package/dist/cjs/kids/KidMode.js +670 -0
- package/dist/cjs/kids/KidMode.js.map +1 -0
- package/dist/cjs/kids/KidTools.js +533 -0
- package/dist/cjs/kids/KidTools.js.map +1 -0
- package/dist/cjs/monetization/Monetization.js +197 -0
- package/dist/cjs/monetization/Monetization.js.map +1 -0
- package/dist/cjs/multiplayer/LocalMultiplayer.js +288 -0
- package/dist/cjs/multiplayer/LocalMultiplayer.js.map +1 -0
- package/dist/cjs/multiplayer/MiniGameTypes.js +70 -0
- package/dist/cjs/multiplayer/MiniGameTypes.js.map +1 -0
- package/dist/cjs/network/MultiplayerTransport.js +109 -0
- package/dist/cjs/network/MultiplayerTransport.js.map +1 -0
- package/dist/cjs/network/Networking.js +569 -0
- package/dist/cjs/network/Networking.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js +32 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +51 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +46 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +18 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js +145 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +161 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +56 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +11 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +52 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +576 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +956 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +149 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +124 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js +17 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +188 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +199 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +108 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js +38 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +24 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js +264 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +160 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +88 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js +50 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +6 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
- package/dist/cjs/pathfinding/Pathfinding.js +255 -0
- package/dist/cjs/pathfinding/Pathfinding.js.map +1 -0
- package/dist/cjs/performance/BenchmarkSuite.js +318 -0
- package/dist/cjs/performance/BenchmarkSuite.js.map +1 -0
- package/dist/cjs/performance/Performance.js +180 -0
- package/dist/cjs/performance/Performance.js.map +1 -0
- package/dist/cjs/performance/PerformanceAdvanced.js +628 -0
- package/dist/cjs/performance/PerformanceAdvanced.js.map +1 -0
- package/dist/cjs/physics/PhysicsAdvanced.js +432 -0
- package/dist/cjs/physics/PhysicsAdvanced.js.map +1 -0
- package/dist/cjs/physics/PhysicsEngine2D.js +445 -0
- package/dist/cjs/physics/PhysicsEngine2D.js.map +1 -0
- package/dist/cjs/plugins/PluginSDK.js +488 -0
- package/dist/cjs/plugins/PluginSDK.js.map +1 -0
- package/dist/cjs/plugins/PluginTestKit.js +368 -0
- package/dist/cjs/plugins/PluginTestKit.js.map +1 -0
- package/dist/cjs/procedural/Procedural.js +288 -0
- package/dist/cjs/procedural/Procedural.js.map +1 -0
- package/dist/cjs/procedural/WorldBuilding.js +246 -0
- package/dist/cjs/procedural/WorldBuilding.js.map +1 -0
- package/dist/cjs/release/MobileExport.js +149 -0
- package/dist/cjs/release/MobileExport.js.map +1 -0
- package/dist/cjs/release/Release.js +151 -0
- package/dist/cjs/release/Release.js.map +1 -0
- package/dist/cjs/rendering/Camera2D.js +129 -0
- package/dist/cjs/rendering/Camera2D.js.map +1 -0
- package/dist/cjs/rendering/Renderer2D.js +337 -0
- package/dist/cjs/rendering/Renderer2D.js.map +1 -0
- package/dist/cjs/runtime3d/Runtime3D.js +381 -0
- package/dist/cjs/runtime3d/Runtime3D.js.map +1 -0
- package/dist/cjs/runtime3d/SceneEditor3D.js +316 -0
- package/dist/cjs/runtime3d/SceneEditor3D.js.map +1 -0
- package/dist/cjs/scene/SceneManager.js +186 -0
- package/dist/cjs/scene/SceneManager.js.map +1 -0
- package/dist/cjs/scripting/NodeGraph.js +573 -0
- package/dist/cjs/scripting/NodeGraph.js.map +1 -0
- package/dist/cjs/social/Social.js +91 -0
- package/dist/cjs/social/Social.js.map +1 -0
- package/dist/cjs/templates/ActionTemplates.js +229 -0
- package/dist/cjs/templates/ActionTemplates.js.map +1 -0
- package/dist/cjs/templates/PartyTemplates.js +221 -0
- package/dist/cjs/templates/PartyTemplates.js.map +1 -0
- package/dist/cjs/templates/PuzzleTemplates.js +283 -0
- package/dist/cjs/templates/PuzzleTemplates.js.map +1 -0
- package/dist/cjs/templates/RPGTemplates.js +209 -0
- package/dist/cjs/templates/RPGTemplates.js.map +1 -0
- package/dist/cjs/templates/SportsTemplates.js +272 -0
- package/dist/cjs/templates/SportsTemplates.js.map +1 -0
- package/dist/cjs/templates/StrategyTemplates.js +173 -0
- package/dist/cjs/templates/StrategyTemplates.js.map +1 -0
- package/dist/cjs/templates/WaveDefense.js +470 -0
- package/dist/cjs/templates/WaveDefense.js.map +1 -0
- package/dist/cjs/tilemap/Tilemap.js +208 -0
- package/dist/cjs/tilemap/Tilemap.js.map +1 -0
- package/dist/cjs/tutorials/TutorialBranching.js +392 -0
- package/dist/cjs/tutorials/TutorialBranching.js.map +1 -0
- package/dist/cjs/tutorials/TutorialEngine.js +903 -0
- package/dist/cjs/tutorials/TutorialEngine.js.map +1 -0
- package/dist/cjs/tutorials/TutorialOverlay.js +602 -0
- package/dist/cjs/tutorials/TutorialOverlay.js.map +1 -0
- package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +816 -0
- package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +1 -0
- package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +741 -0
- package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +1 -0
- package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +786 -0
- package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +1 -0
- package/dist/cjs/ui/GameUI.js +312 -0
- package/dist/cjs/ui/GameUI.js.map +1 -0
- package/dist/cjs/xr/ARVR.js +197 -0
- package/dist/cjs/xr/ARVR.js.map +1 -0
- package/dist/esm/accessibility/Accessibility.js +153 -0
- package/dist/esm/accessibility/Accessibility.js.map +1 -0
- package/dist/esm/ai/AI.js +302 -0
- package/dist/esm/ai/AI.js.map +1 -0
- package/dist/esm/animation/Animation.js +227 -0
- package/dist/esm/animation/Animation.js.map +1 -0
- package/dist/esm/audio/AudioAdvanced.js +243 -0
- package/dist/esm/audio/AudioAdvanced.js.map +1 -0
- package/dist/esm/audio/AudioManager.js +246 -0
- package/dist/esm/audio/AudioManager.js.map +1 -0
- package/dist/esm/core/EventBus.js +61 -0
- package/dist/esm/core/EventBus.js.map +1 -0
- package/dist/esm/core/GameClock.js +68 -0
- package/dist/esm/core/GameClock.js.map +1 -0
- package/dist/esm/core/GameConfig.js +80 -0
- package/dist/esm/core/GameConfig.js.map +1 -0
- package/dist/esm/core/GameLoop.js +91 -0
- package/dist/esm/core/GameLoop.js.map +1 -0
- package/dist/esm/core/ServiceLocator.js +70 -0
- package/dist/esm/core/ServiceLocator.js.map +1 -0
- package/dist/esm/core/Validation.js +108 -0
- package/dist/esm/core/Validation.js.map +1 -0
- package/dist/esm/core/math.js +114 -0
- package/dist/esm/core/math.js.map +1 -0
- package/dist/esm/devtools/DevTools.js +555 -0
- package/dist/esm/devtools/DevTools.js.map +1 -0
- package/dist/esm/devtools/DeveloperExperience.js +547 -0
- package/dist/esm/devtools/DeveloperExperience.js.map +1 -0
- package/dist/esm/docs/DocGenerator.js +353 -0
- package/dist/esm/docs/DocGenerator.js.map +1 -0
- package/dist/esm/ecs/World.js +276 -0
- package/dist/esm/ecs/World.js.map +1 -0
- package/dist/esm/editor/AdvancedEditor.js +141 -0
- package/dist/esm/editor/AdvancedEditor.js.map +1 -0
- package/dist/esm/editor/AssetManager.js +188 -0
- package/dist/esm/editor/AssetManager.js.map +1 -0
- package/dist/esm/editor/DebugTools.js +179 -0
- package/dist/esm/editor/DebugTools.js.map +1 -0
- package/dist/esm/editor/NiceGameEditor.js +355 -0
- package/dist/esm/editor/NiceGameEditor.js.map +1 -0
- package/dist/esm/editor/SceneEditor.js +209 -0
- package/dist/esm/editor/SceneEditor.js.map +1 -0
- package/dist/esm/engine/NiceGameEngine.js +170 -0
- package/dist/esm/engine/NiceGameEngine.js.map +1 -0
- package/dist/esm/enterprise/Enterprise.js +246 -0
- package/dist/esm/enterprise/Enterprise.js.map +1 -0
- package/dist/esm/i18n/I18n.js +622 -0
- package/dist/esm/i18n/I18n.js.map +1 -0
- package/dist/esm/i18n/useTranslation.js +95 -0
- package/dist/esm/i18n/useTranslation.js.map +1 -0
- package/dist/esm/index.js +71 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/input/GamepadNavigation.js +178 -0
- package/dist/esm/input/GamepadNavigation.js.map +1 -0
- package/dist/esm/input/InputManager.js +399 -0
- package/dist/esm/input/InputManager.js.map +1 -0
- package/dist/esm/input/useGamepads.js +83 -0
- package/dist/esm/input/useGamepads.js.map +1 -0
- package/dist/esm/kids/KidMode.js +663 -0
- package/dist/esm/kids/KidMode.js.map +1 -0
- package/dist/esm/kids/KidTools.js +529 -0
- package/dist/esm/kids/KidTools.js.map +1 -0
- package/dist/esm/monetization/Monetization.js +186 -0
- package/dist/esm/monetization/Monetization.js.map +1 -0
- package/dist/esm/multiplayer/LocalMultiplayer.js +284 -0
- package/dist/esm/multiplayer/LocalMultiplayer.js.map +1 -0
- package/dist/esm/multiplayer/MiniGameTypes.js +60 -0
- package/dist/esm/multiplayer/MiniGameTypes.js.map +1 -0
- package/dist/esm/network/MultiplayerTransport.js +106 -0
- package/dist/esm/network/MultiplayerTransport.js.map +1 -0
- package/dist/esm/network/Networking.js +561 -0
- package/dist/esm/network/Networking.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js +30 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +49 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +44 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +16 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js +136 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +159 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +54 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +9 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +49 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +573 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +954 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +147 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +25 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js +27 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js +26 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +122 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js +15 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +186 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +197 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +106 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js +36 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +22 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js +249 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +158 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +86 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js +13 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +4 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -0
- package/dist/esm/pathfinding/Pathfinding.js +250 -0
- package/dist/esm/pathfinding/Pathfinding.js.map +1 -0
- package/dist/esm/performance/BenchmarkSuite.js +315 -0
- package/dist/esm/performance/BenchmarkSuite.js.map +1 -0
- package/dist/esm/performance/Performance.js +171 -0
- package/dist/esm/performance/Performance.js.map +1 -0
- package/dist/esm/performance/PerformanceAdvanced.js +620 -0
- package/dist/esm/performance/PerformanceAdvanced.js.map +1 -0
- package/dist/esm/physics/PhysicsAdvanced.js +417 -0
- package/dist/esm/physics/PhysicsAdvanced.js.map +1 -0
- package/dist/esm/physics/PhysicsEngine2D.js +442 -0
- package/dist/esm/physics/PhysicsEngine2D.js.map +1 -0
- package/dist/esm/plugins/PluginSDK.js +484 -0
- package/dist/esm/plugins/PluginSDK.js.map +1 -0
- package/dist/esm/plugins/PluginTestKit.js +359 -0
- package/dist/esm/plugins/PluginTestKit.js.map +1 -0
- package/dist/esm/procedural/Procedural.js +282 -0
- package/dist/esm/procedural/Procedural.js.map +1 -0
- package/dist/esm/procedural/WorldBuilding.js +225 -0
- package/dist/esm/procedural/WorldBuilding.js.map +1 -0
- package/dist/esm/release/MobileExport.js +142 -0
- package/dist/esm/release/MobileExport.js.map +1 -0
- package/dist/esm/release/Release.js +141 -0
- package/dist/esm/release/Release.js.map +1 -0
- package/dist/esm/rendering/Camera2D.js +127 -0
- package/dist/esm/rendering/Camera2D.js.map +1 -0
- package/dist/esm/rendering/Renderer2D.js +334 -0
- package/dist/esm/rendering/Renderer2D.js.map +1 -0
- package/dist/esm/runtime3d/Runtime3D.js +371 -0
- package/dist/esm/runtime3d/Runtime3D.js.map +1 -0
- package/dist/esm/runtime3d/SceneEditor3D.js +299 -0
- package/dist/esm/runtime3d/SceneEditor3D.js.map +1 -0
- package/dist/esm/scene/SceneManager.js +184 -0
- package/dist/esm/scene/SceneManager.js.map +1 -0
- package/dist/esm/scripting/NodeGraph.js +568 -0
- package/dist/esm/scripting/NodeGraph.js.map +1 -0
- package/dist/esm/social/Social.js +85 -0
- package/dist/esm/social/Social.js.map +1 -0
- package/dist/esm/templates/ActionTemplates.js +217 -0
- package/dist/esm/templates/ActionTemplates.js.map +1 -0
- package/dist/esm/templates/PartyTemplates.js +204 -0
- package/dist/esm/templates/PartyTemplates.js.map +1 -0
- package/dist/esm/templates/PuzzleTemplates.js +267 -0
- package/dist/esm/templates/PuzzleTemplates.js.map +1 -0
- package/dist/esm/templates/RPGTemplates.js +196 -0
- package/dist/esm/templates/RPGTemplates.js.map +1 -0
- package/dist/esm/templates/SportsTemplates.js +257 -0
- package/dist/esm/templates/SportsTemplates.js.map +1 -0
- package/dist/esm/templates/StrategyTemplates.js +157 -0
- package/dist/esm/templates/StrategyTemplates.js.map +1 -0
- package/dist/esm/templates/WaveDefense.js +467 -0
- package/dist/esm/templates/WaveDefense.js.map +1 -0
- package/dist/esm/tilemap/Tilemap.js +205 -0
- package/dist/esm/tilemap/Tilemap.js.map +1 -0
- package/dist/esm/tutorials/TutorialBranching.js +388 -0
- package/dist/esm/tutorials/TutorialBranching.js.map +1 -0
- package/dist/esm/tutorials/TutorialEngine.js +897 -0
- package/dist/esm/tutorials/TutorialEngine.js.map +1 -0
- package/dist/esm/tutorials/TutorialOverlay.js +600 -0
- package/dist/esm/tutorials/TutorialOverlay.js.map +1 -0
- package/dist/esm/tutorials/content/Tutorials_T05_T08.js +810 -0
- package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +1 -0
- package/dist/esm/tutorials/content/Tutorials_T09_T11.js +736 -0
- package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +1 -0
- package/dist/esm/tutorials/content/Tutorials_T12_T15.js +780 -0
- package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +1 -0
- package/dist/esm/ui/GameUI.js +310 -0
- package/dist/esm/ui/GameUI.js.map +1 -0
- package/dist/esm/xr/ARVR.js +182 -0
- package/dist/esm/xr/ARVR.js.map +1 -0
- package/dist/types/__tests__/setup.d.ts +1 -0
- package/dist/types/accessibility/Accessibility.d.ts +82 -0
- package/dist/types/accessibility/index.d.ts +1 -0
- package/dist/types/ai/AI.d.ts +140 -0
- package/dist/types/ai/index.d.ts +1 -0
- package/dist/types/animation/Animation.d.ts +90 -0
- package/dist/types/animation/index.d.ts +1 -0
- package/dist/types/audio/AudioAdvanced.d.ts +190 -0
- package/dist/types/audio/AudioManager.d.ts +55 -0
- package/dist/types/audio/index.d.ts +1 -0
- package/dist/types/community/Community.d.ts +112 -0
- package/dist/types/community/index.d.ts +1 -0
- package/dist/types/core/EventBus.d.ts +16 -0
- package/dist/types/core/GameClock.d.ts +29 -0
- package/dist/types/core/GameConfig.d.ts +20 -0
- package/dist/types/core/GameLoop.d.ts +32 -0
- package/dist/types/core/ServiceLocator.d.ts +36 -0
- package/dist/types/core/TypeSafety.d.ts +190 -0
- package/dist/types/core/Validation.d.ts +24 -0
- package/dist/types/core/index.d.ts +7 -0
- package/dist/types/core/math.d.ts +32 -0
- package/dist/types/core/types.d.ts +130 -0
- package/dist/types/devtools/AssetStore.d.ts +133 -0
- package/dist/types/devtools/DevTools.d.ts +217 -0
- package/dist/types/devtools/DeveloperExperience.d.ts +123 -0
- package/dist/types/devtools/index.d.ts +3 -0
- package/dist/types/docs/APIPlayground.d.ts +26 -0
- package/dist/types/docs/Cookbook.d.ts +18 -0
- package/dist/types/docs/DocGenerator.d.ts +83 -0
- package/dist/types/docs/Guides.d.ts +18 -0
- package/dist/types/docs/index.d.ts +4 -0
- package/dist/types/ecs/World.d.ts +219 -0
- package/dist/types/ecs/index.d.ts +1 -0
- package/dist/types/editor/AdvancedEditor.d.ts +267 -0
- package/dist/types/editor/AssetManager.d.ts +45 -0
- package/dist/types/editor/DebugTools.d.ts +74 -0
- package/dist/types/editor/NiceGameEditor.d.ts +115 -0
- package/dist/types/editor/SceneEditor.d.ts +37 -0
- package/dist/types/editor/index.d.ts +8 -0
- package/dist/types/engine/NiceGameEngine.d.ts +53 -0
- package/dist/types/engine/index.d.ts +2 -0
- package/dist/types/enterprise/Enterprise.d.ts +217 -0
- package/dist/types/enterprise/index.d.ts +1 -0
- package/dist/types/epic/index.d.ts +10 -0
- package/dist/types/i18n/I18n.d.ts +107 -0
- package/dist/types/i18n/index.d.ts +2 -0
- package/dist/types/i18n/useTranslation.d.ts +74 -0
- package/dist/types/index.d.ts +127 -0
- package/dist/types/input/GamepadNavigation.d.ts +34 -0
- package/dist/types/input/InputManager.d.ts +77 -0
- package/dist/types/input/index.d.ts +3 -0
- package/dist/types/input/useGamepads.d.ts +39 -0
- package/dist/types/kids/KidMode.d.ts +207 -0
- package/dist/types/kids/KidTools.d.ts +135 -0
- package/dist/types/kids/index.d.ts +2 -0
- package/dist/types/legendary/index.d.ts +57 -0
- package/dist/types/monetization/Monetization.d.ts +224 -0
- package/dist/types/monetization/index.d.ts +1 -0
- package/dist/types/multiplayer/LocalMultiplayer.d.ts +61 -0
- package/dist/types/multiplayer/MiniGameTypes.d.ts +70 -0
- package/dist/types/multiplayer/index.d.ts +3 -0
- package/dist/types/network/MultiplayerTransport.d.ts +71 -0
- package/dist/types/network/Networking.d.ts +199 -0
- package/dist/types/network/index.d.ts +2 -0
- package/dist/types/pathfinding/Pathfinding.d.ts +42 -0
- package/dist/types/pathfinding/index.d.ts +1 -0
- package/dist/types/performance/AssetCompression.d.ts +137 -0
- package/dist/types/performance/BenchmarkSuite.d.ts +99 -0
- package/dist/types/performance/Performance.d.ts +87 -0
- package/dist/types/performance/PerformanceAdvanced.d.ts +220 -0
- package/dist/types/performance/WASMModules.d.ts +65 -0
- package/dist/types/performance/WebGPUCompute.d.ts +164 -0
- package/dist/types/performance/index.d.ts +1 -0
- package/dist/types/physics/PhysicsAdvanced.d.ts +148 -0
- package/dist/types/physics/PhysicsEngine2D.d.ts +66 -0
- package/dist/types/physics/index.d.ts +1 -0
- package/dist/types/plugins/PluginSDK.d.ts +134 -0
- package/dist/types/plugins/PluginTestKit.d.ts +107 -0
- package/dist/types/plugins/index.d.ts +2 -0
- package/dist/types/procedural/Procedural.d.ts +90 -0
- package/dist/types/procedural/WorldBuilding.d.ts +200 -0
- package/dist/types/procedural/index.d.ts +2 -0
- package/dist/types/release/MobileExport.d.ts +218 -0
- package/dist/types/release/Release.d.ts +81 -0
- package/dist/types/release/index.d.ts +1 -0
- package/dist/types/rendering/Camera2D.d.ts +39 -0
- package/dist/types/rendering/Renderer2D.d.ts +41 -0
- package/dist/types/rendering/index.d.ts +2 -0
- package/dist/types/runtime3d/Runtime3D.d.ts +259 -0
- package/dist/types/runtime3d/SceneEditor3D.d.ts +186 -0
- package/dist/types/runtime3d/index.d.ts +2 -0
- package/dist/types/scene/SceneManager.d.ts +59 -0
- package/dist/types/scene/index.d.ts +2 -0
- package/dist/types/scripting/NodeGraph.d.ts +84 -0
- package/dist/types/scripting/index.d.ts +2 -0
- package/dist/types/social/Social.d.ts +245 -0
- package/dist/types/social/index.d.ts +1 -0
- package/dist/types/templates/ActionTemplates.d.ts +173 -0
- package/dist/types/templates/PartyTemplates.d.ts +195 -0
- package/dist/types/templates/PuzzleTemplates.d.ts +127 -0
- package/dist/types/templates/RPGTemplates.d.ts +210 -0
- package/dist/types/templates/SportsTemplates.d.ts +162 -0
- package/dist/types/templates/StrategyTemplates.d.ts +264 -0
- package/dist/types/templates/WaveDefense.d.ts +92 -0
- package/dist/types/templates/index.d.ts +2 -0
- package/dist/types/tilemap/Tilemap.d.ts +66 -0
- package/dist/types/tilemap/index.d.ts +1 -0
- package/dist/types/tutorials/TutorialBranching.d.ts +132 -0
- package/dist/types/tutorials/TutorialEditor.d.ts +43 -0
- package/dist/types/tutorials/TutorialEngine.d.ts +237 -0
- package/dist/types/tutorials/TutorialOverlay.d.ts +79 -0
- package/dist/types/tutorials/VoiceNarration.d.ts +75 -0
- package/dist/types/tutorials/content/Tutorials_T04.d.ts +3 -0
- package/dist/types/tutorials/content/Tutorials_T05_T08.d.ts +6 -0
- package/dist/types/tutorials/content/Tutorials_T09_T11.d.ts +5 -0
- package/dist/types/tutorials/content/Tutorials_T12_T15.d.ts +6 -0
- package/dist/types/tutorials/content/UITutorials.d.ts +14 -0
- package/dist/types/tutorials/content/index.d.ts +5 -0
- package/dist/types/tutorials/index.d.ts +6 -0
- package/dist/types/ui/GameUI.d.ts +97 -0
- package/dist/types/ui/index.d.ts +2 -0
- package/dist/types/xr/ARVR.d.ts +252 -0
- package/dist/types/xr/index.d.ts +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { EventBus } from '../core/EventBus.js';
|
|
2
|
+
|
|
3
|
+
/* ────────────────────────────────────────────────────────────────
|
|
4
|
+
Documentation Generator — LEGENDARY L10
|
|
5
|
+
|
|
6
|
+
Auto-generates API docs from registered modules:
|
|
7
|
+
• Markdown output
|
|
8
|
+
• Interactive docs browser model (JSON structure)
|
|
9
|
+
• Search index for API lookup
|
|
10
|
+
• Example code linking
|
|
11
|
+
──────────────────────────────────────────────────────────────── */
|
|
12
|
+
/* ══════════════════════════════════════════════════════════════
|
|
13
|
+
DocRegistry — Central API documentation registry
|
|
14
|
+
══════════════════════════════════════════════════════════════ */
|
|
15
|
+
class DocRegistry {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.events = new EventBus();
|
|
18
|
+
this.modules = new Map();
|
|
19
|
+
}
|
|
20
|
+
/** Register a module's documentation. */
|
|
21
|
+
registerModule(mod) {
|
|
22
|
+
this.modules.set(mod.name, mod);
|
|
23
|
+
this.events.emit('doc:module-registered', { name: mod.name });
|
|
24
|
+
}
|
|
25
|
+
/** Unregister a module. */
|
|
26
|
+
unregisterModule(name) {
|
|
27
|
+
this.modules.delete(name);
|
|
28
|
+
}
|
|
29
|
+
/** Get a module by name. */
|
|
30
|
+
getModule(name) {
|
|
31
|
+
return this.modules.get(name);
|
|
32
|
+
}
|
|
33
|
+
/** Get all registered modules. */
|
|
34
|
+
getAllModules() {
|
|
35
|
+
return Array.from(this.modules.values());
|
|
36
|
+
}
|
|
37
|
+
/** Get all modules in a category. */
|
|
38
|
+
getModulesByCategory(category) {
|
|
39
|
+
const result = [];
|
|
40
|
+
for (const mod of this.modules.values()) {
|
|
41
|
+
if (mod.category === category)
|
|
42
|
+
result.push(mod);
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
/** Search across all docs. */
|
|
47
|
+
search(query, maxResults = 20) {
|
|
48
|
+
const q = query.toLowerCase();
|
|
49
|
+
const results = [];
|
|
50
|
+
for (const mod of this.modules.values()) {
|
|
51
|
+
for (const member of mod.members) {
|
|
52
|
+
const score = this.scoreMember(member, q);
|
|
53
|
+
if (score > 0) {
|
|
54
|
+
results.push({ member, module: mod.name, score });
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
results.sort((a, b) => b.score - a.score);
|
|
59
|
+
return results.slice(0, maxResults);
|
|
60
|
+
}
|
|
61
|
+
scoreMember(member, query) {
|
|
62
|
+
let score = 0;
|
|
63
|
+
const name = member.name.toLowerCase();
|
|
64
|
+
// Exact name match
|
|
65
|
+
if (name === query)
|
|
66
|
+
return 100;
|
|
67
|
+
// Name starts with query
|
|
68
|
+
if (name.startsWith(query))
|
|
69
|
+
score += 50;
|
|
70
|
+
// Name contains query
|
|
71
|
+
if (name.indexOf(query) >= 0)
|
|
72
|
+
score += 30;
|
|
73
|
+
// Description match
|
|
74
|
+
if (member.description.toLowerCase().indexOf(query) >= 0)
|
|
75
|
+
score += 10;
|
|
76
|
+
// Tag match
|
|
77
|
+
if (member.tags) {
|
|
78
|
+
for (const tag of member.tags) {
|
|
79
|
+
if (tag.toLowerCase().indexOf(query) >= 0)
|
|
80
|
+
score += 15;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return score;
|
|
84
|
+
}
|
|
85
|
+
/** Get a specific member by name. */
|
|
86
|
+
findMember(memberName) {
|
|
87
|
+
const lower = memberName.toLowerCase();
|
|
88
|
+
for (const mod of this.modules.values()) {
|
|
89
|
+
for (const member of mod.members) {
|
|
90
|
+
if (member.name.toLowerCase() === lower) {
|
|
91
|
+
return { member, module: mod.name };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
/** Generate Markdown docs for a single module. */
|
|
98
|
+
generateModuleMarkdown(moduleName) {
|
|
99
|
+
const mod = this.modules.get(moduleName);
|
|
100
|
+
if (!mod)
|
|
101
|
+
return `Module "${moduleName}" not found.`;
|
|
102
|
+
const lines = [];
|
|
103
|
+
lines.push(`# ${mod.name}`);
|
|
104
|
+
lines.push('');
|
|
105
|
+
lines.push(mod.description);
|
|
106
|
+
lines.push('');
|
|
107
|
+
// Group by kind
|
|
108
|
+
const groups = new Map();
|
|
109
|
+
for (const m of mod.members) {
|
|
110
|
+
let arr = groups.get(m.kind);
|
|
111
|
+
if (!arr) {
|
|
112
|
+
arr = [];
|
|
113
|
+
groups.set(m.kind, arr);
|
|
114
|
+
}
|
|
115
|
+
arr.push(m);
|
|
116
|
+
}
|
|
117
|
+
const kindOrder = ['class', 'interface', 'type', 'function', 'constant', 'enum'];
|
|
118
|
+
const kindTitles = {
|
|
119
|
+
class: 'Classes',
|
|
120
|
+
interface: 'Interfaces',
|
|
121
|
+
type: 'Types',
|
|
122
|
+
function: 'Functions',
|
|
123
|
+
constant: 'Constants',
|
|
124
|
+
enum: 'Enums',
|
|
125
|
+
};
|
|
126
|
+
for (const kind of kindOrder) {
|
|
127
|
+
const members = groups.get(kind);
|
|
128
|
+
if (!members)
|
|
129
|
+
continue;
|
|
130
|
+
lines.push(`## ${kindTitles[kind]}`);
|
|
131
|
+
lines.push('');
|
|
132
|
+
for (const m of members) {
|
|
133
|
+
lines.push(`### ${m.name}`);
|
|
134
|
+
if (m.deprecated)
|
|
135
|
+
lines.push(`> **Deprecated:** ${m.deprecated}`);
|
|
136
|
+
lines.push('');
|
|
137
|
+
if (m.signature)
|
|
138
|
+
lines.push('```typescript\n' + m.signature + '\n```');
|
|
139
|
+
lines.push('');
|
|
140
|
+
lines.push(m.description);
|
|
141
|
+
lines.push('');
|
|
142
|
+
if (m.params && m.params.length > 0) {
|
|
143
|
+
lines.push('**Parameters:**');
|
|
144
|
+
lines.push('');
|
|
145
|
+
lines.push('| Name | Type | Description |');
|
|
146
|
+
lines.push('|------|------|-------------|');
|
|
147
|
+
for (const p of m.params) {
|
|
148
|
+
const opt = p.optional ? ' (optional)' : '';
|
|
149
|
+
const def = p.defaultValue ? ` Default: \`${p.defaultValue}\`` : '';
|
|
150
|
+
lines.push(`| \`${p.name}\`${opt} | \`${p.type}\` | ${p.description}${def} |`);
|
|
151
|
+
}
|
|
152
|
+
lines.push('');
|
|
153
|
+
}
|
|
154
|
+
if (m.returns) {
|
|
155
|
+
lines.push(`**Returns:** ${m.returns}`);
|
|
156
|
+
lines.push('');
|
|
157
|
+
}
|
|
158
|
+
if (m.example) {
|
|
159
|
+
lines.push('**Example:**');
|
|
160
|
+
lines.push('```typescript');
|
|
161
|
+
lines.push(m.example);
|
|
162
|
+
lines.push('```');
|
|
163
|
+
lines.push('');
|
|
164
|
+
}
|
|
165
|
+
if (m.seeAlso && m.seeAlso.length > 0) {
|
|
166
|
+
lines.push(`**See also:** ${m.seeAlso.map(s => `\`${s}\``).join(', ')}`);
|
|
167
|
+
lines.push('');
|
|
168
|
+
}
|
|
169
|
+
if (m.since) {
|
|
170
|
+
lines.push(`*Since: ${m.since}*`);
|
|
171
|
+
lines.push('');
|
|
172
|
+
}
|
|
173
|
+
lines.push('---');
|
|
174
|
+
lines.push('');
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return lines.join('\n');
|
|
178
|
+
}
|
|
179
|
+
/** Generate full Markdown documentation for all modules. */
|
|
180
|
+
generateFullMarkdown() {
|
|
181
|
+
const lines = [];
|
|
182
|
+
lines.push('# nice2dev Game Engine — API Reference');
|
|
183
|
+
lines.push('');
|
|
184
|
+
// Table of contents
|
|
185
|
+
lines.push('## Table of Contents');
|
|
186
|
+
lines.push('');
|
|
187
|
+
const categories = ['core', 'ecs', 'rendering', 'physics', 'audio', 'input', 'ui', 'scene', 'multiplayer', 'editor', 'legendary', 'other'];
|
|
188
|
+
for (const cat of categories) {
|
|
189
|
+
const mods = this.getModulesByCategory(cat);
|
|
190
|
+
if (mods.length === 0)
|
|
191
|
+
continue;
|
|
192
|
+
lines.push(`### ${cat.charAt(0).toUpperCase() + cat.slice(1)}`);
|
|
193
|
+
for (const mod of mods) {
|
|
194
|
+
lines.push(`- [${mod.name}](#${mod.name.toLowerCase().replace(/[^a-z0-9]+/g, '-')})`);
|
|
195
|
+
}
|
|
196
|
+
lines.push('');
|
|
197
|
+
}
|
|
198
|
+
// Module docs
|
|
199
|
+
for (const mod of this.modules.values()) {
|
|
200
|
+
lines.push(this.generateModuleMarkdown(mod.name));
|
|
201
|
+
lines.push('');
|
|
202
|
+
}
|
|
203
|
+
return lines.join('\n');
|
|
204
|
+
}
|
|
205
|
+
/** Generate a JSON index for interactive docs browser. */
|
|
206
|
+
generateSearchIndex() {
|
|
207
|
+
var _a;
|
|
208
|
+
const index = [];
|
|
209
|
+
for (const mod of this.modules.values()) {
|
|
210
|
+
for (const m of mod.members) {
|
|
211
|
+
index.push({
|
|
212
|
+
name: m.name,
|
|
213
|
+
module: mod.name,
|
|
214
|
+
kind: m.kind,
|
|
215
|
+
description: m.description,
|
|
216
|
+
tags: (_a = m.tags) !== null && _a !== void 0 ? _a : [],
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return index;
|
|
221
|
+
}
|
|
222
|
+
/** Total number of documented members. */
|
|
223
|
+
get totalMembers() {
|
|
224
|
+
let count = 0;
|
|
225
|
+
for (const mod of this.modules.values())
|
|
226
|
+
count += mod.members.length;
|
|
227
|
+
return count;
|
|
228
|
+
}
|
|
229
|
+
/** Reset. */
|
|
230
|
+
clear() {
|
|
231
|
+
this.modules.clear();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/* ══════════════════════════════════════════════════════════════
|
|
235
|
+
Built-in ECS Module Docs (example)
|
|
236
|
+
══════════════════════════════════════════════════════════════ */
|
|
237
|
+
const DOCS_ECS = {
|
|
238
|
+
name: 'ECS',
|
|
239
|
+
category: 'ecs',
|
|
240
|
+
description: 'Entity-Component-System architecture. The core of the game engine.',
|
|
241
|
+
members: [
|
|
242
|
+
{
|
|
243
|
+
name: 'World',
|
|
244
|
+
kind: 'class',
|
|
245
|
+
description: 'The ECS world manages entities, components, and systems.',
|
|
246
|
+
signature: 'class World',
|
|
247
|
+
tags: ['ecs', 'entity', 'system'],
|
|
248
|
+
example: "const world = new World();\nconst id = world.createEntity();\nworld.addComponent(id, 'Transform', { x: 0, y: 0 });\nworld.addSystem('move', (dt, w) => { /* ... */ });",
|
|
249
|
+
seeAlso: ['System', 'Entity'],
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
name: 'World.createEntity',
|
|
253
|
+
kind: 'function',
|
|
254
|
+
description: 'Create a new entity and return its numeric ID.',
|
|
255
|
+
signature: 'createEntity(): number',
|
|
256
|
+
returns: 'The new entity ID.',
|
|
257
|
+
tags: ['ecs', 'entity', 'create'],
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
name: 'World.addComponent',
|
|
261
|
+
kind: 'function',
|
|
262
|
+
description: 'Add a component to an entity.',
|
|
263
|
+
signature: "addComponent(entityId: number, type: string, data: object): void",
|
|
264
|
+
params: [
|
|
265
|
+
{ name: 'entityId', type: 'number', description: 'The entity to add the component to.' },
|
|
266
|
+
{ name: 'type', type: 'string', description: "Component type name (e.g. 'Transform', 'Sprite')." },
|
|
267
|
+
{ name: 'data', type: 'object', description: 'Component data.' },
|
|
268
|
+
],
|
|
269
|
+
tags: ['ecs', 'component'],
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: 'World.getComponent',
|
|
273
|
+
kind: 'function',
|
|
274
|
+
description: 'Get a single component from an entity.',
|
|
275
|
+
signature: "getComponent<T>(entityId: number, type: string): T | undefined",
|
|
276
|
+
params: [
|
|
277
|
+
{ name: 'entityId', type: 'number', description: 'Entity ID.' },
|
|
278
|
+
{ name: 'type', type: 'string', description: 'Component type name.' },
|
|
279
|
+
],
|
|
280
|
+
returns: 'The component data or undefined.',
|
|
281
|
+
tags: ['ecs', 'component', 'query'],
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
name: 'World.query',
|
|
285
|
+
kind: 'function',
|
|
286
|
+
description: 'Query entities that have all specified component types.',
|
|
287
|
+
signature: "query(...types: string[]): number[]",
|
|
288
|
+
params: [
|
|
289
|
+
{ name: 'types', type: 'string[]', description: 'Component types (spread args, not array!).' },
|
|
290
|
+
],
|
|
291
|
+
returns: 'Array of entity IDs matching the query.',
|
|
292
|
+
example: "const ids = world.query('Transform', 'Sprite');\n// NOT world.query(['Transform', 'Sprite'])",
|
|
293
|
+
tags: ['ecs', 'query', 'entity'],
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
name: 'World.addSystem',
|
|
297
|
+
kind: 'function',
|
|
298
|
+
description: 'Register a system that runs every frame.',
|
|
299
|
+
signature: "addSystem(name: string, updateFn: (dt: number, world: World) => void, priority?: number): void",
|
|
300
|
+
params: [
|
|
301
|
+
{ name: 'name', type: 'string', description: 'System name.' },
|
|
302
|
+
{ name: 'updateFn', type: 'function', description: 'Update function called each frame.' },
|
|
303
|
+
{ name: 'priority', type: 'number', description: 'Execution order (lower = earlier).', optional: true },
|
|
304
|
+
],
|
|
305
|
+
tags: ['ecs', 'system'],
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
name: 'World.destroyEntity',
|
|
309
|
+
kind: 'function',
|
|
310
|
+
description: 'Destroy an entity and all its components.',
|
|
311
|
+
signature: 'destroyEntity(entityId: number): void',
|
|
312
|
+
tags: ['ecs', 'entity', 'destroy'],
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
name: 'World.allEntities',
|
|
316
|
+
kind: 'function',
|
|
317
|
+
description: 'Returns all entity IDs. Note: use allEntities(), NOT getAllEntities().',
|
|
318
|
+
signature: 'allEntities(): number[]',
|
|
319
|
+
returns: 'Array of all entity IDs.',
|
|
320
|
+
tags: ['ecs', 'entity', 'query'],
|
|
321
|
+
},
|
|
322
|
+
],
|
|
323
|
+
};
|
|
324
|
+
const DOCS_RENDERING = {
|
|
325
|
+
name: 'Rendering',
|
|
326
|
+
category: 'rendering',
|
|
327
|
+
description: '2D Canvas rendering pipeline with sprite batching, cameras, and post-processing.',
|
|
328
|
+
members: [
|
|
329
|
+
{
|
|
330
|
+
name: 'Camera2D',
|
|
331
|
+
kind: 'class',
|
|
332
|
+
description: '2D camera with zoom, pan, and shake support.',
|
|
333
|
+
signature: 'class Camera2D',
|
|
334
|
+
tags: ['camera', 'rendering', '2d'],
|
|
335
|
+
example: "const cam = new Camera2D(canvas.width, canvas.height);\ncam.follow(playerEntity);\ncam.shake(5, 300); // intensity=5, duration=300ms",
|
|
336
|
+
seeAlso: ['Renderer2D', 'SpriteRenderer'],
|
|
337
|
+
},
|
|
338
|
+
{
|
|
339
|
+
name: 'Camera2D.worldToScreen',
|
|
340
|
+
kind: 'function',
|
|
341
|
+
description: 'Convert world coordinates to screen coordinates.',
|
|
342
|
+
signature: 'worldToScreen(worldPos: Vec2): Vec2',
|
|
343
|
+
params: [
|
|
344
|
+
{ name: 'worldPos', type: 'Vec2', description: 'Takes a Vec2, not separate x,y!' },
|
|
345
|
+
],
|
|
346
|
+
returns: 'Screen-space Vec2.',
|
|
347
|
+
tags: ['camera', 'coordinate'],
|
|
348
|
+
},
|
|
349
|
+
],
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
export { DOCS_ECS, DOCS_RENDERING, DocRegistry };
|
|
353
|
+
//# sourceMappingURL=DocGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DocGenerator.js","sources":["../../../src/docs/DocGenerator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { EventBus } from '../core/EventBus.js';
|
|
2
|
+
|
|
3
|
+
/* ────────────────────────────────────────────────────────────────
|
|
4
|
+
ECS — Entity-Component-System architecture
|
|
5
|
+
──────────────────────────────────────────────────────────────── */
|
|
6
|
+
/* ────────────────────────────────────────────────────────────────
|
|
7
|
+
COMPONENT DEFAULTS
|
|
8
|
+
──────────────────────────────────────────────────────────────── */
|
|
9
|
+
const WHITE = { r: 1, g: 1, b: 1, a: 1 };
|
|
10
|
+
const BLACK = { r: 0, g: 0, b: 0, a: 1 };
|
|
11
|
+
const ZERO = { x: 0, y: 0 };
|
|
12
|
+
const ONE = { x: 1, y: 1 };
|
|
13
|
+
function createDefaultComponent(type, entityId) {
|
|
14
|
+
const base = { entityId, enabled: true };
|
|
15
|
+
switch (type) {
|
|
16
|
+
case 'Transform':
|
|
17
|
+
return { ...base, type: 'Transform', position: { ...ZERO }, rotation: 0, scale: { ...ONE }, prevPosition: { ...ZERO }, prevRotation: 0 };
|
|
18
|
+
case 'Sprite':
|
|
19
|
+
return { ...base, type: 'Sprite', assetId: null, srcRect: null, width: 32, height: 32, anchor: { x: 0.5, y: 0.5 }, tint: { ...WHITE }, opacity: 1, flipX: false, flipY: false, layer: 0, visible: true };
|
|
20
|
+
case 'Shape':
|
|
21
|
+
// as unknown as: TS can't narrow generic K in switch; Shape.shape conflicts with Collider2D.shape
|
|
22
|
+
return { ...base, type: 'Shape', shape: 'rect', width: 32, height: 32, radius: 16, points: [], lineStart: { ...ZERO }, lineEnd: { x: 32, y: 0 }, fillColor: { ...WHITE }, strokeColor: { ...BLACK }, strokeWidth: 0, layer: 0, visible: true };
|
|
23
|
+
case 'Collider2D':
|
|
24
|
+
return { ...base, type: 'Collider2D', shape: 'aabb', width: 32, height: 32, radius: 16, points: [], offset: { ...ZERO }, isTrigger: false, layer: 1, mask: 0xFFFF };
|
|
25
|
+
case 'RigidBody2D':
|
|
26
|
+
return { ...base, type: 'RigidBody2D', bodyType: 'dynamic', velocity: { ...ZERO }, acceleration: { ...ZERO }, angularVelocity: 0, mass: 1, drag: 0, angularDrag: 0, restitution: 0.3, friction: 0.5, gravityScale: 1, fixedRotation: false };
|
|
27
|
+
case 'Text':
|
|
28
|
+
return { ...base, type: 'Text', text: '', fontSize: 16, fontFamily: 'sans-serif', color: { ...WHITE }, align: 'center', baseline: 'middle', layer: 10, visible: true };
|
|
29
|
+
case 'Animator':
|
|
30
|
+
return { ...base, type: 'Animator', currentAnimation: '', animations: {}, frame: 0, elapsed: 0, playing: false, loop: true };
|
|
31
|
+
case 'Script':
|
|
32
|
+
return { ...base, type: 'Script', scriptId: '', variables: {} };
|
|
33
|
+
case 'AudioSource':
|
|
34
|
+
return { ...base, type: 'AudioSource', soundId: '', volume: 1, loop: false, spatial: false, maxDistance: 500, autoPlay: false, playing: false };
|
|
35
|
+
case 'ParticleEmitter':
|
|
36
|
+
return { ...base, type: 'ParticleEmitter', emitting: false, rate: 10, lifetime: [0.5, 1.5], speed: [50, 150], angle: [0, 360], size: [2, 6], sizeEnd: [0, 0], color: { ...WHITE }, colorEnd: { r: 1, g: 1, b: 1, a: 0 }, gravity: { x: 0, y: 100 }, maxParticles: 100 };
|
|
37
|
+
case 'CameraTarget':
|
|
38
|
+
return { ...base, type: 'CameraTarget', priority: 0, smoothing: 0.1, deadzone: { x: 50, y: 30 }, lookahead: { ...ZERO } };
|
|
39
|
+
default:
|
|
40
|
+
throw new Error(`Unknown component type: ${type}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/* ────────────────────────────────────────────────────────────────
|
|
44
|
+
SYSTEM — base class for game systems
|
|
45
|
+
──────────────────────────────────────────────────────────────── */
|
|
46
|
+
class System {
|
|
47
|
+
constructor(priority = 0) {
|
|
48
|
+
this.enabled = true;
|
|
49
|
+
this.priority = priority;
|
|
50
|
+
}
|
|
51
|
+
/** Called once when added to world. */
|
|
52
|
+
init(_world) { }
|
|
53
|
+
/** Called every frame. */
|
|
54
|
+
update(_world, _dt) { }
|
|
55
|
+
/** Called at fixed timestep (physics). */
|
|
56
|
+
fixedUpdate(_world, _fixedDt) { }
|
|
57
|
+
/** Called when removed from world. */
|
|
58
|
+
destroy(_world) { }
|
|
59
|
+
/** Alias for destroy() — unified cleanup pattern. */
|
|
60
|
+
dispose(world) { this.destroy(world); }
|
|
61
|
+
}
|
|
62
|
+
/* ────────────────────────────────────────────────────────────────
|
|
63
|
+
WORLD — Container for entities, components, and systems
|
|
64
|
+
──────────────────────────────────────────────────────────────── */
|
|
65
|
+
class World {
|
|
66
|
+
constructor() {
|
|
67
|
+
this.events = new EventBus();
|
|
68
|
+
this._nextId = 1;
|
|
69
|
+
this.entities = new Map();
|
|
70
|
+
this.components = new Map();
|
|
71
|
+
this.systems = [];
|
|
72
|
+
this.systemsSorted = false;
|
|
73
|
+
}
|
|
74
|
+
/* ── Entity management ──────────────────────────────────────── */
|
|
75
|
+
createEntity(name = 'Entity') {
|
|
76
|
+
const id = this._nextId++;
|
|
77
|
+
const entity = {
|
|
78
|
+
id,
|
|
79
|
+
name,
|
|
80
|
+
tags: new Set(),
|
|
81
|
+
enabled: true,
|
|
82
|
+
parent: null,
|
|
83
|
+
children: [],
|
|
84
|
+
};
|
|
85
|
+
this.entities.set(id, entity);
|
|
86
|
+
this.events.emit('entity:created', id);
|
|
87
|
+
return entity;
|
|
88
|
+
}
|
|
89
|
+
destroyEntity(id) {
|
|
90
|
+
const entity = this.entities.get(id);
|
|
91
|
+
if (!entity) {
|
|
92
|
+
if (typeof console !== 'undefined')
|
|
93
|
+
console.warn(`[World] destroyEntity: entity ${id} not found`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Destroy children recursively
|
|
97
|
+
for (const childId of [...entity.children]) {
|
|
98
|
+
this.destroyEntity(childId);
|
|
99
|
+
}
|
|
100
|
+
// Remove from parent
|
|
101
|
+
if (entity.parent != null) {
|
|
102
|
+
const parent = this.entities.get(entity.parent);
|
|
103
|
+
if (parent) {
|
|
104
|
+
parent.children = parent.children.filter(c => c !== id);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Remove all components
|
|
108
|
+
for (const [, compMap] of this.components) {
|
|
109
|
+
compMap.delete(id);
|
|
110
|
+
}
|
|
111
|
+
this.entities.delete(id);
|
|
112
|
+
this.events.emit('entity:destroyed', id);
|
|
113
|
+
}
|
|
114
|
+
getEntity(id) {
|
|
115
|
+
return this.entities.get(id);
|
|
116
|
+
}
|
|
117
|
+
/** Get all entities (alive). */
|
|
118
|
+
allEntities() {
|
|
119
|
+
return Array.from(this.entities.values());
|
|
120
|
+
}
|
|
121
|
+
/** Find first entity with given tag. */
|
|
122
|
+
findByTag(tag) {
|
|
123
|
+
for (const e of this.entities.values()) {
|
|
124
|
+
if (e.tags.has(tag))
|
|
125
|
+
return e;
|
|
126
|
+
}
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
/** Find all entities with given tag. */
|
|
130
|
+
findAllByTag(tag) {
|
|
131
|
+
const result = [];
|
|
132
|
+
for (const e of this.entities.values()) {
|
|
133
|
+
if (e.tags.has(tag))
|
|
134
|
+
result.push(e);
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
/** Find first entity with given name. */
|
|
139
|
+
findByName(name) {
|
|
140
|
+
for (const e of this.entities.values()) {
|
|
141
|
+
if (e.name === name)
|
|
142
|
+
return e;
|
|
143
|
+
}
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
get entityCount() {
|
|
147
|
+
return this.entities.size;
|
|
148
|
+
}
|
|
149
|
+
/* ── Parenting ──────────────────────────────────────────────── */
|
|
150
|
+
setParent(childId, parentId) {
|
|
151
|
+
const child = this.entities.get(childId);
|
|
152
|
+
if (!child) {
|
|
153
|
+
if (typeof console !== 'undefined')
|
|
154
|
+
console.warn(`[World] setParent: entity ${childId} not found`);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
// Remove from old parent
|
|
158
|
+
if (child.parent != null) {
|
|
159
|
+
const oldParent = this.entities.get(child.parent);
|
|
160
|
+
if (oldParent) {
|
|
161
|
+
oldParent.children = oldParent.children.filter(c => c !== childId);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
child.parent = parentId;
|
|
165
|
+
if (parentId != null) {
|
|
166
|
+
const parent = this.entities.get(parentId);
|
|
167
|
+
if (parent && !parent.children.includes(childId)) {
|
|
168
|
+
parent.children.push(childId);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/* ── Component management ───────────────────────────────────── */
|
|
173
|
+
addComponent(entityId, type, overrides) {
|
|
174
|
+
const comp = createDefaultComponent(type, entityId);
|
|
175
|
+
if (overrides)
|
|
176
|
+
Object.assign(comp, overrides, { type, entityId });
|
|
177
|
+
let map = this.components.get(type);
|
|
178
|
+
if (!map) {
|
|
179
|
+
map = new Map();
|
|
180
|
+
this.components.set(type, map);
|
|
181
|
+
}
|
|
182
|
+
map.set(entityId, comp);
|
|
183
|
+
this.events.emit('component:added', { entityId, type });
|
|
184
|
+
return comp;
|
|
185
|
+
}
|
|
186
|
+
removeComponent(entityId, type) {
|
|
187
|
+
const map = this.components.get(type);
|
|
188
|
+
if (map) {
|
|
189
|
+
map.delete(entityId);
|
|
190
|
+
this.events.emit('component:removed', { entityId, type });
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
getComponent(entityId, type) {
|
|
194
|
+
const map = this.components.get(type);
|
|
195
|
+
return map === null || map === void 0 ? void 0 : map.get(entityId);
|
|
196
|
+
}
|
|
197
|
+
hasComponent(entityId, type) {
|
|
198
|
+
var _a;
|
|
199
|
+
const map = this.components.get(type);
|
|
200
|
+
return (_a = map === null || map === void 0 ? void 0 : map.has(entityId)) !== null && _a !== void 0 ? _a : false;
|
|
201
|
+
}
|
|
202
|
+
/** Query all entities that have ALL specified components. */
|
|
203
|
+
query(...types) {
|
|
204
|
+
if (types.length === 0)
|
|
205
|
+
return [];
|
|
206
|
+
const maps = types.map(t => this.components.get(t));
|
|
207
|
+
if (maps.some(m => !m))
|
|
208
|
+
return [];
|
|
209
|
+
// Start with smallest set for efficiency
|
|
210
|
+
const sorted = maps.slice().sort((a, b) => { var _a, _b; return ((_a = a === null || a === void 0 ? void 0 : a.size) !== null && _a !== void 0 ? _a : 0) - ((_b = b === null || b === void 0 ? void 0 : b.size) !== null && _b !== void 0 ? _b : 0); });
|
|
211
|
+
const smallest = sorted[0];
|
|
212
|
+
const rest = sorted.slice(1);
|
|
213
|
+
const result = [];
|
|
214
|
+
for (const id of smallest.keys()) {
|
|
215
|
+
if (rest.every(m => m.has(id))) {
|
|
216
|
+
const entity = this.entities.get(id);
|
|
217
|
+
if (entity === null || entity === void 0 ? void 0 : entity.enabled)
|
|
218
|
+
result.push(id);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
/** Get all components of a type (as a Map). */
|
|
224
|
+
getComponentsOfType(type) {
|
|
225
|
+
var _a;
|
|
226
|
+
return ((_a = this.components.get(type)) !== null && _a !== void 0 ? _a : new Map());
|
|
227
|
+
}
|
|
228
|
+
/* ── System management ──────────────────────────────────────── */
|
|
229
|
+
addSystem(system) {
|
|
230
|
+
this.systems.push(system);
|
|
231
|
+
this.systemsSorted = false;
|
|
232
|
+
system.init(this);
|
|
233
|
+
this.events.emit('system:added', system);
|
|
234
|
+
}
|
|
235
|
+
removeSystem(system) {
|
|
236
|
+
const idx = this.systems.indexOf(system);
|
|
237
|
+
if (idx >= 0) {
|
|
238
|
+
system.destroy(this);
|
|
239
|
+
this.systems.splice(idx, 1);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
ensureSorted() {
|
|
243
|
+
if (!this.systemsSorted) {
|
|
244
|
+
this.systems.sort((a, b) => a.priority - b.priority);
|
|
245
|
+
this.systemsSorted = true;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/* ── Update ─────────────────────────────────────────────────── */
|
|
249
|
+
update(dt) {
|
|
250
|
+
this.ensureSorted();
|
|
251
|
+
for (const sys of this.systems) {
|
|
252
|
+
if (sys.enabled)
|
|
253
|
+
sys.update(this, dt);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
fixedUpdate(fixedDt) {
|
|
257
|
+
this.ensureSorted();
|
|
258
|
+
for (const sys of this.systems) {
|
|
259
|
+
if (sys.enabled)
|
|
260
|
+
sys.fixedUpdate(this, fixedDt);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
/* ── Serialization ──────────────────────────────────────────── */
|
|
264
|
+
/** Clear all entities, components, and systems. */
|
|
265
|
+
clear() {
|
|
266
|
+
for (const sys of this.systems)
|
|
267
|
+
sys.destroy(this);
|
|
268
|
+
this.systems.length = 0;
|
|
269
|
+
this.entities.clear();
|
|
270
|
+
this.components.clear();
|
|
271
|
+
this._nextId = 1;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export { System, World, createDefaultComponent };
|
|
276
|
+
//# sourceMappingURL=World.js.map
|