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