@nice2dev/game-engine 1.1.7 → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/CHANGELOG.md +146 -0
  2. package/dist/cjs/ai/StateMachine.js +54 -0
  3. package/dist/cjs/devtools/DeveloperExperience.js +5 -5
  4. package/dist/cjs/dialogue/DialogueSystem.js +1 -1
  5. package/dist/cjs/editor/AnimationRetargeting.js +13 -0
  6. package/dist/cjs/editor/AssetBrowser.js +26 -25
  7. package/dist/cjs/editor/NiceGameEditor.js +66 -49
  8. package/dist/cjs/editor/TimelineEditor.js +12 -0
  9. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +33 -32
  10. package/dist/cjs/i18n/I18n.js +305 -0
  11. package/dist/cjs/index.js +8 -0
  12. package/dist/cjs/kids/KidMode.js +36 -36
  13. package/dist/cjs/kids/KidTools.js +31 -31
  14. package/dist/cjs/native-engine/AnimationSystem.js +840 -0
  15. package/dist/cjs/native-engine/InputSystem.js +9 -2
  16. package/dist/cjs/plugins/PluginSDK.js +1 -1
  17. package/dist/cjs/plugins/PluginTestKit.js +1 -1
  18. package/dist/cjs/quest/QuestSystem.js +5 -1
  19. package/dist/cjs/tutorials/TutorialBranching.js +12 -12
  20. package/dist/cjs/tutorials/TutorialEngine.js +35 -35
  21. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +75 -75
  22. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +24 -24
  23. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +33 -33
  24. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +25 -24
  25. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +28 -27
  26. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +31 -30
  27. package/dist/esm/ai/StateMachine.js +53 -1
  28. package/dist/esm/devtools/DeveloperExperience.js +5 -5
  29. package/dist/esm/dialogue/DialogueSystem.js +1 -1
  30. package/dist/esm/editor/AnimationRetargeting.js +13 -1
  31. package/dist/esm/editor/AssetBrowser.js +26 -25
  32. package/dist/esm/editor/NiceGameEditor.js +67 -50
  33. package/dist/esm/editor/TimelineEditor.js +12 -1
  34. package/dist/esm/godot-integration/components/GodotProjectBrowser.js +33 -32
  35. package/dist/esm/i18n/I18n.js +305 -0
  36. package/dist/esm/index.js +4 -3
  37. package/dist/esm/kids/KidMode.js +36 -36
  38. package/dist/esm/kids/KidTools.js +31 -31
  39. package/dist/esm/native-engine/AnimationSystem.js +835 -0
  40. package/dist/esm/native-engine/InputSystem.js +9 -2
  41. package/dist/esm/plugins/PluginSDK.js +1 -1
  42. package/dist/esm/plugins/PluginTestKit.js +1 -1
  43. package/dist/esm/quest/QuestSystem.js +5 -1
  44. package/dist/esm/tutorials/TutorialBranching.js +12 -12
  45. package/dist/esm/tutorials/TutorialEngine.js +35 -35
  46. package/dist/esm/tutorials/content/Tutorials_T05_T08.js +75 -75
  47. package/dist/esm/tutorials/content/Tutorials_T09_T11.js +24 -24
  48. package/dist/esm/tutorials/content/Tutorials_T12_T15.js +33 -33
  49. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +25 -24
  50. package/dist/esm/unity-integration/components/UnityProjectBrowser.js +28 -27
  51. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +31 -30
  52. package/dist/types/editor/AssetBrowser.d.ts +1 -0
  53. package/dist/types/editor/behavior-tree/BTEditorNode.d.ts +2 -1
  54. package/dist/types/editor/behavior-tree/BTEditorToolbar.d.ts +1 -0
  55. package/dist/types/index.d.ts +4 -0
  56. package/dist/types/kids/KidMode.d.ts +4 -2
  57. package/dist/types/kids/KidTools.d.ts +1 -1
  58. package/dist/types/tutorials/TutorialBranching.d.ts +1 -1
  59. package/package.json +4 -3
  60. package/dist/cjs/accessibility/Accessibility.js.map +0 -1
  61. package/dist/cjs/ai/AI.js.map +0 -1
  62. package/dist/cjs/ai/BehaviorTree.js.map +0 -1
  63. package/dist/cjs/ai/StateMachine.js.map +0 -1
  64. package/dist/cjs/animation/Animation.js.map +0 -1
  65. package/dist/cjs/audio/AudioAdvanced.js.map +0 -1
  66. package/dist/cjs/audio/AudioBridge.js.map +0 -1
  67. package/dist/cjs/audio/AudioManager.js.map +0 -1
  68. package/dist/cjs/build-cloud/BuildOrchestration.js.map +0 -1
  69. package/dist/cjs/build-cloud/GodotBuildCloud.js.map +0 -1
  70. package/dist/cjs/build-cloud/UnityBuildCloud.js.map +0 -1
  71. package/dist/cjs/build-cloud/UnrealBuildCloud.js.map +0 -1
  72. package/dist/cjs/core/EventBus.js.map +0 -1
  73. package/dist/cjs/core/GameClock.js.map +0 -1
  74. package/dist/cjs/core/GameConfig.js.map +0 -1
  75. package/dist/cjs/core/GameLoop.js.map +0 -1
  76. package/dist/cjs/core/ServiceLocator.js.map +0 -1
  77. package/dist/cjs/core/Validation.js.map +0 -1
  78. package/dist/cjs/core/math.js.map +0 -1
  79. package/dist/cjs/devtools/DevTools.js.map +0 -1
  80. package/dist/cjs/devtools/DeveloperExperience.js.map +0 -1
  81. package/dist/cjs/devtools/GameplayAnalytics.js.map +0 -1
  82. package/dist/cjs/dialogue/DialogueSystem.js.map +0 -1
  83. package/dist/cjs/docs/DocGenerator.js.map +0 -1
  84. package/dist/cjs/ecs/World.js.map +0 -1
  85. package/dist/cjs/editor/AchievementEditor.js.map +0 -1
  86. package/dist/cjs/editor/AdvancedEditor.js.map +0 -1
  87. package/dist/cjs/editor/AnimationRetargeting.js.map +0 -1
  88. package/dist/cjs/editor/AssetBrowser.js.map +0 -1
  89. package/dist/cjs/editor/AssetManager.js.map +0 -1
  90. package/dist/cjs/editor/ConsolePro.js.map +0 -1
  91. package/dist/cjs/editor/CraftingEditor.js.map +0 -1
  92. package/dist/cjs/editor/DebugTools.js.map +0 -1
  93. package/dist/cjs/editor/DialogueSystem.js.map +0 -1
  94. package/dist/cjs/editor/LeaderboardSystem.js.map +0 -1
  95. package/dist/cjs/editor/NiceGameEditor.js.map +0 -1
  96. package/dist/cjs/editor/PrefabSystem.js.map +0 -1
  97. package/dist/cjs/editor/ProfilerPanel.js.map +0 -1
  98. package/dist/cjs/editor/QuestEditor.js.map +0 -1
  99. package/dist/cjs/editor/ReplaySystem.js.map +0 -1
  100. package/dist/cjs/editor/SceneEditor.js.map +0 -1
  101. package/dist/cjs/editor/ScreenshotMode.js.map +0 -1
  102. package/dist/cjs/editor/ShaderGraph.js.map +0 -1
  103. package/dist/cjs/editor/TimelineEditor.js.map +0 -1
  104. package/dist/cjs/editor/UndoRedoPro.js.map +0 -1
  105. package/dist/cjs/editor/VRARMode.js.map +0 -1
  106. package/dist/cjs/engine/NiceGameEngine.js.map +0 -1
  107. package/dist/cjs/engine/SaveSystem.js.map +0 -1
  108. package/dist/cjs/engine/SaveSystemV2.js +0 -530
  109. package/dist/cjs/engine/SaveSystemV2.js.map +0 -1
  110. package/dist/cjs/enterprise/Enterprise.js.map +0 -1
  111. package/dist/cjs/export/BevyExporter.js.map +0 -1
  112. package/dist/cjs/export/CocosExporter.js.map +0 -1
  113. package/dist/cjs/export/Construct3Exporter.js.map +0 -1
  114. package/dist/cjs/export/DefoldExporter.js.map +0 -1
  115. package/dist/cjs/export/GDevelopExporter.js.map +0 -1
  116. package/dist/cjs/export/GameMakerExporter.js.map +0 -1
  117. package/dist/cjs/export/GodotExporter.js.map +0 -1
  118. package/dist/cjs/export/MinecraftBedrockExporter.js.map +0 -1
  119. package/dist/cjs/export/MonoGameExporter.js.map +0 -1
  120. package/dist/cjs/export/Pico8Exporter.js.map +0 -1
  121. package/dist/cjs/export/PlatformExporter.js.map +0 -1
  122. package/dist/cjs/export/RPGMakerExporter.js.map +0 -1
  123. package/dist/cjs/export/RobloxExporter.js.map +0 -1
  124. package/dist/cjs/export/Solar2DExporter.js.map +0 -1
  125. package/dist/cjs/export/ThreeJSExporter.js.map +0 -1
  126. package/dist/cjs/export/Tic80Exporter.js.map +0 -1
  127. package/dist/cjs/export/UnityExporter.js.map +0 -1
  128. package/dist/cjs/export/UnrealExporter.js.map +0 -1
  129. package/dist/cjs/export/WebExporter.js.map +0 -1
  130. package/dist/cjs/export/index.js.map +0 -1
  131. package/dist/cjs/godot-integration/GodotAssetLibrary.js.map +0 -1
  132. package/dist/cjs/godot-integration/GodotImport.js.map +0 -1
  133. package/dist/cjs/godot-integration/GodotLiveLink.js.map +0 -1
  134. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js.map +0 -1
  135. package/dist/cjs/i18n/I18n.js.map +0 -1
  136. package/dist/cjs/i18n/useTranslation.js.map +0 -1
  137. package/dist/cjs/import/AsepriteImporter.js.map +0 -1
  138. package/dist/cjs/import/DragonBonesImporter.js.map +0 -1
  139. package/dist/cjs/import/GameMakerImporter.js.map +0 -1
  140. package/dist/cjs/import/GodotSceneImporter.js.map +0 -1
  141. package/dist/cjs/import/LDtkImporter.js.map +0 -1
  142. package/dist/cjs/import/Live2DImporter.js.map +0 -1
  143. package/dist/cjs/import/NdgFormat.js.map +0 -1
  144. package/dist/cjs/import/OgmoImporter.js.map +0 -1
  145. package/dist/cjs/import/RPGMakerImporter.js.map +0 -1
  146. package/dist/cjs/import/SceneImporter.js.map +0 -1
  147. package/dist/cjs/import/SpineImporter.js.map +0 -1
  148. package/dist/cjs/import/SpriterImporter.js.map +0 -1
  149. package/dist/cjs/import/TiledMapImporter.js.map +0 -1
  150. package/dist/cjs/import/UnitySceneImporter.js.map +0 -1
  151. package/dist/cjs/import/index.js.map +0 -1
  152. package/dist/cjs/index.js.map +0 -1
  153. package/dist/cjs/input/GamepadNavigation.js.map +0 -1
  154. package/dist/cjs/input/InputManager.js.map +0 -1
  155. package/dist/cjs/input/useGamepads.js.map +0 -1
  156. package/dist/cjs/integration/IconSprite.js.map +0 -1
  157. package/dist/cjs/inventory/InventorySystem.js.map +0 -1
  158. package/dist/cjs/kids/KidMode.js.map +0 -1
  159. package/dist/cjs/kids/KidTools.js.map +0 -1
  160. package/dist/cjs/monetization/Monetization.js.map +0 -1
  161. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +0 -1
  162. package/dist/cjs/multiplayer/MiniGameTypes.js.map +0 -1
  163. package/dist/cjs/native-engine/AssetPipeline.js.map +0 -1
  164. package/dist/cjs/native-engine/AudioEngine.js.map +0 -1
  165. package/dist/cjs/native-engine/InputSystem.js.map +0 -1
  166. package/dist/cjs/native-engine/NetworkingSystem.js.map +0 -1
  167. package/dist/cjs/native-engine/PhysicsEngine.js.map +0 -1
  168. package/dist/cjs/native-engine/RenderingEngine.js.map +0 -1
  169. package/dist/cjs/native-engine/SceneGraph.js.map +0 -1
  170. package/dist/cjs/network/MultiplayerTransport.js.map +0 -1
  171. package/dist/cjs/network/Networking.js.map +0 -1
  172. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +0 -1
  173. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +0 -1
  174. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +0 -1
  175. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +0 -1
  176. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +0 -1
  177. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +0 -1
  178. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +0 -1
  179. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +0 -1
  180. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +0 -1
  181. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +0 -1
  182. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +0 -1
  183. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +0 -1
  184. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +0 -1
  185. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +0 -1
  186. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +0 -1
  187. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +0 -1
  188. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +0 -1
  189. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +0 -1
  190. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +0 -1
  191. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +0 -1
  192. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +0 -1
  193. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +0 -1
  194. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +0 -1
  195. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +0 -1
  196. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +0 -1
  197. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +0 -1
  198. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +0 -1
  199. package/dist/cjs/pathfinding/Pathfinding.js.map +0 -1
  200. package/dist/cjs/performance/AssetStreaming.js.map +0 -1
  201. package/dist/cjs/performance/BenchmarkSuite.js.map +0 -1
  202. package/dist/cjs/performance/DeltaCompression.js.map +0 -1
  203. package/dist/cjs/performance/DeterministicPhysics.js.map +0 -1
  204. package/dist/cjs/performance/ECSOptimization.js.map +0 -1
  205. package/dist/cjs/performance/GameSaveSystem.js.map +0 -1
  206. package/dist/cjs/performance/HotReload.js.map +0 -1
  207. package/dist/cjs/performance/InputRecording.js.map +0 -1
  208. package/dist/cjs/performance/InterestManagement.js.map +0 -1
  209. package/dist/cjs/performance/LocalizationRuntime.js.map +0 -1
  210. package/dist/cjs/performance/MemoryManagement.js.map +0 -1
  211. package/dist/cjs/performance/ModSupport.js.map +0 -1
  212. package/dist/cjs/performance/MultiThreadedPhysics.js.map +0 -1
  213. package/dist/cjs/performance/NetworkPrediction.js.map +0 -1
  214. package/dist/cjs/performance/ObjectPooling.js.map +0 -1
  215. package/dist/cjs/performance/Performance.js.map +0 -1
  216. package/dist/cjs/performance/PerformanceAdvanced.js.map +0 -1
  217. package/dist/cjs/performance/SaveSystem.js +0 -574
  218. package/dist/cjs/performance/SaveSystem.js.map +0 -1
  219. package/dist/cjs/performance/WebGPURenderer.js.map +0 -1
  220. package/dist/cjs/physics/PhysicsAdvanced.js.map +0 -1
  221. package/dist/cjs/physics/PhysicsEngine2D.js.map +0 -1
  222. package/dist/cjs/plugins/PluginSDK.js.map +0 -1
  223. package/dist/cjs/plugins/PluginTestKit.js.map +0 -1
  224. package/dist/cjs/procedural/Procedural.js.map +0 -1
  225. package/dist/cjs/procedural/WorldBuilding.js.map +0 -1
  226. package/dist/cjs/quest/QuestSystem.js.map +0 -1
  227. package/dist/cjs/release/MobileExport.js.map +0 -1
  228. package/dist/cjs/release/Release.js.map +0 -1
  229. package/dist/cjs/rendering/Camera2D.js.map +0 -1
  230. package/dist/cjs/rendering/Renderer2D.js.map +0 -1
  231. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +0 -1
  232. package/dist/cjs/runtime3d/Runtime3D.js.map +0 -1
  233. package/dist/cjs/runtime3d/SceneEditor3D.js.map +0 -1
  234. package/dist/cjs/scene/SceneManager.js.map +0 -1
  235. package/dist/cjs/scripting/GraphToAST.js.map +0 -1
  236. package/dist/cjs/scripting/LanguageExporter.js.map +0 -1
  237. package/dist/cjs/scripting/NodeGraph.js.map +0 -1
  238. package/dist/cjs/scripting/ScriptAST.js.map +0 -1
  239. package/dist/cjs/scripting/VisualScripting2.js.map +0 -1
  240. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +0 -1
  241. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +0 -1
  242. package/dist/cjs/scripting/exporters/LuaExporter.js.map +0 -1
  243. package/dist/cjs/scripting/exporters/PythonExporter.js.map +0 -1
  244. package/dist/cjs/scripting/exporters/RustExporter.js.map +0 -1
  245. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +0 -1
  246. package/dist/cjs/social/Social.js.map +0 -1
  247. package/dist/cjs/systems/LightingSystem.js.map +0 -1
  248. package/dist/cjs/systems/ParticleSystem2.js.map +0 -1
  249. package/dist/cjs/systems/PhysicsDebugSystem.js.map +0 -1
  250. package/dist/cjs/systems/TerrainSystem.js.map +0 -1
  251. package/dist/cjs/templates/ActionTemplates.js.map +0 -1
  252. package/dist/cjs/templates/FightingTemplate.js.map +0 -1
  253. package/dist/cjs/templates/MetroidvaniaTemplate.js.map +0 -1
  254. package/dist/cjs/templates/PartyTemplates.js.map +0 -1
  255. package/dist/cjs/templates/PuzzleTemplates.js.map +0 -1
  256. package/dist/cjs/templates/RPGTemplates.js.map +0 -1
  257. package/dist/cjs/templates/SportsTemplates.js.map +0 -1
  258. package/dist/cjs/templates/StrategyTemplates.js.map +0 -1
  259. package/dist/cjs/templates/SurvivalTemplate.js.map +0 -1
  260. package/dist/cjs/templates/WaveDefense.js.map +0 -1
  261. package/dist/cjs/tilemap/Tilemap.js.map +0 -1
  262. package/dist/cjs/tutorials/TutorialBranching.js.map +0 -1
  263. package/dist/cjs/tutorials/TutorialEngine.js.map +0 -1
  264. package/dist/cjs/tutorials/TutorialOverlay.js.map +0 -1
  265. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +0 -1
  266. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +0 -1
  267. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +0 -1
  268. package/dist/cjs/ui/GameUI.js.map +0 -1
  269. package/dist/cjs/unity-integration/UnityAssetStore.js.map +0 -1
  270. package/dist/cjs/unity-integration/UnityImport.js.map +0 -1
  271. package/dist/cjs/unity-integration/UnityLiveLink.js.map +0 -1
  272. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js.map +0 -1
  273. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js.map +0 -1
  274. package/dist/cjs/unreal-integration/UnrealImport.js.map +0 -1
  275. package/dist/cjs/unreal-integration/UnrealLiveLink.js.map +0 -1
  276. package/dist/cjs/unreal-integration/UnrealMarketplace.js.map +0 -1
  277. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js.map +0 -1
  278. package/dist/cjs/xr/ARVR.js.map +0 -1
  279. package/dist/esm/accessibility/Accessibility.js.map +0 -1
  280. package/dist/esm/ai/AI.js.map +0 -1
  281. package/dist/esm/ai/BehaviorTree.js.map +0 -1
  282. package/dist/esm/ai/StateMachine.js.map +0 -1
  283. package/dist/esm/animation/Animation.js.map +0 -1
  284. package/dist/esm/audio/AudioAdvanced.js.map +0 -1
  285. package/dist/esm/audio/AudioBridge.js.map +0 -1
  286. package/dist/esm/audio/AudioManager.js.map +0 -1
  287. package/dist/esm/build-cloud/BuildOrchestration.js.map +0 -1
  288. package/dist/esm/build-cloud/GodotBuildCloud.js.map +0 -1
  289. package/dist/esm/build-cloud/UnityBuildCloud.js.map +0 -1
  290. package/dist/esm/build-cloud/UnrealBuildCloud.js.map +0 -1
  291. package/dist/esm/core/EventBus.js.map +0 -1
  292. package/dist/esm/core/GameClock.js.map +0 -1
  293. package/dist/esm/core/GameConfig.js.map +0 -1
  294. package/dist/esm/core/GameLoop.js.map +0 -1
  295. package/dist/esm/core/ServiceLocator.js.map +0 -1
  296. package/dist/esm/core/Validation.js.map +0 -1
  297. package/dist/esm/core/math.js.map +0 -1
  298. package/dist/esm/devtools/DevTools.js.map +0 -1
  299. package/dist/esm/devtools/DeveloperExperience.js.map +0 -1
  300. package/dist/esm/devtools/GameplayAnalytics.js.map +0 -1
  301. package/dist/esm/dialogue/DialogueSystem.js.map +0 -1
  302. package/dist/esm/docs/DocGenerator.js.map +0 -1
  303. package/dist/esm/ecs/World.js.map +0 -1
  304. package/dist/esm/editor/AchievementEditor.js.map +0 -1
  305. package/dist/esm/editor/AdvancedEditor.js.map +0 -1
  306. package/dist/esm/editor/AnimationRetargeting.js.map +0 -1
  307. package/dist/esm/editor/AssetBrowser.js.map +0 -1
  308. package/dist/esm/editor/AssetManager.js.map +0 -1
  309. package/dist/esm/editor/ConsolePro.js.map +0 -1
  310. package/dist/esm/editor/CraftingEditor.js.map +0 -1
  311. package/dist/esm/editor/DebugTools.js.map +0 -1
  312. package/dist/esm/editor/DialogueSystem.js.map +0 -1
  313. package/dist/esm/editor/LeaderboardSystem.js.map +0 -1
  314. package/dist/esm/editor/NiceGameEditor.js.map +0 -1
  315. package/dist/esm/editor/PrefabSystem.js.map +0 -1
  316. package/dist/esm/editor/ProfilerPanel.js.map +0 -1
  317. package/dist/esm/editor/QuestEditor.js.map +0 -1
  318. package/dist/esm/editor/ReplaySystem.js.map +0 -1
  319. package/dist/esm/editor/SceneEditor.js.map +0 -1
  320. package/dist/esm/editor/ScreenshotMode.js.map +0 -1
  321. package/dist/esm/editor/ShaderGraph.js.map +0 -1
  322. package/dist/esm/editor/TimelineEditor.js.map +0 -1
  323. package/dist/esm/editor/UndoRedoPro.js.map +0 -1
  324. package/dist/esm/editor/VRARMode.js.map +0 -1
  325. package/dist/esm/engine/NiceGameEngine.js.map +0 -1
  326. package/dist/esm/engine/SaveSystem.js.map +0 -1
  327. package/dist/esm/engine/SaveSystemV2.js +0 -523
  328. package/dist/esm/engine/SaveSystemV2.js.map +0 -1
  329. package/dist/esm/enterprise/Enterprise.js.map +0 -1
  330. package/dist/esm/export/BevyExporter.js.map +0 -1
  331. package/dist/esm/export/CocosExporter.js.map +0 -1
  332. package/dist/esm/export/Construct3Exporter.js.map +0 -1
  333. package/dist/esm/export/DefoldExporter.js.map +0 -1
  334. package/dist/esm/export/GDevelopExporter.js.map +0 -1
  335. package/dist/esm/export/GameMakerExporter.js.map +0 -1
  336. package/dist/esm/export/GodotExporter.js.map +0 -1
  337. package/dist/esm/export/MinecraftBedrockExporter.js.map +0 -1
  338. package/dist/esm/export/MonoGameExporter.js.map +0 -1
  339. package/dist/esm/export/Pico8Exporter.js.map +0 -1
  340. package/dist/esm/export/PlatformExporter.js.map +0 -1
  341. package/dist/esm/export/RPGMakerExporter.js.map +0 -1
  342. package/dist/esm/export/RobloxExporter.js.map +0 -1
  343. package/dist/esm/export/Solar2DExporter.js.map +0 -1
  344. package/dist/esm/export/ThreeJSExporter.js.map +0 -1
  345. package/dist/esm/export/Tic80Exporter.js.map +0 -1
  346. package/dist/esm/export/UnityExporter.js.map +0 -1
  347. package/dist/esm/export/UnrealExporter.js.map +0 -1
  348. package/dist/esm/export/WebExporter.js.map +0 -1
  349. package/dist/esm/export/index.js.map +0 -1
  350. package/dist/esm/godot-integration/GodotAssetLibrary.js.map +0 -1
  351. package/dist/esm/godot-integration/GodotImport.js.map +0 -1
  352. package/dist/esm/godot-integration/GodotLiveLink.js.map +0 -1
  353. package/dist/esm/godot-integration/components/GodotProjectBrowser.js.map +0 -1
  354. package/dist/esm/i18n/I18n.js.map +0 -1
  355. package/dist/esm/i18n/useTranslation.js.map +0 -1
  356. package/dist/esm/import/AsepriteImporter.js.map +0 -1
  357. package/dist/esm/import/DragonBonesImporter.js.map +0 -1
  358. package/dist/esm/import/GameMakerImporter.js.map +0 -1
  359. package/dist/esm/import/GodotSceneImporter.js.map +0 -1
  360. package/dist/esm/import/LDtkImporter.js.map +0 -1
  361. package/dist/esm/import/Live2DImporter.js.map +0 -1
  362. package/dist/esm/import/NdgFormat.js.map +0 -1
  363. package/dist/esm/import/OgmoImporter.js.map +0 -1
  364. package/dist/esm/import/RPGMakerImporter.js.map +0 -1
  365. package/dist/esm/import/SceneImporter.js.map +0 -1
  366. package/dist/esm/import/SpineImporter.js.map +0 -1
  367. package/dist/esm/import/SpriterImporter.js.map +0 -1
  368. package/dist/esm/import/TiledMapImporter.js.map +0 -1
  369. package/dist/esm/import/UnitySceneImporter.js.map +0 -1
  370. package/dist/esm/import/index.js.map +0 -1
  371. package/dist/esm/index.js.map +0 -1
  372. package/dist/esm/input/GamepadNavigation.js.map +0 -1
  373. package/dist/esm/input/InputManager.js.map +0 -1
  374. package/dist/esm/input/useGamepads.js.map +0 -1
  375. package/dist/esm/integration/IconSprite.js.map +0 -1
  376. package/dist/esm/inventory/InventorySystem.js.map +0 -1
  377. package/dist/esm/kids/KidMode.js.map +0 -1
  378. package/dist/esm/kids/KidTools.js.map +0 -1
  379. package/dist/esm/monetization/Monetization.js.map +0 -1
  380. package/dist/esm/multiplayer/LocalMultiplayer.js.map +0 -1
  381. package/dist/esm/multiplayer/MiniGameTypes.js.map +0 -1
  382. package/dist/esm/native-engine/AssetPipeline.js.map +0 -1
  383. package/dist/esm/native-engine/AudioEngine.js.map +0 -1
  384. package/dist/esm/native-engine/InputSystem.js.map +0 -1
  385. package/dist/esm/native-engine/NetworkingSystem.js.map +0 -1
  386. package/dist/esm/native-engine/PhysicsEngine.js.map +0 -1
  387. package/dist/esm/native-engine/RenderingEngine.js.map +0 -1
  388. package/dist/esm/native-engine/SceneGraph.js.map +0 -1
  389. package/dist/esm/network/MultiplayerTransport.js.map +0 -1
  390. package/dist/esm/network/Networking.js.map +0 -1
  391. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +0 -1
  392. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +0 -1
  393. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +0 -1
  394. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +0 -1
  395. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +0 -1
  396. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +0 -1
  397. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +0 -1
  398. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +0 -1
  399. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +0 -1
  400. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +0 -1
  401. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +0 -1
  402. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +0 -1
  403. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +0 -1
  404. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +0 -1
  405. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +0 -1
  406. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +0 -1
  407. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +0 -1
  408. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +0 -1
  409. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +0 -1
  410. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +0 -1
  411. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +0 -1
  412. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +0 -1
  413. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +0 -1
  414. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +0 -1
  415. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +0 -1
  416. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +0 -1
  417. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +0 -1
  418. package/dist/esm/pathfinding/Pathfinding.js.map +0 -1
  419. package/dist/esm/performance/AssetStreaming.js.map +0 -1
  420. package/dist/esm/performance/BenchmarkSuite.js.map +0 -1
  421. package/dist/esm/performance/DeltaCompression.js.map +0 -1
  422. package/dist/esm/performance/DeterministicPhysics.js.map +0 -1
  423. package/dist/esm/performance/ECSOptimization.js.map +0 -1
  424. package/dist/esm/performance/GameSaveSystem.js.map +0 -1
  425. package/dist/esm/performance/HotReload.js.map +0 -1
  426. package/dist/esm/performance/InputRecording.js.map +0 -1
  427. package/dist/esm/performance/InterestManagement.js.map +0 -1
  428. package/dist/esm/performance/LocalizationRuntime.js.map +0 -1
  429. package/dist/esm/performance/MemoryManagement.js.map +0 -1
  430. package/dist/esm/performance/ModSupport.js.map +0 -1
  431. package/dist/esm/performance/MultiThreadedPhysics.js.map +0 -1
  432. package/dist/esm/performance/NetworkPrediction.js.map +0 -1
  433. package/dist/esm/performance/ObjectPooling.js.map +0 -1
  434. package/dist/esm/performance/Performance.js.map +0 -1
  435. package/dist/esm/performance/PerformanceAdvanced.js.map +0 -1
  436. package/dist/esm/performance/SaveSystem.js +0 -567
  437. package/dist/esm/performance/SaveSystem.js.map +0 -1
  438. package/dist/esm/performance/WebGPURenderer.js.map +0 -1
  439. package/dist/esm/physics/PhysicsAdvanced.js.map +0 -1
  440. package/dist/esm/physics/PhysicsEngine2D.js.map +0 -1
  441. package/dist/esm/plugins/PluginSDK.js.map +0 -1
  442. package/dist/esm/plugins/PluginTestKit.js.map +0 -1
  443. package/dist/esm/procedural/Procedural.js.map +0 -1
  444. package/dist/esm/procedural/WorldBuilding.js.map +0 -1
  445. package/dist/esm/quest/QuestSystem.js.map +0 -1
  446. package/dist/esm/release/MobileExport.js.map +0 -1
  447. package/dist/esm/release/Release.js.map +0 -1
  448. package/dist/esm/rendering/Camera2D.js.map +0 -1
  449. package/dist/esm/rendering/Renderer2D.js.map +0 -1
  450. package/dist/esm/rendering/WebGPURenderPipeline.js.map +0 -1
  451. package/dist/esm/runtime3d/Runtime3D.js.map +0 -1
  452. package/dist/esm/runtime3d/SceneEditor3D.js.map +0 -1
  453. package/dist/esm/scene/SceneManager.js.map +0 -1
  454. package/dist/esm/scripting/GraphToAST.js.map +0 -1
  455. package/dist/esm/scripting/LanguageExporter.js.map +0 -1
  456. package/dist/esm/scripting/NodeGraph.js.map +0 -1
  457. package/dist/esm/scripting/ScriptAST.js.map +0 -1
  458. package/dist/esm/scripting/VisualScripting2.js.map +0 -1
  459. package/dist/esm/scripting/exporters/CSharpExporter.js.map +0 -1
  460. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +0 -1
  461. package/dist/esm/scripting/exporters/LuaExporter.js.map +0 -1
  462. package/dist/esm/scripting/exporters/PythonExporter.js.map +0 -1
  463. package/dist/esm/scripting/exporters/RustExporter.js.map +0 -1
  464. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +0 -1
  465. package/dist/esm/social/Social.js.map +0 -1
  466. package/dist/esm/systems/LightingSystem.js.map +0 -1
  467. package/dist/esm/systems/ParticleSystem2.js.map +0 -1
  468. package/dist/esm/systems/PhysicsDebugSystem.js.map +0 -1
  469. package/dist/esm/systems/TerrainSystem.js.map +0 -1
  470. package/dist/esm/templates/ActionTemplates.js.map +0 -1
  471. package/dist/esm/templates/FightingTemplate.js.map +0 -1
  472. package/dist/esm/templates/MetroidvaniaTemplate.js.map +0 -1
  473. package/dist/esm/templates/PartyTemplates.js.map +0 -1
  474. package/dist/esm/templates/PuzzleTemplates.js.map +0 -1
  475. package/dist/esm/templates/RPGTemplates.js.map +0 -1
  476. package/dist/esm/templates/SportsTemplates.js.map +0 -1
  477. package/dist/esm/templates/StrategyTemplates.js.map +0 -1
  478. package/dist/esm/templates/SurvivalTemplate.js.map +0 -1
  479. package/dist/esm/templates/WaveDefense.js.map +0 -1
  480. package/dist/esm/tilemap/Tilemap.js.map +0 -1
  481. package/dist/esm/tutorials/TutorialBranching.js.map +0 -1
  482. package/dist/esm/tutorials/TutorialEngine.js.map +0 -1
  483. package/dist/esm/tutorials/TutorialOverlay.js.map +0 -1
  484. package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +0 -1
  485. package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +0 -1
  486. package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +0 -1
  487. package/dist/esm/ui/GameUI.js.map +0 -1
  488. package/dist/esm/unity-integration/UnityAssetStore.js.map +0 -1
  489. package/dist/esm/unity-integration/UnityImport.js.map +0 -1
  490. package/dist/esm/unity-integration/UnityLiveLink.js.map +0 -1
  491. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js.map +0 -1
  492. package/dist/esm/unity-integration/components/UnityProjectBrowser.js.map +0 -1
  493. package/dist/esm/unreal-integration/UnrealImport.js.map +0 -1
  494. package/dist/esm/unreal-integration/UnrealLiveLink.js.map +0 -1
  495. package/dist/esm/unreal-integration/UnrealMarketplace.js.map +0 -1
  496. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js.map +0 -1
  497. package/dist/esm/xr/ARVR.js.map +0 -1
  498. package/dist/types/engine/SaveSystemV2.d.ts +0 -155
@@ -0,0 +1,840 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * @file AnimationSystem.ts
5
+ * @description Animation System for Nice2Dev Game Engine
6
+ * PRO-1.11.4: Animation System
7
+ *
8
+ * Features:
9
+ * - Skeletal animation
10
+ * - Blend trees
11
+ * - Animation state machine
12
+ * - Inverse Kinematics (IK)
13
+ * - Procedural animation
14
+ * - Morph targets
15
+ * - Animation events
16
+ */
17
+ // ============================================================
18
+ // Animator Controller
19
+ // ============================================================
20
+ class AnimatorController {
21
+ constructor(boneDescriptors) {
22
+ this.clips = new Map();
23
+ this.layers = [];
24
+ this.stateMachine = null;
25
+ this.parameters = new Map();
26
+ this.ikChains = new Map();
27
+ this.morphTargets = null;
28
+ this.eventCallbacks = new Map();
29
+ this.skeleton = new SkeletonImpl(boneDescriptors);
30
+ }
31
+ // ─── Clips ─────────────────────────────────────────────
32
+ addClip(descriptor) {
33
+ const clip = new AnimationClipImpl(descriptor);
34
+ this.clips.set(descriptor.name, clip);
35
+ return clip;
36
+ }
37
+ getClip(name) {
38
+ return this.clips.get(name);
39
+ }
40
+ removeClip(name) {
41
+ this.clips.delete(name);
42
+ }
43
+ // ─── Layers ────────────────────────────────────────────
44
+ addLayer(descriptor) {
45
+ const layer = new AnimationLayerImpl(descriptor, this.skeleton, this.clips, this.parameters);
46
+ this.layers.push(layer);
47
+ return layer;
48
+ }
49
+ getLayer(nameOrIndex) {
50
+ if (typeof nameOrIndex === 'number') {
51
+ return this.layers[nameOrIndex];
52
+ }
53
+ return this.layers.find((l) => l.name === nameOrIndex);
54
+ }
55
+ getLayerCount() {
56
+ return this.layers.length;
57
+ }
58
+ // ─── State Machine ─────────────────────────────────────
59
+ createStateMachine(descriptor) {
60
+ this.stateMachine = new AnimationStateMachine(descriptor, this.clips, this.parameters);
61
+ // Initialize parameters
62
+ if (descriptor.parameters) {
63
+ for (const param of descriptor.parameters) {
64
+ this.parameters.set(param.name, param.defaultValue ?? (param.type === 'bool' || param.type === 'trigger' ? false : 0));
65
+ }
66
+ }
67
+ return this.stateMachine;
68
+ }
69
+ getStateMachine() {
70
+ return this.stateMachine;
71
+ }
72
+ // ─── Parameters ────────────────────────────────────────
73
+ setFloat(name, value) {
74
+ this.parameters.set(name, value);
75
+ }
76
+ getFloat(name) {
77
+ return this.parameters.get(name) ?? 0;
78
+ }
79
+ setInt(name, value) {
80
+ this.parameters.set(name, Math.floor(value));
81
+ }
82
+ getInt(name) {
83
+ return Math.floor(this.parameters.get(name)) ?? 0;
84
+ }
85
+ setBool(name, value) {
86
+ this.parameters.set(name, value);
87
+ }
88
+ getBool(name) {
89
+ return this.parameters.get(name) ?? false;
90
+ }
91
+ setTrigger(name) {
92
+ this.parameters.set(name, true);
93
+ }
94
+ resetTrigger(name) {
95
+ this.parameters.set(name, false);
96
+ }
97
+ // ─── IK ────────────────────────────────────────────────
98
+ addIKChain(name, descriptor) {
99
+ const chain = new IKChainImpl(descriptor);
100
+ this.ikChains.set(name, chain);
101
+ return chain;
102
+ }
103
+ getIKChain(name) {
104
+ return this.ikChains.get(name);
105
+ }
106
+ removeIKChain(name) {
107
+ this.ikChains.delete(name);
108
+ }
109
+ // ─── Morph Targets ─────────────────────────────────────
110
+ createMorphTargetManager() {
111
+ this.morphTargets = new MorphTargetManagerImpl();
112
+ return this.morphTargets;
113
+ }
114
+ getMorphTargetManager() {
115
+ return this.morphTargets;
116
+ }
117
+ // ─── Events ────────────────────────────────────────────
118
+ onEvent(eventName, callback) {
119
+ if (!this.eventCallbacks.has(eventName)) {
120
+ this.eventCallbacks.set(eventName, []);
121
+ }
122
+ this.eventCallbacks.get(eventName).push(callback);
123
+ }
124
+ offEvent(eventName, callback) {
125
+ const callbacks = this.eventCallbacks.get(eventName);
126
+ if (callbacks) {
127
+ const idx = callbacks.indexOf(callback);
128
+ if (idx >= 0) {
129
+ callbacks.splice(idx, 1);
130
+ }
131
+ }
132
+ }
133
+ dispatchEvent(eventName, data) {
134
+ const callbacks = this.eventCallbacks.get(eventName);
135
+ if (callbacks) {
136
+ for (const cb of callbacks) {
137
+ cb(data);
138
+ }
139
+ }
140
+ }
141
+ // ─── Update ────────────────────────────────────────────
142
+ update(deltaTime) {
143
+ // Update state machine
144
+ if (this.stateMachine) {
145
+ this.stateMachine.update(deltaTime);
146
+ // Check for animation events
147
+ const events = this.stateMachine.getTriggeredEvents();
148
+ for (const event of events) {
149
+ this.dispatchEvent(event.name, event.data);
150
+ }
151
+ }
152
+ // Update layers
153
+ for (const layer of this.layers) {
154
+ layer.evaluate(deltaTime);
155
+ }
156
+ // Apply state machine to skeleton
157
+ if (this.stateMachine) {
158
+ this.stateMachine.sample(this.skeleton);
159
+ }
160
+ // Apply layers to skeleton
161
+ for (const _layer of this.layers) {
162
+ // Layer application happens in evaluate
163
+ }
164
+ // Compute world transforms
165
+ this.skeleton.computeWorldTransforms();
166
+ // Apply IK
167
+ for (const chain of this.ikChains.values()) {
168
+ if (chain.isEnabled()) {
169
+ chain.solve(this.skeleton);
170
+ }
171
+ }
172
+ // Reset triggers
173
+ for (const [name, value] of this.parameters.entries()) {
174
+ if (value === true && this.isTrigger(name)) {
175
+ this.parameters.set(name, false);
176
+ }
177
+ }
178
+ }
179
+ isTrigger(_name) {
180
+ // Check if parameter is a trigger type
181
+ return false; // Would check against parameter definitions
182
+ }
183
+ // ─── Output ────────────────────────────────────────────
184
+ getSkeleton() {
185
+ return this.skeleton;
186
+ }
187
+ getJointMatrices() {
188
+ return this.skeleton.getJointMatrices();
189
+ }
190
+ }
191
+ // ============================================================
192
+ // Animation State Machine
193
+ // ============================================================
194
+ class AnimationStateMachine {
195
+ constructor(descriptor, clips, parameters) {
196
+ this.states = new Map();
197
+ this.transitions = [];
198
+ this.currentState = null;
199
+ this.activeTransition = null;
200
+ this.previousTime = 0;
201
+ this.triggeredEvents = [];
202
+ this.parameters = parameters;
203
+ // Create states
204
+ for (const stateDesc of descriptor.states) {
205
+ const clip = stateDesc.clip ? (clips.get(stateDesc.clip) ?? null) : null;
206
+ const state = new AnimationStateImpl(stateDesc, clip);
207
+ this.states.set(stateDesc.name, state);
208
+ }
209
+ // Create transitions
210
+ for (const transDesc of descriptor.transitions) {
211
+ const from = this.states.get(transDesc.from);
212
+ const to = this.states.get(transDesc.to);
213
+ if (from && to) {
214
+ this.transitions.push(new AnimationTransitionImpl(from, to, transDesc));
215
+ }
216
+ }
217
+ // Set default state
218
+ if (descriptor.defaultState) {
219
+ this.currentState = this.states.get(descriptor.defaultState) ?? null;
220
+ this.currentState?.enter();
221
+ }
222
+ else if (this.states.size > 0) {
223
+ this.currentState = this.states.values().next().value ?? null;
224
+ this.currentState?.enter();
225
+ }
226
+ }
227
+ getCurrentState() {
228
+ return this.currentState;
229
+ }
230
+ isInTransition() {
231
+ return this.activeTransition !== null;
232
+ }
233
+ getTransitionProgress() {
234
+ return this.activeTransition?.progress ?? 0;
235
+ }
236
+ update(deltaTime) {
237
+ this.triggeredEvents = [];
238
+ // Update active transition
239
+ if (this.activeTransition) {
240
+ this.activeTransition.update(deltaTime);
241
+ if (this.activeTransition.isComplete()) {
242
+ this.currentState = this.activeTransition.to;
243
+ this.activeTransition = null;
244
+ }
245
+ }
246
+ else {
247
+ // Check for transitions
248
+ if (this.currentState) {
249
+ for (const transition of this.transitions) {
250
+ if (transition.from === this.currentState && transition.check(this.parameters)) {
251
+ // Check exit time
252
+ if (transition.hasExitTime) {
253
+ if (this.currentState.normalizedTime >= transition.exitTime) {
254
+ this.startTransition(transition);
255
+ break;
256
+ }
257
+ }
258
+ else {
259
+ this.startTransition(transition);
260
+ break;
261
+ }
262
+ }
263
+ }
264
+ }
265
+ }
266
+ // Update current state
267
+ const prevTime = this.currentState?.time ?? 0;
268
+ this.currentState?.update(deltaTime);
269
+ const currTime = this.currentState?.time ?? 0;
270
+ // Check for events
271
+ if (this.currentState?.clip) {
272
+ const event = this.currentState.clip.getEvent(currTime, prevTime);
273
+ if (event) {
274
+ this.triggeredEvents.push(event);
275
+ }
276
+ }
277
+ }
278
+ startTransition(transition) {
279
+ this.currentState?.exit();
280
+ transition.to.enter();
281
+ transition.to.time = transition.offset * transition.to.clip.duration;
282
+ transition.progress = 0;
283
+ this.activeTransition = transition;
284
+ }
285
+ sample(skeleton) {
286
+ if (this.activeTransition) {
287
+ // Blend between states
288
+ 1 - this.activeTransition.progress;
289
+ const toWeight = this.activeTransition.progress;
290
+ // Sample from state
291
+ this.activeTransition.from.sample(skeleton);
292
+ // Would need to blend, simplified here
293
+ if (toWeight > 0.5) {
294
+ this.activeTransition.to.sample(skeleton);
295
+ }
296
+ }
297
+ else if (this.currentState) {
298
+ this.currentState.sample(skeleton);
299
+ }
300
+ }
301
+ getTriggeredEvents() {
302
+ return this.triggeredEvents;
303
+ }
304
+ forceState(stateName) {
305
+ const state = this.states.get(stateName);
306
+ if (state) {
307
+ this.currentState?.exit();
308
+ this.currentState = state;
309
+ this.currentState.enter();
310
+ this.activeTransition = null;
311
+ }
312
+ }
313
+ }
314
+ // ============================================================
315
+ // Internal Implementations
316
+ // ============================================================
317
+ class SkeletonImpl {
318
+ constructor(descriptors) {
319
+ this.boneMap = new Map();
320
+ this.bones = descriptors.map((desc, index) => ({
321
+ name: desc.name,
322
+ index,
323
+ parentIndex: desc.parentIndex,
324
+ children: [],
325
+ localPosition: { ...desc.position },
326
+ localRotation: { ...desc.rotation },
327
+ localScale: { ...desc.scale },
328
+ worldPosition: { ...desc.position },
329
+ worldRotation: { ...desc.rotation },
330
+ worldScale: { ...desc.scale },
331
+ inverseBindMatrix: new Float32Array(16),
332
+ }));
333
+ // Build bone map and children
334
+ for (let i = 0; i < this.bones.length; i++) {
335
+ const bone = this.bones[i];
336
+ this.boneMap.set(bone.name, i);
337
+ if (bone.parentIndex >= 0) {
338
+ this.bones[bone.parentIndex].children.push(i);
339
+ }
340
+ }
341
+ this.jointMatrices = new Float32Array(this.bones.length * 16);
342
+ this.computeWorldTransforms();
343
+ }
344
+ getBone(nameOrIndex) {
345
+ if (typeof nameOrIndex === 'number') {
346
+ return this.bones[nameOrIndex];
347
+ }
348
+ const index = this.boneMap.get(nameOrIndex);
349
+ return index !== undefined ? this.bones[index] : undefined;
350
+ }
351
+ getBoneIndex(name) {
352
+ return this.boneMap.get(name) ?? -1;
353
+ }
354
+ getBoneCount() {
355
+ return this.bones.length;
356
+ }
357
+ setLocalPose(boneIndex, position, rotation, scale) {
358
+ const bone = this.bones[boneIndex];
359
+ if (bone) {
360
+ bone.localPosition = { ...position };
361
+ bone.localRotation = { ...rotation };
362
+ bone.localScale = { ...scale };
363
+ }
364
+ }
365
+ getLocalPose(boneIndex) {
366
+ const bone = this.bones[boneIndex];
367
+ return {
368
+ position: { ...bone.localPosition },
369
+ rotation: { ...bone.localRotation },
370
+ scale: { ...bone.localScale },
371
+ };
372
+ }
373
+ computeWorldTransforms() {
374
+ for (const bone of this.bones) {
375
+ if (bone.parentIndex < 0) {
376
+ // Root bone
377
+ bone.worldPosition = { ...bone.localPosition };
378
+ bone.worldRotation = { ...bone.localRotation };
379
+ bone.worldScale = { ...bone.localScale };
380
+ }
381
+ else {
382
+ const parent = this.bones[bone.parentIndex];
383
+ // Transform local by parent world
384
+ bone.worldPosition = this.transformPoint(bone.localPosition, parent);
385
+ bone.worldRotation = this.multiplyQuaternions(parent.worldRotation, bone.localRotation);
386
+ bone.worldScale = {
387
+ x: parent.worldScale.x * bone.localScale.x,
388
+ y: parent.worldScale.y * bone.localScale.y,
389
+ z: parent.worldScale.z * bone.localScale.z,
390
+ };
391
+ }
392
+ // Update joint matrix
393
+ this.updateJointMatrix(bone);
394
+ }
395
+ }
396
+ transformPoint(point, parent) {
397
+ // Simplified - would use proper quaternion rotation
398
+ return {
399
+ x: parent.worldPosition.x + point.x * parent.worldScale.x,
400
+ y: parent.worldPosition.y + point.y * parent.worldScale.y,
401
+ z: parent.worldPosition.z + point.z * parent.worldScale.z,
402
+ };
403
+ }
404
+ multiplyQuaternions(a, b) {
405
+ return {
406
+ x: a.w * b.x + a.x * b.w + a.y * b.z - a.z * b.y,
407
+ y: a.w * b.y - a.x * b.z + a.y * b.w + a.z * b.x,
408
+ z: a.w * b.z + a.x * b.y - a.y * b.x + a.z * b.w,
409
+ w: a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z,
410
+ };
411
+ }
412
+ updateJointMatrix(bone) {
413
+ const offset = bone.index * 16;
414
+ // Simplified - would compose TRS matrix
415
+ // Final = WorldMatrix * InverseBindMatrix
416
+ this.jointMatrices[offset] = 1;
417
+ this.jointMatrices[offset + 5] = 1;
418
+ this.jointMatrices[offset + 10] = 1;
419
+ this.jointMatrices[offset + 15] = 1;
420
+ this.jointMatrices[offset + 12] = bone.worldPosition.x;
421
+ this.jointMatrices[offset + 13] = bone.worldPosition.y;
422
+ this.jointMatrices[offset + 14] = bone.worldPosition.z;
423
+ }
424
+ getJointMatrices() {
425
+ return this.jointMatrices;
426
+ }
427
+ }
428
+ class AnimationClipImpl {
429
+ constructor(descriptor) {
430
+ this.name = descriptor.name;
431
+ this.duration = descriptor.duration;
432
+ this.tracks = descriptor.tracks;
433
+ this.events = descriptor.events ?? [];
434
+ }
435
+ sample(time, skeleton) {
436
+ for (const track of this.tracks) {
437
+ const boneIndex = skeleton.getBoneIndex(track.targetBone);
438
+ if (boneIndex < 0) {
439
+ continue;
440
+ }
441
+ const value = this.sampleTrack(track, time);
442
+ const pose = skeleton.getLocalPose(boneIndex);
443
+ switch (track.property) {
444
+ case 'position':
445
+ skeleton.setLocalPose(boneIndex, value, pose.rotation, pose.scale);
446
+ break;
447
+ case 'rotation':
448
+ skeleton.setLocalPose(boneIndex, pose.position, value, pose.scale);
449
+ break;
450
+ case 'scale':
451
+ skeleton.setLocalPose(boneIndex, pose.position, pose.rotation, value);
452
+ break;
453
+ }
454
+ }
455
+ }
456
+ sampleTrack(track, time) {
457
+ const keyframes = track.keyframes;
458
+ if (keyframes.length === 0) {
459
+ return track.property === 'rotation' ? { x: 0, y: 0, z: 0, w: 1 } : { x: 0, y: 0, z: 0 };
460
+ }
461
+ if (keyframes.length === 1 || time <= keyframes[0].time) {
462
+ return keyframes[0].value;
463
+ }
464
+ if (time >= keyframes[keyframes.length - 1].time) {
465
+ return keyframes[keyframes.length - 1].value;
466
+ }
467
+ // Find surrounding keyframes
468
+ let i = 0;
469
+ while (i < keyframes.length - 1 && keyframes[i + 1].time < time) {
470
+ i++;
471
+ }
472
+ const k0 = keyframes[i];
473
+ const k1 = keyframes[i + 1];
474
+ const t = (time - k0.time) / (k1.time - k0.time);
475
+ // Interpolate
476
+ if (track.property === 'rotation') {
477
+ return this.slerpQuaternion(k0.value, k1.value, t);
478
+ }
479
+ else {
480
+ return this.lerpVec3(k0.value, k1.value, t);
481
+ }
482
+ }
483
+ lerpVec3(a, b, t) {
484
+ return {
485
+ x: a.x + (b.x - a.x) * t,
486
+ y: a.y + (b.y - a.y) * t,
487
+ z: a.z + (b.z - a.z) * t,
488
+ };
489
+ }
490
+ slerpQuaternion(a, b, t) {
491
+ // Simplified slerp
492
+ let dot = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;
493
+ if (dot < 0) {
494
+ b = { x: -b.x, y: -b.y, z: -b.z, w: -b.w };
495
+ dot = -dot;
496
+ }
497
+ if (dot > 0.9995) {
498
+ // Linear interpolation for very close quaternions
499
+ return this.normalizeQuaternion({
500
+ x: a.x + (b.x - a.x) * t,
501
+ y: a.y + (b.y - a.y) * t,
502
+ z: a.z + (b.z - a.z) * t,
503
+ w: a.w + (b.w - a.w) * t,
504
+ });
505
+ }
506
+ const theta0 = Math.acos(dot);
507
+ const theta = theta0 * t;
508
+ const sinTheta = Math.sin(theta);
509
+ const sinTheta0 = Math.sin(theta0);
510
+ const s0 = Math.cos(theta) - (dot * sinTheta) / sinTheta0;
511
+ const s1 = sinTheta / sinTheta0;
512
+ return {
513
+ x: a.x * s0 + b.x * s1,
514
+ y: a.y * s0 + b.y * s1,
515
+ z: a.z * s0 + b.z * s1,
516
+ w: a.w * s0 + b.w * s1,
517
+ };
518
+ }
519
+ normalizeQuaternion(q) {
520
+ const len = Math.sqrt(q.x * q.x + q.y * q.y + q.z * q.z + q.w * q.w);
521
+ return { x: q.x / len, y: q.y / len, z: q.z / len, w: q.w / len };
522
+ }
523
+ getEvent(time, previousTime) {
524
+ for (const event of this.events) {
525
+ if (event.time > previousTime && event.time <= time) {
526
+ return event;
527
+ }
528
+ }
529
+ return null;
530
+ }
531
+ }
532
+ class AnimationLayerImpl {
533
+ constructor(descriptor, _skeleton, _clips, _parameters) {
534
+ this._mask = null;
535
+ this._currentState = null;
536
+ this.name = descriptor.name;
537
+ this.blendMode = descriptor.blendMode ?? 'override';
538
+ this._weight = descriptor.weight ?? 1;
539
+ if (descriptor.mask) {
540
+ this._mask = new AvatarMaskImpl(descriptor.mask);
541
+ }
542
+ }
543
+ getWeight() {
544
+ return this._weight;
545
+ }
546
+ setWeight(weight) {
547
+ this._weight = Math.max(0, Math.min(1, weight));
548
+ }
549
+ getBlendMode() {
550
+ return this.blendMode;
551
+ }
552
+ setBlendMode(mode) {
553
+ this.blendMode = mode;
554
+ }
555
+ getMask() {
556
+ return this._mask;
557
+ }
558
+ setMask(mask) {
559
+ this._mask = mask;
560
+ }
561
+ getCurrentState() {
562
+ return this._currentState;
563
+ }
564
+ setCurrentState(state) {
565
+ this._currentState = state;
566
+ }
567
+ evaluate(_deltaTime) {
568
+ // Update and blend animations for this layer
569
+ }
570
+ }
571
+ class AvatarMaskImpl {
572
+ constructor(bones) {
573
+ this.weights = new Map();
574
+ for (const bone of bones) {
575
+ this.weights.set(bone, 1);
576
+ }
577
+ }
578
+ getBoneWeight(boneName) {
579
+ return this.weights.get(boneName) ?? 0;
580
+ }
581
+ setBoneWeight(boneName, weight) {
582
+ this.weights.set(boneName, weight);
583
+ }
584
+ setAllWeights(weight) {
585
+ for (const bone of this.weights.keys()) {
586
+ this.weights.set(bone, weight);
587
+ }
588
+ }
589
+ }
590
+ class AnimationStateImpl {
591
+ constructor(descriptor, clip) {
592
+ this.blendTree = null;
593
+ this.normalizedTime = 0;
594
+ this.time = 0;
595
+ this.name = descriptor.name;
596
+ this.type = descriptor.type;
597
+ this.clip = clip;
598
+ this.speed = descriptor.speed ?? 1;
599
+ this.wrapMode = descriptor.wrapMode ?? 'loop';
600
+ }
601
+ enter() {
602
+ this.time = 0;
603
+ this.normalizedTime = 0;
604
+ }
605
+ exit() {
606
+ // Cleanup
607
+ }
608
+ update(deltaTime) {
609
+ this.time += deltaTime * this.speed;
610
+ if (this.clip) {
611
+ const duration = this.clip.duration;
612
+ switch (this.wrapMode) {
613
+ case 'once':
614
+ if (this.time > duration) {
615
+ this.time = duration;
616
+ }
617
+ break;
618
+ case 'loop':
619
+ while (this.time > duration) {
620
+ this.time -= duration;
621
+ }
622
+ break;
623
+ case 'pingpong':
624
+ // Would implement ping-pong
625
+ break;
626
+ case 'clamp':
627
+ this.time = Math.max(0, Math.min(this.time, duration));
628
+ break;
629
+ }
630
+ this.normalizedTime = duration > 0 ? this.time / duration : 0;
631
+ }
632
+ }
633
+ sample(skeleton) {
634
+ if (this.clip) {
635
+ this.clip.sample(this.time, skeleton);
636
+ }
637
+ else if (this.blendTree) {
638
+ this.blendTree.sample(skeleton);
639
+ }
640
+ }
641
+ }
642
+ class AnimationTransitionImpl {
643
+ constructor(from, to, descriptor) {
644
+ this.progress = 0;
645
+ this.from = from;
646
+ this.to = to;
647
+ this.duration = descriptor.duration ?? 0.25;
648
+ this.offset = descriptor.offset ?? 0;
649
+ this.conditions = descriptor.conditions ?? [];
650
+ this.hasExitTime = descriptor.hasExitTime ?? false;
651
+ this.exitTime = descriptor.exitTime ?? 1;
652
+ }
653
+ check(parameters) {
654
+ if (this.conditions.length === 0) {
655
+ return true;
656
+ }
657
+ for (const condition of this.conditions) {
658
+ const value = parameters.get(condition.parameter);
659
+ if (value === undefined) {
660
+ continue;
661
+ }
662
+ let result = false;
663
+ switch (condition.mode) {
664
+ case 'equals':
665
+ result = value === condition.value;
666
+ break;
667
+ case 'not-equals':
668
+ result = value !== condition.value;
669
+ break;
670
+ case 'greater':
671
+ result = value > condition.value;
672
+ break;
673
+ case 'less':
674
+ result = value < condition.value;
675
+ break;
676
+ case 'if':
677
+ result = value === true;
678
+ break;
679
+ case 'if-not':
680
+ result = value === false;
681
+ break;
682
+ }
683
+ if (!result) {
684
+ return false;
685
+ }
686
+ }
687
+ return true;
688
+ }
689
+ update(deltaTime) {
690
+ if (this.duration > 0) {
691
+ this.progress += deltaTime / this.duration;
692
+ this.progress = Math.min(1, this.progress);
693
+ }
694
+ else {
695
+ this.progress = 1;
696
+ }
697
+ }
698
+ isComplete() {
699
+ return this.progress >= 1;
700
+ }
701
+ }
702
+ class IKChainImpl {
703
+ constructor(descriptor) {
704
+ this._target = { x: 0, y: 0, z: 0 };
705
+ this._poleTarget = null;
706
+ this._enabled = true;
707
+ this.type = descriptor.type;
708
+ this.rootBone = descriptor.rootBone;
709
+ this.tipBone = descriptor.tipBone;
710
+ this._weight = descriptor.weight ?? 1;
711
+ this._iterations = descriptor.iterations ?? 10;
712
+ this._tolerance = descriptor.tolerance ?? 0.001;
713
+ this._poleTarget = descriptor.poleTarget ?? null;
714
+ }
715
+ getTarget() {
716
+ return { ...this._target };
717
+ }
718
+ setTarget(target) {
719
+ this._target = { ...target };
720
+ }
721
+ getPoleTarget() {
722
+ return this._poleTarget ? { ...this._poleTarget } : null;
723
+ }
724
+ setPoleTarget(target) {
725
+ this._poleTarget = target ? { ...target } : null;
726
+ }
727
+ getWeight() {
728
+ return this._weight;
729
+ }
730
+ setWeight(weight) {
731
+ this._weight = Math.max(0, Math.min(1, weight));
732
+ }
733
+ isEnabled() {
734
+ return this._enabled;
735
+ }
736
+ setEnabled(enabled) {
737
+ this._enabled = enabled;
738
+ }
739
+ solve(skeleton) {
740
+ if (!this._enabled || this._weight <= 0) {
741
+ return;
742
+ }
743
+ switch (this.type) {
744
+ case 'two-bone':
745
+ this.solveTwoBone(skeleton);
746
+ break;
747
+ case 'fabrik':
748
+ this.solveFABRIK(skeleton);
749
+ break;
750
+ case 'ccd':
751
+ this.solveCCD(skeleton);
752
+ break;
753
+ }
754
+ }
755
+ solveTwoBone(skeleton) {
756
+ // Two-bone analytical IK (common for arms/legs)
757
+ const root = skeleton.getBone(this.rootBone);
758
+ const tip = skeleton.getBone(this.tipBone);
759
+ if (!root || !tip) {
760
+ return;
761
+ }
762
+ // Would implement two-bone IK solver
763
+ }
764
+ solveFABRIK(_skeleton) {
765
+ // Forward And Backward Reaching Inverse Kinematics
766
+ for (let i = 0; i < this._iterations; i++) {
767
+ // Forward pass
768
+ // Backward pass
769
+ }
770
+ }
771
+ solveCCD(_skeleton) {
772
+ // Cyclic Coordinate Descent
773
+ for (let i = 0; i < this._iterations; i++) {
774
+ // Iterate through chain from tip to root
775
+ }
776
+ }
777
+ }
778
+ class MorphTargetManagerImpl {
779
+ constructor() {
780
+ this.targets = new Map();
781
+ }
782
+ getMorphTarget(name) {
783
+ return this.targets.get(name);
784
+ }
785
+ getMorphTargets() {
786
+ return Array.from(this.targets.values());
787
+ }
788
+ addMorphTarget(descriptor) {
789
+ const target = new MorphTargetImpl(descriptor);
790
+ this.targets.set(descriptor.name, target);
791
+ return target;
792
+ }
793
+ removeMorphTarget(name) {
794
+ this.targets.delete(name);
795
+ }
796
+ getWeight(name) {
797
+ return this.targets.get(name)?.weight ?? 0;
798
+ }
799
+ setWeight(name, weight) {
800
+ const target = this.targets.get(name);
801
+ if (target) {
802
+ target.weight = Math.max(0, Math.min(1, weight));
803
+ }
804
+ }
805
+ getBlendedVertices(baseVertices) {
806
+ const result = new Float32Array(baseVertices);
807
+ for (const target of this.targets.values()) {
808
+ if (target.weight <= 0) {
809
+ continue;
810
+ }
811
+ for (let i = 0; i < result.length; i++) {
812
+ result[i] += target.vertices[i] * target.weight;
813
+ }
814
+ }
815
+ return result;
816
+ }
817
+ }
818
+ class MorphTargetImpl {
819
+ constructor(descriptor) {
820
+ this.weight = 0;
821
+ this.name = descriptor.name;
822
+ this.vertices = descriptor.vertices;
823
+ this.normals = descriptor.normals ?? null;
824
+ this.tangents = descriptor.tangents ?? null;
825
+ }
826
+ }
827
+ // ============================================================
828
+ // Factory Functions
829
+ // ============================================================
830
+ function createAnimatorController(bones) {
831
+ return new AnimatorController(bones);
832
+ }
833
+ function createAnimationClip(descriptor) {
834
+ return new AnimationClipImpl(descriptor);
835
+ }
836
+
837
+ exports.AnimationStateMachine = AnimationStateMachine;
838
+ exports.AnimatorController = AnimatorController;
839
+ exports.createAnimationClip = createAnimationClip;
840
+ exports.createAnimatorController = createAnimatorController;