@nice2dev/game-engine 1.3.14 → 1.3.16
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 +13 -0
- package/dist/cjs/accessibility/Accessibility.js +152 -165
- package/dist/cjs/ai/AI.js +292 -294
- package/dist/cjs/ai/BehaviorTree.js +1029 -1113
- package/dist/cjs/ai/StateMachine.js +694 -756
- package/dist/cjs/animation/Animation.js +232 -241
- package/dist/cjs/audio/AudioAdvanced.js +221 -236
- package/dist/cjs/audio/AudioBridge.js +441 -435
- package/dist/cjs/audio/AudioManager.js +242 -259
- package/dist/cjs/build-cloud/BuildOrchestration.js +1059 -1098
- package/dist/cjs/build-cloud/GodotBuildCloud.js +641 -670
- package/dist/cjs/build-cloud/UnityBuildCloud.js +563 -610
- package/dist/cjs/build-cloud/UnrealBuildCloud.js +610 -635
- package/dist/cjs/core/EventBus.js +51 -56
- package/dist/cjs/core/GameClock.js +62 -66
- package/dist/cjs/core/GameConfig.js +72 -79
- package/dist/cjs/core/GameLoop.js +80 -89
- package/dist/cjs/core/ServiceLocator.js +61 -65
- package/dist/cjs/core/Validation.js +72 -82
- package/dist/cjs/core/math.js +108 -112
- package/dist/cjs/devtools/DevTools.js +542 -563
- package/dist/cjs/devtools/DeveloperExperience.js +521 -559
- package/dist/cjs/devtools/GameplayAnalytics.js +636 -646
- package/dist/cjs/dialogue/DialogueSystem.js +984 -986
- package/dist/cjs/docs/DocGenerator.js +339 -364
- package/dist/cjs/ecs/World.js +355 -371
- package/dist/cjs/editor/AchievementEditor.js +580 -636
- package/dist/cjs/editor/AdvancedEditor.js +184 -191
- package/dist/cjs/editor/AnimationRetargeting.js +696 -741
- package/dist/cjs/editor/AssetBrowser.js +1072 -1160
- package/dist/cjs/editor/AssetManager.js +187 -192
- package/dist/cjs/editor/ConsolePro.js +971 -1061
- package/dist/cjs/editor/CraftingEditor.js +680 -730
- package/dist/cjs/editor/DebugTools.js +187 -185
- package/dist/cjs/editor/DialogueSystem.js +844 -901
- package/dist/cjs/editor/LeaderboardSystem.js +429 -483
- package/dist/cjs/editor/NiceGameEditor.js +1903 -1201
- package/dist/cjs/editor/PrefabSystem.js +772 -838
- package/dist/cjs/editor/ProfilerPanel.js +649 -700
- package/dist/cjs/editor/QuestEditor.js +792 -839
- package/dist/cjs/editor/ReplaySystem.js +585 -634
- package/dist/cjs/editor/SceneEditor.js +176 -200
- package/dist/cjs/editor/ScreenshotMode.js +621 -688
- package/dist/cjs/editor/ShaderGraph.js +1556 -1582
- package/dist/cjs/editor/TimelineEditor.js +715 -778
- package/dist/cjs/editor/UndoRedoPro.js +830 -904
- package/dist/cjs/editor/VRARMode.js +582 -645
- package/dist/cjs/engine/NiceGameEngine.js +141 -164
- package/dist/cjs/engine/SaveSystem.js +441 -495
- package/dist/cjs/enterprise/Enterprise.js +254 -261
- package/dist/cjs/export/BevyExporter.js +927 -967
- package/dist/cjs/export/CocosExporter.js +644 -673
- package/dist/cjs/export/Construct3Exporter.js +783 -794
- package/dist/cjs/export/DefoldExporter.js +1028 -1069
- package/dist/cjs/export/GDevelopExporter.js +674 -708
- package/dist/cjs/export/GameMakerExporter.js +791 -805
- package/dist/cjs/export/GodotExporter.js +1003 -1045
- package/dist/cjs/export/MinecraftBedrockExporter.js +573 -578
- package/dist/cjs/export/MonoGameExporter.js +1265 -1293
- package/dist/cjs/export/Pico8Exporter.js +766 -812
- package/dist/cjs/export/PlatformExporter.js +188 -206
- package/dist/cjs/export/RPGMakerExporter.js +860 -879
- package/dist/cjs/export/RobloxExporter.js +883 -919
- package/dist/cjs/export/Solar2DExporter.js +1218 -1256
- package/dist/cjs/export/ThreeJSExporter.js +1006 -1073
- package/dist/cjs/export/Tic80Exporter.js +1210 -1267
- package/dist/cjs/export/UnityExporter.js +1116 -1131
- package/dist/cjs/export/UnrealExporter.js +889 -919
- package/dist/cjs/export/WebExporter.js +931 -970
- package/dist/cjs/export/index.js +42 -65
- package/dist/cjs/godot-integration/GodotAssetLibrary.js +659 -692
- package/dist/cjs/godot-integration/GodotImport.js +929 -1027
- package/dist/cjs/godot-integration/GodotLiveLink.js +915 -945
- package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +911 -611
- package/dist/cjs/i18n/I18n.js +860 -900
- package/dist/cjs/i18n/useTranslation.js +84 -89
- package/dist/cjs/import/AsepriteImporter.js +658 -716
- package/dist/cjs/import/DragonBonesImporter.js +437 -461
- package/dist/cjs/import/GameMakerImporter.js +511 -521
- package/dist/cjs/import/GodotSceneImporter.js +788 -822
- package/dist/cjs/import/LDtkImporter.js +436 -454
- package/dist/cjs/import/Live2DImporter.js +497 -518
- package/dist/cjs/import/NdgFormat.js +424 -457
- package/dist/cjs/import/OgmoImporter.js +466 -493
- package/dist/cjs/import/RPGMakerImporter.js +451 -477
- package/dist/cjs/import/SceneImporter.js +378 -423
- package/dist/cjs/import/SpineImporter.js +511 -546
- package/dist/cjs/import/SpriterImporter.js +590 -613
- package/dist/cjs/import/TiledMapImporter.js +811 -846
- package/dist/cjs/import/UnitySceneImporter.js +687 -703
- package/dist/cjs/import/index.js +206 -251
- package/dist/cjs/index.js +275 -278
- package/dist/cjs/input/GamepadNavigation.js +185 -205
- package/dist/cjs/input/InputManager.js +397 -421
- package/dist/cjs/input/useGamepads.js +70 -81
- package/dist/cjs/integration/IconSprite.js +129 -256
- package/dist/cjs/inventory/InventorySystem.js +920 -995
- package/dist/cjs/kids/KidMode.js +997 -1022
- package/dist/cjs/kids/KidTools.js +570 -594
- package/dist/cjs/monetization/Monetization.js +170 -177
- package/dist/cjs/multiplayer/LocalMultiplayer.js +287 -287
- package/dist/cjs/multiplayer/MiniGameTypes.js +49 -59
- package/dist/cjs/native-engine/AnimationSystem.js +731 -806
- package/dist/cjs/native-engine/AssetPipeline.js +454 -515
- package/dist/cjs/native-engine/AudioEngine.js +763 -804
- package/dist/cjs/native-engine/InputSystem.js +1075 -1145
- package/dist/cjs/native-engine/NetworkingSystem.js +733 -793
- package/dist/cjs/native-engine/PhysicsEngine.js +583 -607
- package/dist/cjs/native-engine/RenderingEngine.js +302 -350
- package/dist/cjs/native-engine/SceneGraph.js +769 -808
- package/dist/cjs/network/MultiplayerTransport.js +97 -132
- package/dist/cjs/network/Networking.js +549 -564
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js +21 -29
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +40 -48
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +35 -43
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +10 -15
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js +103 -135
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +131 -158
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +39 -53
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +5 -8
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +40 -48
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +494 -572
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +826 -953
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +125 -146
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +13 -23
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js +11 -25
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js +13 -24
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +108 -121
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js +10 -14
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +150 -185
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +158 -196
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +90 -105
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js +30 -35
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +16 -21
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js +215 -248
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +135 -157
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +76 -85
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js +24 -27
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +3 -4
- package/dist/cjs/pathfinding/Pathfinding.js +245 -263
- package/dist/cjs/performance/AssetStreaming.js +561 -635
- package/dist/cjs/performance/BenchmarkSuite.js +283 -311
- package/dist/cjs/performance/DeltaCompression.js +467 -526
- package/dist/cjs/performance/DeterministicPhysics.js +450 -498
- package/dist/cjs/performance/ECSOptimization.js +644 -695
- package/dist/cjs/performance/GameSaveSystem.js +509 -556
- package/dist/cjs/performance/HotReload.js +447 -500
- package/dist/cjs/performance/InputRecording.js +511 -561
- package/dist/cjs/performance/InterestManagement.js +453 -500
- package/dist/cjs/performance/LocalizationRuntime.js +376 -423
- package/dist/cjs/performance/MemoryManagement.js +410 -470
- package/dist/cjs/performance/ModSupport.js +445 -496
- package/dist/cjs/performance/MultiThreadedPhysics.js +400 -443
- package/dist/cjs/performance/NetworkPrediction.js +424 -482
- package/dist/cjs/performance/ObjectPooling.js +569 -617
- package/dist/cjs/performance/Performance.js +174 -190
- package/dist/cjs/performance/PerformanceAdvanced.js +614 -637
- package/dist/cjs/performance/WebGPURenderer.js +656 -683
- package/dist/cjs/physics/PhysicsAdvanced.js +345 -379
- package/dist/cjs/physics/PhysicsEngine2D.js +391 -427
- package/dist/cjs/plugins/PluginSDK.js +432 -466
- package/dist/cjs/plugins/PluginTestKit.js +307 -330
- package/dist/cjs/procedural/Procedural.js +243 -254
- package/dist/cjs/procedural/WorldBuilding.js +297 -314
- package/dist/cjs/quest/QuestSystem.js +975 -932
- package/dist/cjs/release/MobileExport.js +157 -163
- package/dist/cjs/release/Release.js +225 -238
- package/dist/cjs/rendering/Camera2D.js +121 -124
- package/dist/cjs/rendering/Renderer2D.js +321 -335
- package/dist/cjs/rendering/WebGPURenderPipeline.js +632 -651
- package/dist/cjs/runtime3d/Runtime3D.js +359 -378
- package/dist/cjs/runtime3d/SceneEditor3D.js +252 -263
- package/dist/cjs/scene/SceneManager.js +177 -193
- package/dist/cjs/scripting/GraphToAST.js +574 -547
- package/dist/cjs/scripting/LanguageExporter.js +254 -279
- package/dist/cjs/scripting/NodeGraph.js +546 -570
- package/dist/cjs/scripting/ScriptAST.js +31 -39
- package/dist/cjs/scripting/VisualScripting2.js +1016 -1065
- package/dist/cjs/scripting/exporters/CSharpExporter.js +464 -496
- package/dist/cjs/scripting/exporters/GDScriptExporter.js +390 -442
- package/dist/cjs/scripting/exporters/LuaExporter.js +406 -447
- package/dist/cjs/scripting/exporters/PythonExporter.js +484 -549
- package/dist/cjs/scripting/exporters/RustExporter.js +459 -512
- package/dist/cjs/scripting/exporters/TypeScriptExporter.js +505 -556
- package/dist/cjs/social/Social.js +72 -80
- package/dist/cjs/systems/LightingSystem.js +844 -931
- package/dist/cjs/systems/ParticleSystem2.js +1447 -1451
- package/dist/cjs/systems/PhysicsDebugSystem.js +1070 -1141
- package/dist/cjs/systems/TerrainSystem.js +985 -1098
- package/dist/cjs/templates/ActionTemplates.js +296 -309
- package/dist/cjs/templates/FightingTemplate.js +417 -463
- package/dist/cjs/templates/MetroidvaniaTemplate.js +353 -405
- package/dist/cjs/templates/PartyTemplates.js +190 -202
- package/dist/cjs/templates/PuzzleTemplates.js +245 -261
- package/dist/cjs/templates/RPGTemplates.js +160 -178
- package/dist/cjs/templates/SportsTemplates.js +237 -250
- package/dist/cjs/templates/StrategyTemplates.js +143 -153
- package/dist/cjs/templates/SurvivalTemplate.js +336 -380
- package/dist/cjs/templates/WaveDefense.js +499 -526
- package/dist/cjs/tilemap/Tilemap.js +207 -214
- package/dist/cjs/tutorials/TutorialBranching.js +396 -417
- package/dist/cjs/tutorials/TutorialEngine.js +888 -931
- package/dist/cjs/tutorials/TutorialOverlay.js +602 -640
- package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +787 -809
- package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +736 -756
- package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +754 -778
- package/dist/cjs/ui/GameUI.js +295 -312
- package/dist/cjs/unity-integration/UnityAssetStore.js +700 -741
- package/dist/cjs/unity-integration/UnityImport.js +1066 -1176
- package/dist/cjs/unity-integration/UnityLiveLink.js +934 -981
- package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +1233 -757
- package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +1240 -768
- package/dist/cjs/unreal-integration/UnrealImport.js +391 -412
- package/dist/cjs/unreal-integration/UnrealLiveLink.js +1102 -1137
- package/dist/cjs/unreal-integration/UnrealMarketplace.js +436 -473
- package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +1150 -767
- package/dist/cjs/xr/ARVR.js +167 -175
- package/dist/esm/accessibility/Accessibility.js +160 -164
- package/dist/esm/ai/AI.js +310 -293
- package/dist/esm/ai/BehaviorTree.js +1057 -1112
- package/dist/esm/ai/StateMachine.js +709 -755
- package/dist/esm/animation/Animation.js +237 -240
- package/dist/esm/audio/AudioAdvanced.js +239 -235
- package/dist/esm/audio/AudioBridge.js +448 -434
- package/dist/esm/audio/AudioManager.js +243 -258
- package/dist/esm/build-cloud/BuildOrchestration.js +1071 -1097
- package/dist/esm/build-cloud/GodotBuildCloud.js +647 -669
- package/dist/esm/build-cloud/UnityBuildCloud.js +571 -609
- package/dist/esm/build-cloud/UnrealBuildCloud.js +615 -634
- package/dist/esm/core/EventBus.js +52 -55
- package/dist/esm/core/GameClock.js +63 -65
- package/dist/esm/core/GameConfig.js +77 -78
- package/dist/esm/core/GameLoop.js +81 -88
- package/dist/esm/core/ServiceLocator.js +63 -64
- package/dist/esm/core/Validation.js +82 -81
- package/dist/esm/core/math.js +109 -111
- package/dist/esm/devtools/DevTools.js +546 -562
- package/dist/esm/devtools/DeveloperExperience.js +535 -558
- package/dist/esm/devtools/GameplayAnalytics.js +647 -645
- package/dist/esm/dialogue/DialogueSystem.js +998 -985
- package/dist/esm/docs/DocGenerator.js +342 -363
- package/dist/esm/ecs/World.js +358 -370
- package/dist/esm/editor/AchievementEditor.js +584 -635
- package/dist/esm/editor/AdvancedEditor.js +191 -190
- package/dist/esm/editor/AnimationRetargeting.js +700 -740
- package/dist/esm/editor/AssetBrowser.js +1078 -1159
- package/dist/esm/editor/AssetManager.js +188 -191
- package/dist/esm/editor/ConsolePro.js +977 -1060
- package/dist/esm/editor/CraftingEditor.js +684 -729
- package/dist/esm/editor/DebugTools.js +194 -184
- package/dist/esm/editor/DialogueSystem.js +849 -900
- package/dist/esm/editor/LeaderboardSystem.js +433 -482
- package/dist/esm/editor/NiceGameEditor.js +1908 -1200
- package/dist/esm/editor/PrefabSystem.js +777 -837
- package/dist/esm/editor/ProfilerPanel.js +654 -699
- package/dist/esm/editor/QuestEditor.js +795 -838
- package/dist/esm/editor/ReplaySystem.js +591 -633
- package/dist/esm/editor/SceneEditor.js +189 -199
- package/dist/esm/editor/ScreenshotMode.js +628 -687
- package/dist/esm/editor/ShaderGraph.js +1565 -1581
- package/dist/esm/editor/TimelineEditor.js +733 -777
- package/dist/esm/editor/UndoRedoPro.js +835 -903
- package/dist/esm/editor/VRARMode.js +586 -644
- package/dist/esm/engine/NiceGameEngine.js +142 -163
- package/dist/esm/engine/SaveSystem.js +447 -494
- package/dist/esm/enterprise/Enterprise.js +265 -260
- package/dist/esm/export/BevyExporter.js +929 -966
- package/dist/esm/export/CocosExporter.js +646 -672
- package/dist/esm/export/Construct3Exporter.js +785 -793
- package/dist/esm/export/DefoldExporter.js +1030 -1068
- package/dist/esm/export/GDevelopExporter.js +676 -707
- package/dist/esm/export/GameMakerExporter.js +793 -804
- package/dist/esm/export/GodotExporter.js +1004 -1044
- package/dist/esm/export/MinecraftBedrockExporter.js +575 -577
- package/dist/esm/export/MonoGameExporter.js +1267 -1292
- package/dist/esm/export/Pico8Exporter.js +768 -811
- package/dist/esm/export/PlatformExporter.js +193 -205
- package/dist/esm/export/RPGMakerExporter.js +862 -878
- package/dist/esm/export/RobloxExporter.js +885 -918
- package/dist/esm/export/Solar2DExporter.js +1220 -1255
- package/dist/esm/export/ThreeJSExporter.js +1007 -1072
- package/dist/esm/export/Tic80Exporter.js +1212 -1266
- package/dist/esm/export/UnityExporter.js +1117 -1130
- package/dist/esm/export/UnrealExporter.js +891 -918
- package/dist/esm/export/WebExporter.js +933 -969
- package/dist/esm/export/index.js +86 -71
- package/dist/esm/godot-integration/GodotAssetLibrary.js +663 -691
- package/dist/esm/godot-integration/GodotImport.js +935 -1026
- package/dist/esm/godot-integration/GodotLiveLink.js +918 -944
- package/dist/esm/godot-integration/components/GodotProjectBrowser.js +912 -610
- package/dist/esm/i18n/I18n.js +871 -899
- package/dist/esm/i18n/useTranslation.js +88 -88
- package/dist/esm/import/AsepriteImporter.js +637 -715
- package/dist/esm/import/DragonBonesImporter.js +417 -460
- package/dist/esm/import/GameMakerImporter.js +491 -520
- package/dist/esm/import/GodotSceneImporter.js +767 -821
- package/dist/esm/import/LDtkImporter.js +415 -453
- package/dist/esm/import/Live2DImporter.js +477 -517
- package/dist/esm/import/NdgFormat.js +410 -456
- package/dist/esm/import/OgmoImporter.js +446 -492
- package/dist/esm/import/RPGMakerImporter.js +431 -476
- package/dist/esm/import/SceneImporter.js +385 -422
- package/dist/esm/import/SpineImporter.js +491 -545
- package/dist/esm/import/SpriterImporter.js +570 -612
- package/dist/esm/import/TiledMapImporter.js +790 -845
- package/dist/esm/import/UnitySceneImporter.js +666 -702
- package/dist/esm/import/index.js +247 -258
- package/dist/esm/index.js +1332 -188
- package/dist/esm/input/GamepadNavigation.js +187 -204
- package/dist/esm/input/InputManager.js +401 -420
- package/dist/esm/input/useGamepads.js +72 -80
- package/dist/esm/integration/IconSprite.js +143 -255
- package/dist/esm/inventory/InventorySystem.js +925 -994
- package/dist/esm/kids/KidMode.js +1003 -1021
- package/dist/esm/kids/KidTools.js +573 -593
- package/dist/esm/monetization/Monetization.js +180 -176
- package/dist/esm/multiplayer/LocalMultiplayer.js +290 -286
- package/dist/esm/multiplayer/MiniGameTypes.js +58 -58
- package/dist/esm/native-engine/AnimationSystem.js +735 -805
- package/dist/esm/native-engine/AssetPipeline.js +456 -514
- package/dist/esm/native-engine/AudioEngine.js +765 -803
- package/dist/esm/native-engine/InputSystem.js +1079 -1144
- package/dist/esm/native-engine/NetworkingSystem.js +740 -792
- package/dist/esm/native-engine/PhysicsEngine.js +585 -606
- package/dist/esm/native-engine/RenderingEngine.js +304 -349
- package/dist/esm/native-engine/SceneGraph.js +773 -807
- package/dist/esm/network/MultiplayerTransport.js +99 -131
- package/dist/esm/network/Networking.js +556 -563
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js +22 -28
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js +41 -47
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js +36 -42
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js +11 -14
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js +111 -134
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js +132 -157
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js +40 -52
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js +6 -7
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js +42 -47
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js +496 -571
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js +828 -952
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js +126 -145
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js +14 -23
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js +12 -25
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js +15 -24
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js +109 -120
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js +11 -13
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js +151 -184
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js +159 -195
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js +91 -104
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js +31 -34
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js +17 -20
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js +230 -248
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js +136 -156
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js +77 -84
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js +31 -12
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js +4 -3
- package/dist/esm/pathfinding/Pathfinding.js +249 -262
- package/dist/esm/performance/AssetStreaming.js +567 -634
- package/dist/esm/performance/BenchmarkSuite.js +285 -310
- package/dist/esm/performance/DeltaCompression.js +478 -525
- package/dist/esm/performance/DeterministicPhysics.js +479 -497
- package/dist/esm/performance/ECSOptimization.js +653 -694
- package/dist/esm/performance/GameSaveSystem.js +515 -555
- package/dist/esm/performance/HotReload.js +454 -499
- package/dist/esm/performance/InputRecording.js +520 -560
- package/dist/esm/performance/InterestManagement.js +460 -499
- package/dist/esm/performance/LocalizationRuntime.js +382 -422
- package/dist/esm/performance/MemoryManagement.js +415 -469
- package/dist/esm/performance/ModSupport.js +455 -495
- package/dist/esm/performance/MultiThreadedPhysics.js +408 -442
- package/dist/esm/performance/NetworkPrediction.js +436 -481
- package/dist/esm/performance/ObjectPooling.js +582 -616
- package/dist/esm/performance/Performance.js +182 -189
- package/dist/esm/performance/PerformanceAdvanced.js +621 -636
- package/dist/esm/performance/WebGPURenderer.js +660 -682
- package/dist/esm/physics/PhysicsAdvanced.js +359 -378
- package/dist/esm/physics/PhysicsEngine2D.js +393 -426
- package/dist/esm/plugins/PluginSDK.js +435 -465
- package/dist/esm/plugins/PluginTestKit.js +315 -329
- package/dist/esm/procedural/Procedural.js +248 -253
- package/dist/esm/procedural/WorldBuilding.js +316 -313
- package/dist/esm/quest/QuestSystem.js +982 -931
- package/dist/esm/release/MobileExport.js +163 -162
- package/dist/esm/release/Release.js +234 -237
- package/dist/esm/rendering/Camera2D.js +122 -123
- package/dist/esm/rendering/Renderer2D.js +323 -334
- package/dist/esm/rendering/WebGPURenderPipeline.js +647 -650
- package/dist/esm/runtime3d/Runtime3D.js +368 -377
- package/dist/esm/runtime3d/SceneEditor3D.js +268 -262
- package/dist/esm/scene/SceneManager.js +178 -192
- package/dist/esm/scripting/GraphToAST.js +576 -546
- package/dist/esm/scripting/LanguageExporter.js +263 -278
- package/dist/esm/scripting/NodeGraph.js +550 -569
- package/dist/esm/scripting/ScriptAST.js +45 -38
- package/dist/esm/scripting/VisualScripting2.js +1025 -1064
- package/dist/esm/scripting/exporters/CSharpExporter.js +465 -495
- package/dist/esm/scripting/exporters/GDScriptExporter.js +391 -441
- package/dist/esm/scripting/exporters/LuaExporter.js +407 -446
- package/dist/esm/scripting/exporters/PythonExporter.js +485 -548
- package/dist/esm/scripting/exporters/RustExporter.js +460 -511
- package/dist/esm/scripting/exporters/TypeScriptExporter.js +506 -555
- package/dist/esm/social/Social.js +77 -79
- package/dist/esm/systems/LightingSystem.js +855 -930
- package/dist/esm/systems/ParticleSystem2.js +1453 -1450
- package/dist/esm/systems/PhysicsDebugSystem.js +1078 -1140
- package/dist/esm/systems/TerrainSystem.js +996 -1097
- package/dist/esm/templates/ActionTemplates.js +307 -308
- package/dist/esm/templates/FightingTemplate.js +439 -462
- package/dist/esm/templates/MetroidvaniaTemplate.js +391 -404
- package/dist/esm/templates/PartyTemplates.js +206 -201
- package/dist/esm/templates/PuzzleTemplates.js +260 -260
- package/dist/esm/templates/RPGTemplates.js +172 -177
- package/dist/esm/templates/SportsTemplates.js +251 -249
- package/dist/esm/templates/StrategyTemplates.js +158 -152
- package/dist/esm/templates/SurvivalTemplate.js +367 -379
- package/dist/esm/templates/WaveDefense.js +501 -525
- package/dist/esm/tilemap/Tilemap.js +209 -213
- package/dist/esm/tutorials/TutorialBranching.js +399 -416
- package/dist/esm/tutorials/TutorialEngine.js +893 -930
- package/dist/esm/tutorials/TutorialOverlay.js +603 -639
- package/dist/esm/tutorials/content/Tutorials_T05_T08.js +792 -808
- package/dist/esm/tutorials/content/Tutorials_T09_T11.js +740 -755
- package/dist/esm/tutorials/content/Tutorials_T12_T15.js +759 -777
- package/dist/esm/ui/GameUI.js +296 -311
- package/dist/esm/unity-integration/UnityAssetStore.js +704 -740
- package/dist/esm/unity-integration/UnityImport.js +1071 -1175
- package/dist/esm/unity-integration/UnityLiveLink.js +938 -980
- package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +1234 -756
- package/dist/esm/unity-integration/components/UnityProjectBrowser.js +1241 -767
- package/dist/esm/unreal-integration/UnrealImport.js +395 -411
- package/dist/esm/unreal-integration/UnrealLiveLink.js +1105 -1136
- package/dist/esm/unreal-integration/UnrealMarketplace.js +442 -472
- package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +1151 -766
- package/dist/esm/xr/ARVR.js +181 -174
- package/package.json +7 -12
|
@@ -1,91 +1,80 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* useGamepads — polls connected gamepads every frame.
|
|
7
|
-
* Returns an array of GamepadSnapshot objects (0-8 pads).
|
|
8
|
-
* Designed for couch mini-games (higher level than InputManager).
|
|
9
|
-
*/
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const React = require("react");
|
|
10
4
|
const AXIS_THRESHOLD = 0.5;
|
|
11
5
|
const TRIGGER_THRESHOLD = 0.3;
|
|
12
6
|
function snapshot(gp) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
7
|
+
const btns = gp.buttons;
|
|
8
|
+
const axes = gp.axes;
|
|
9
|
+
const dpUp = !!btns[12]?.pressed;
|
|
10
|
+
const dpDown = !!btns[13]?.pressed;
|
|
11
|
+
const dpLeft = !!btns[14]?.pressed;
|
|
12
|
+
const dpRight = !!btns[15]?.pressed;
|
|
13
|
+
const lt = (btns[6]?.value ?? 0) > TRIGGER_THRESHOLD || !!btns[6]?.pressed;
|
|
14
|
+
const rt = (btns[7]?.value ?? 0) > TRIGGER_THRESHOLD || !!btns[7]?.pressed;
|
|
15
|
+
return {
|
|
16
|
+
index: gp.index,
|
|
17
|
+
up: dpUp || axes[1] != null && axes[1] < -AXIS_THRESHOLD,
|
|
18
|
+
down: dpDown || axes[1] != null && axes[1] > AXIS_THRESHOLD,
|
|
19
|
+
left: dpLeft || axes[0] != null && axes[0] < -AXIS_THRESHOLD,
|
|
20
|
+
right: dpRight || axes[0] != null && axes[0] > AXIS_THRESHOLD,
|
|
21
|
+
dpUp,
|
|
22
|
+
dpDown,
|
|
23
|
+
dpLeft,
|
|
24
|
+
dpRight,
|
|
25
|
+
lx: axes[0] ?? 0,
|
|
26
|
+
ly: axes[1] ?? 0,
|
|
27
|
+
rx: axes[2] ?? 0,
|
|
28
|
+
ry: axes[3] ?? 0,
|
|
29
|
+
a: !!btns[0]?.pressed,
|
|
30
|
+
b: !!btns[1]?.pressed,
|
|
31
|
+
x: !!btns[2]?.pressed,
|
|
32
|
+
y: !!btns[3]?.pressed,
|
|
33
|
+
lb: !!btns[4]?.pressed,
|
|
34
|
+
rb: !!btns[5]?.pressed,
|
|
35
|
+
lt,
|
|
36
|
+
rt,
|
|
37
|
+
start: !!btns[9]?.pressed,
|
|
38
|
+
select: !!btns[8]?.pressed
|
|
39
|
+
};
|
|
46
40
|
}
|
|
47
41
|
function useGamepads() {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
setPads(snaps);
|
|
60
|
-
rafRef.current = requestAnimationFrame(poll);
|
|
61
|
-
};
|
|
62
|
-
rafRef.current = requestAnimationFrame(poll);
|
|
63
|
-
return () => cancelAnimationFrame(rafRef.current);
|
|
64
|
-
}, []);
|
|
65
|
-
return pads;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* useGamepadEdges — returns snapshots + edge detection (justPressed).
|
|
69
|
-
* Compares current frame to previous frame for each button.
|
|
70
|
-
*/
|
|
71
|
-
function useGamepadEdges() {
|
|
72
|
-
const pads = useGamepads();
|
|
73
|
-
const prevRef = React.useRef([]);
|
|
74
|
-
const justPressed = (padIndex, button) => {
|
|
75
|
-
const cur = pads.find((p) => p.index === padIndex);
|
|
76
|
-
const prev = prevRef.current.find((p) => p.index === padIndex);
|
|
77
|
-
if (!cur) {
|
|
78
|
-
return false;
|
|
42
|
+
const [pads, setPads] = React.useState([]);
|
|
43
|
+
const rafRef = React.useRef(0);
|
|
44
|
+
React.useEffect(() => {
|
|
45
|
+
const poll = () => {
|
|
46
|
+
const raw = navigator.getGamepads?.() ?? [];
|
|
47
|
+
const snaps = [];
|
|
48
|
+
for (const gp of raw) {
|
|
49
|
+
if (gp) {
|
|
50
|
+
snaps.push(snapshot(gp));
|
|
79
51
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
52
|
+
}
|
|
53
|
+
setPads(snaps);
|
|
54
|
+
rafRef.current = requestAnimationFrame(poll);
|
|
83
55
|
};
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
56
|
+
rafRef.current = requestAnimationFrame(poll);
|
|
57
|
+
return () => cancelAnimationFrame(rafRef.current);
|
|
58
|
+
}, []);
|
|
59
|
+
return pads;
|
|
60
|
+
}
|
|
61
|
+
function useGamepadEdges() {
|
|
62
|
+
const pads = useGamepads();
|
|
63
|
+
const prevRef = React.useRef([]);
|
|
64
|
+
const justPressed = (padIndex, button) => {
|
|
65
|
+
const cur = pads.find((p) => p.index === padIndex);
|
|
66
|
+
const prev = prevRef.current.find((p) => p.index === padIndex);
|
|
67
|
+
if (!cur) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
const cv = cur[button];
|
|
71
|
+
const pv = prev?.[button];
|
|
72
|
+
return cv === true && pv !== true;
|
|
73
|
+
};
|
|
74
|
+
React.useEffect(() => {
|
|
75
|
+
prevRef.current = pads;
|
|
76
|
+
});
|
|
77
|
+
return { pads, justPressed };
|
|
88
78
|
}
|
|
89
|
-
|
|
90
79
|
exports.useGamepadEdges = useGamepadEdges;
|
|
91
80
|
exports.useGamepads = useGamepads;
|
|
@@ -1,287 +1,160 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
/* ────────────────────────────────────────────────────────────────
|
|
4
|
-
IconSprite — Bridge between @nice2dev/icons-gaming SVG icons
|
|
5
|
-
and the game-engine Canvas 2D renderer.
|
|
6
|
-
|
|
7
|
-
Converts React SVG icon components to rasterized textures that
|
|
8
|
-
can be used as Sprite assets, including multi-frame animation
|
|
9
|
-
sheets generated from different animation states.
|
|
10
|
-
──────────────────────────────────────────────────────────────── */
|
|
11
|
-
/* ── SVG to Image conversion ──────────────────────────────────── */
|
|
12
|
-
/**
|
|
13
|
-
* Render an icon component to an SVG string using React's static markup API.
|
|
14
|
-
* This function must be called with the result of ReactDOMServer.renderToStaticMarkup().
|
|
15
|
-
*/
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
16
3
|
function iconToSvgString(svgMarkup, size) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
return svgMarkup;
|
|
4
|
+
if (!svgMarkup.includes("xmlns=")) {
|
|
5
|
+
svgMarkup = svgMarkup.replace("<svg", '<svg xmlns="http://www.w3.org/2000/svg"');
|
|
6
|
+
}
|
|
7
|
+
if (!svgMarkup.includes("width=")) {
|
|
8
|
+
svgMarkup = svgMarkup.replace("<svg", `<svg width="${size}" height="${size}"`);
|
|
9
|
+
}
|
|
10
|
+
return svgMarkup;
|
|
26
11
|
}
|
|
27
|
-
/**
|
|
28
|
-
* Convert an SVG string to a data URL suitable for Image loading.
|
|
29
|
-
*/
|
|
30
12
|
function svgToDataUrl(svgString) {
|
|
31
|
-
|
|
32
|
-
|
|
13
|
+
const encoded = encodeURIComponent(svgString).replace(/'/g, "%27").replace(/"/g, "%22");
|
|
14
|
+
return `data:image/svg+xml,${encoded}`;
|
|
33
15
|
}
|
|
34
|
-
/**
|
|
35
|
-
* Load an SVG data URL into an HTMLImageElement (async).
|
|
36
|
-
*/
|
|
37
16
|
function loadSvgImage(dataUrl) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const img = new Image();
|
|
19
|
+
img.onload = () => resolve(img);
|
|
20
|
+
img.onerror = () => reject(new Error("Failed to load SVG image"));
|
|
21
|
+
img.src = dataUrl;
|
|
22
|
+
});
|
|
44
23
|
}
|
|
45
|
-
/**
|
|
46
|
-
* Rasterize an SVG string to an OffscreenCanvas / HTMLCanvasElement.
|
|
47
|
-
*/
|
|
48
24
|
async function rasterizeSvg(svgString, size) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
25
|
+
const dataUrl = svgToDataUrl(svgString);
|
|
26
|
+
const img = await loadSvgImage(dataUrl);
|
|
27
|
+
const canvas = document.createElement("canvas");
|
|
28
|
+
canvas.width = size;
|
|
29
|
+
canvas.height = size;
|
|
30
|
+
const ctx = canvas.getContext("2d");
|
|
31
|
+
if (!ctx) {
|
|
32
|
+
throw new Error("Failed to get 2D context");
|
|
33
|
+
}
|
|
34
|
+
ctx.drawImage(img, 0, 0, size, size);
|
|
35
|
+
return canvas;
|
|
60
36
|
}
|
|
61
|
-
/* ── Texture registration ─────────────────────────────────────── */
|
|
62
|
-
/**
|
|
63
|
-
* Generate a deterministic texture ID for an icon + options combination.
|
|
64
|
-
*/
|
|
65
37
|
function getIconTextureId(displayName, options) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
38
|
+
const parts = [`icon:${displayName}`];
|
|
39
|
+
if (options?.size) {
|
|
40
|
+
parts.push(`s${options.size}`);
|
|
41
|
+
}
|
|
42
|
+
if (options?.color) {
|
|
43
|
+
parts.push(`c${options.color}`);
|
|
44
|
+
}
|
|
45
|
+
if (options?.animation && options.animation !== "none") {
|
|
46
|
+
parts.push(`a${options.animation}`);
|
|
47
|
+
}
|
|
48
|
+
return parts.join(":");
|
|
77
49
|
}
|
|
78
|
-
/**
|
|
79
|
-
* Register an SVG icon as a texture in the game-engine renderer.
|
|
80
|
-
*
|
|
81
|
-
* @param renderer The Renderer2D instance
|
|
82
|
-
* @param textureId Unique texture identifier
|
|
83
|
-
* @param svgMarkup Static SVG markup from ReactDOMServer.renderToStaticMarkup(<Icon ... />)
|
|
84
|
-
* @param size Rasterization size in px
|
|
85
|
-
* @returns Promise that resolves when the texture is ready
|
|
86
|
-
*
|
|
87
|
-
* @example
|
|
88
|
-
* ```ts
|
|
89
|
-
* import { renderToStaticMarkup } from 'react-dom/server';
|
|
90
|
-
* import { GiWarrior } from '@nice2dev/icons-gaming';
|
|
91
|
-
* import { registerIconTexture, getIconTextureId } from '@nice2dev/game-engine';
|
|
92
|
-
*
|
|
93
|
-
* const id = getIconTextureId('GiWarrior', { size: 64 });
|
|
94
|
-
* const svg = renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />);
|
|
95
|
-
* await registerIconTexture(renderer, id, svg, 64);
|
|
96
|
-
* ```
|
|
97
|
-
*/
|
|
98
50
|
async function registerIconTexture(renderer, textureId, svgMarkup, size) {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
51
|
+
const existing = renderer.getTexture(textureId);
|
|
52
|
+
if (existing) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const prepared = iconToSvgString(svgMarkup, size);
|
|
56
|
+
const dataUrl = svgToDataUrl(prepared);
|
|
57
|
+
await renderer.loadTexture(textureId, dataUrl);
|
|
106
58
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Register an SVG icon as a rasterized canvas texture (sync-safe after await).
|
|
109
|
-
* Useful when you need pixel-perfect rendering without scaling artifacts.
|
|
110
|
-
*/
|
|
111
59
|
async function registerIconCanvasTexture(renderer, textureId, svgMarkup, size) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
60
|
+
const existing = renderer.getTexture(textureId);
|
|
61
|
+
if (existing) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const prepared = iconToSvgString(svgMarkup, size);
|
|
65
|
+
const canvas = await rasterizeSvg(prepared, size);
|
|
66
|
+
renderer.setTexture(textureId, canvas);
|
|
119
67
|
}
|
|
120
|
-
/* ── Entity helpers ───────────────────────────────────────────── */
|
|
121
|
-
/**
|
|
122
|
-
* Create a game entity with Sprite component sourced from an icon texture.
|
|
123
|
-
*
|
|
124
|
-
* The texture must already be registered via `registerIconTexture()`.
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* ```ts
|
|
128
|
-
* const entityId = createIconEntity(world, 'GiWarrior', textureId, {
|
|
129
|
-
* x: 200, y: 150, displayWidth: 64, displayHeight: 64, layer: 1,
|
|
130
|
-
* });
|
|
131
|
-
* ```
|
|
132
|
-
*/
|
|
133
68
|
function createIconEntity(world, name, textureId, options) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
69
|
+
const entity = world.createEntity(options?.name ?? name);
|
|
70
|
+
entity.tags.add("icon-sprite");
|
|
71
|
+
world.addComponent(entity.id, "Transform", {
|
|
72
|
+
position: { x: options?.x ?? 0, y: options?.y ?? 0 },
|
|
73
|
+
scale: { x: 1, y: 1 }
|
|
74
|
+
});
|
|
75
|
+
const spriteOverrides = {
|
|
76
|
+
assetId: textureId,
|
|
77
|
+
width: options?.displayWidth ?? 32,
|
|
78
|
+
height: options?.displayHeight ?? 32,
|
|
79
|
+
layer: options?.layer ?? 0,
|
|
80
|
+
visible: true
|
|
81
|
+
};
|
|
82
|
+
if (options?.tint) {
|
|
83
|
+
spriteOverrides.tint = options.tint;
|
|
84
|
+
}
|
|
85
|
+
if (options?.opacity !== void 0) {
|
|
86
|
+
spriteOverrides.opacity = options.opacity;
|
|
87
|
+
}
|
|
88
|
+
world.addComponent(entity.id, "Sprite", spriteOverrides);
|
|
89
|
+
return entity.id;
|
|
155
90
|
}
|
|
156
|
-
/* ── Animation sheet helpers ──────────────────────────────────── */
|
|
157
|
-
/**
|
|
158
|
-
* Create a SpriteAnimation clip from multiple icon animation frames.
|
|
159
|
-
*
|
|
160
|
-
* Each frame is a separate registered texture. The AnimatorComponent
|
|
161
|
-
* switches `assetId` each frame to show different icon states.
|
|
162
|
-
*
|
|
163
|
-
* @param frames Array of { assetId, duration } for each frame
|
|
164
|
-
* @param loop Whether animation loops
|
|
165
|
-
*/
|
|
166
91
|
function createIconAnimationClip(frames, fps = 8, loop = true) {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
92
|
+
return {
|
|
93
|
+
frames: frames.map((f) => ({
|
|
94
|
+
assetId: f.assetId,
|
|
95
|
+
srcRect: null,
|
|
96
|
+
duration: f.duration
|
|
97
|
+
})),
|
|
98
|
+
fps,
|
|
99
|
+
loop
|
|
100
|
+
};
|
|
176
101
|
}
|
|
177
|
-
/**
|
|
178
|
-
* Predefined character animation state sequences.
|
|
179
|
-
* Maps game animation concepts to sets of icon animation states
|
|
180
|
-
* that can be baked into textures.
|
|
181
|
-
*/
|
|
182
102
|
const CHARACTER_ANIMATION_STATES = [
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
103
|
+
"idle",
|
|
104
|
+
"move",
|
|
105
|
+
"jump",
|
|
106
|
+
"attack-melee",
|
|
107
|
+
"attack-ranged",
|
|
108
|
+
"attack-magic",
|
|
109
|
+
"damage",
|
|
110
|
+
"death"
|
|
191
111
|
];
|
|
192
112
|
const OBJECT_ANIMATION_STATES = [
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
113
|
+
"idle",
|
|
114
|
+
"spin",
|
|
115
|
+
"float",
|
|
116
|
+
"shake",
|
|
117
|
+
"glow",
|
|
118
|
+
"bounce",
|
|
119
|
+
"flicker"
|
|
200
120
|
];
|
|
201
|
-
/**
|
|
202
|
-
* Batch-register all animation states of an icon as separate textures.
|
|
203
|
-
*
|
|
204
|
-
* @returns Map of animation state → texture ID
|
|
205
|
-
*
|
|
206
|
-
* @example
|
|
207
|
-
* ```ts
|
|
208
|
-
* const textures = await registerIconAnimationSet(
|
|
209
|
-
* renderer,
|
|
210
|
-
* 'GiWarrior',
|
|
211
|
-
* (anim) => renderToStaticMarkup(<GiWarrior size={64} animation={anim} color="#e74c3c" />),
|
|
212
|
-
* CHARACTER_ANIMATION_STATES,
|
|
213
|
-
* 64,
|
|
214
|
-
* );
|
|
215
|
-
* // textures = { idle: 'icon:GiWarrior:s64:aidle', move: 'icon:GiWarrior:s64:amove', ... }
|
|
216
|
-
* ```
|
|
217
|
-
*/
|
|
218
121
|
async function registerIconAnimationSet(renderer, displayName, renderFn, states, size) {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
122
|
+
const result = {};
|
|
123
|
+
for (const state of states) {
|
|
124
|
+
const textureId = getIconTextureId(displayName, { size, animation: state });
|
|
125
|
+
const svgMarkup = renderFn(state);
|
|
126
|
+
await registerIconTexture(renderer, textureId, svgMarkup, size);
|
|
127
|
+
result[state] = textureId;
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
227
130
|
}
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
function createIconAnimator(textureMap, defaultState = 'idle', fps = 1) {
|
|
236
|
-
const animations = {};
|
|
237
|
-
for (const [state, assetId] of Object.entries(textureMap)) {
|
|
238
|
-
animations[state] = {
|
|
239
|
-
frames: [{ assetId, srcRect: null }],
|
|
240
|
-
fps,
|
|
241
|
-
loop: true,
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
return {
|
|
245
|
-
currentAnimation: defaultState,
|
|
246
|
-
animations,
|
|
247
|
-
frame: 0,
|
|
248
|
-
elapsed: 0,
|
|
249
|
-
playing: true,
|
|
250
|
-
loop: true,
|
|
131
|
+
function createIconAnimator(textureMap, defaultState = "idle", fps = 1) {
|
|
132
|
+
const animations = {};
|
|
133
|
+
for (const [state, assetId] of Object.entries(textureMap)) {
|
|
134
|
+
animations[state] = {
|
|
135
|
+
frames: [{ assetId, srcRect: null }],
|
|
136
|
+
fps,
|
|
137
|
+
loop: true
|
|
251
138
|
};
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
currentAnimation: defaultState,
|
|
142
|
+
animations,
|
|
143
|
+
frame: 0,
|
|
144
|
+
elapsed: 0,
|
|
145
|
+
playing: true,
|
|
146
|
+
loop: true
|
|
147
|
+
};
|
|
252
148
|
}
|
|
253
|
-
/**
|
|
254
|
-
* Register an entire icon map (e.g. `characterIcons`, `weaponIcons`)
|
|
255
|
-
* and return a catalog array for the asset manager / picker.
|
|
256
|
-
*
|
|
257
|
-
* @param renderer Renderer2D
|
|
258
|
-
* @param iconMap Map of name→icon render functions (SVG markup generators)
|
|
259
|
-
* @param category Category label for the asset catalog
|
|
260
|
-
* @param size Texture size
|
|
261
|
-
*
|
|
262
|
-
* @example
|
|
263
|
-
* ```ts
|
|
264
|
-
* const catalog = await registerIconCatalog(
|
|
265
|
-
* renderer,
|
|
266
|
-
* {
|
|
267
|
-
* GiWarrior: () => renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />),
|
|
268
|
-
* GiMage: () => renderToStaticMarkup(<GiMage size={64} color="#3498db" />),
|
|
269
|
-
* },
|
|
270
|
-
* 'characters',
|
|
271
|
-
* 64,
|
|
272
|
-
* );
|
|
273
|
-
* ```
|
|
274
|
-
*/
|
|
275
149
|
async function registerIconCatalog(renderer, iconMap, category, size) {
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
150
|
+
const catalog = [];
|
|
151
|
+
for (const [name, renderFn] of Object.entries(iconMap)) {
|
|
152
|
+
const textureId = getIconTextureId(name, { size });
|
|
153
|
+
await registerIconTexture(renderer, textureId, renderFn(), size);
|
|
154
|
+
catalog.push({ name, textureId, category });
|
|
155
|
+
}
|
|
156
|
+
return catalog;
|
|
283
157
|
}
|
|
284
|
-
|
|
285
158
|
exports.CHARACTER_ANIMATION_STATES = CHARACTER_ANIMATION_STATES;
|
|
286
159
|
exports.OBJECT_ANIMATION_STATES = OBJECT_ANIMATION_STATES;
|
|
287
160
|
exports.createIconAnimationClip = createIconAnimationClip;
|