@nice2dev/game-engine 0.1.0 → 1.0.3

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 (294) hide show
  1. package/CHANGELOG.md +193 -1
  2. package/dist/cjs/ai/BehaviorTree.js +1215 -0
  3. package/dist/cjs/ai/BehaviorTree.js.map +1 -0
  4. package/dist/cjs/ai/StateMachine.js +783 -0
  5. package/dist/cjs/ai/StateMachine.js.map +1 -0
  6. package/dist/cjs/audio/AudioBridge.js +454 -0
  7. package/dist/cjs/audio/AudioBridge.js.map +1 -0
  8. package/dist/cjs/devtools/GameplayAnalytics.js +651 -0
  9. package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -0
  10. package/dist/cjs/dialogue/DialogueSystem.js +1023 -0
  11. package/dist/cjs/dialogue/DialogueSystem.js.map +1 -0
  12. package/dist/cjs/editor/NiceGameEditor.js +569 -71
  13. package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
  14. package/dist/cjs/editor/ShaderGraph.js +1616 -0
  15. package/dist/cjs/editor/ShaderGraph.js.map +1 -0
  16. package/dist/cjs/editor/TimelineEditor.js +819 -0
  17. package/dist/cjs/editor/TimelineEditor.js.map +1 -0
  18. package/dist/cjs/engine/SaveSystemV2.js +494 -0
  19. package/dist/cjs/engine/SaveSystemV2.js.map +1 -0
  20. package/dist/cjs/export/GodotExporter.js +1102 -0
  21. package/dist/cjs/export/GodotExporter.js.map +1 -0
  22. package/dist/cjs/export/PlatformExporter.js +236 -0
  23. package/dist/cjs/export/PlatformExporter.js.map +1 -0
  24. package/dist/cjs/export/ThreeJSExporter.js +1116 -0
  25. package/dist/cjs/export/ThreeJSExporter.js.map +1 -0
  26. package/dist/cjs/export/UnityExporter.js +1193 -0
  27. package/dist/cjs/export/UnityExporter.js.map +1 -0
  28. package/dist/cjs/export/WebExporter.js +1036 -0
  29. package/dist/cjs/export/WebExporter.js.map +1 -0
  30. package/dist/cjs/export/index.js +58 -0
  31. package/dist/cjs/export/index.js.map +1 -0
  32. package/dist/cjs/i18n/useTranslation.js +11 -11
  33. package/dist/cjs/import/AsepriteImporter.js +761 -0
  34. package/dist/cjs/import/AsepriteImporter.js.map +1 -0
  35. package/dist/cjs/import/DragonBonesImporter.js +499 -0
  36. package/dist/cjs/import/DragonBonesImporter.js.map +1 -0
  37. package/dist/cjs/import/GameMakerImporter.js +559 -0
  38. package/dist/cjs/import/GameMakerImporter.js.map +1 -0
  39. package/dist/cjs/import/GodotSceneImporter.js +824 -0
  40. package/dist/cjs/import/GodotSceneImporter.js.map +1 -0
  41. package/dist/cjs/import/LDtkImporter.js +481 -0
  42. package/dist/cjs/import/LDtkImporter.js.map +1 -0
  43. package/dist/cjs/import/Live2DImporter.js +553 -0
  44. package/dist/cjs/import/Live2DImporter.js.map +1 -0
  45. package/dist/cjs/import/NdgFormat.js +499 -0
  46. package/dist/cjs/import/NdgFormat.js.map +1 -0
  47. package/dist/cjs/import/OgmoImporter.js +529 -0
  48. package/dist/cjs/import/OgmoImporter.js.map +1 -0
  49. package/dist/cjs/import/RPGMakerImporter.js +520 -0
  50. package/dist/cjs/import/RPGMakerImporter.js.map +1 -0
  51. package/dist/cjs/import/SceneImporter.js +449 -0
  52. package/dist/cjs/import/SceneImporter.js.map +1 -0
  53. package/dist/cjs/import/SpineImporter.js +583 -0
  54. package/dist/cjs/import/SpineImporter.js.map +1 -0
  55. package/dist/cjs/import/SpriterImporter.js +652 -0
  56. package/dist/cjs/import/SpriterImporter.js.map +1 -0
  57. package/dist/cjs/import/TiledMapImporter.js +859 -0
  58. package/dist/cjs/import/TiledMapImporter.js.map +1 -0
  59. package/dist/cjs/import/UnitySceneImporter.js +732 -0
  60. package/dist/cjs/import/UnitySceneImporter.js.map +1 -0
  61. package/dist/cjs/import/index.js +305 -0
  62. package/dist/cjs/import/index.js.map +1 -0
  63. package/dist/cjs/index.js +291 -1
  64. package/dist/cjs/index.js.map +1 -1
  65. package/dist/cjs/input/GamepadNavigation.js +21 -21
  66. package/dist/cjs/input/useGamepads.js +6 -6
  67. package/dist/cjs/integration/IconSprite.js +281 -0
  68. package/dist/cjs/integration/IconSprite.js.map +1 -0
  69. package/dist/cjs/inventory/InventorySystem.js +930 -0
  70. package/dist/cjs/inventory/InventorySystem.js.map +1 -0
  71. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
  72. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
  73. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
  74. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
  75. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
  76. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
  77. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
  78. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
  79. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
  80. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
  81. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
  82. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
  83. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
  84. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
  85. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
  86. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
  87. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
  88. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
  89. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
  90. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
  91. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
  92. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
  93. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
  94. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
  95. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
  96. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
  97. package/dist/cjs/quest/QuestSystem.js +924 -0
  98. package/dist/cjs/quest/QuestSystem.js.map +1 -0
  99. package/dist/cjs/rendering/WebGPURenderPipeline.js +658 -0
  100. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -0
  101. package/dist/cjs/scripting/GraphToAST.js +567 -0
  102. package/dist/cjs/scripting/GraphToAST.js.map +1 -0
  103. package/dist/cjs/scripting/LanguageExporter.js +321 -0
  104. package/dist/cjs/scripting/LanguageExporter.js.map +1 -0
  105. package/dist/cjs/scripting/ScriptAST.js +67 -0
  106. package/dist/cjs/scripting/ScriptAST.js.map +1 -0
  107. package/dist/cjs/scripting/VisualScripting2.js +1140 -0
  108. package/dist/cjs/scripting/VisualScripting2.js.map +1 -0
  109. package/dist/cjs/scripting/exporters/CSharpExporter.js +503 -0
  110. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +1 -0
  111. package/dist/cjs/scripting/exporters/GDScriptExporter.js +452 -0
  112. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +1 -0
  113. package/dist/cjs/scripting/exporters/LuaExporter.js +457 -0
  114. package/dist/cjs/scripting/exporters/LuaExporter.js.map +1 -0
  115. package/dist/cjs/scripting/exporters/PythonExporter.js +565 -0
  116. package/dist/cjs/scripting/exporters/PythonExporter.js.map +1 -0
  117. package/dist/cjs/scripting/exporters/RustExporter.js +525 -0
  118. package/dist/cjs/scripting/exporters/RustExporter.js.map +1 -0
  119. package/dist/cjs/scripting/exporters/TypeScriptExporter.js +570 -0
  120. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +1 -0
  121. package/dist/cjs/systems/ParticleSystem2.js +1478 -0
  122. package/dist/cjs/systems/ParticleSystem2.js.map +1 -0
  123. package/dist/cjs/xr/ARVR.js.map +1 -1
  124. package/dist/esm/ai/BehaviorTree.js +1186 -0
  125. package/dist/esm/ai/BehaviorTree.js.map +1 -0
  126. package/dist/esm/ai/StateMachine.js +767 -0
  127. package/dist/esm/ai/StateMachine.js.map +1 -0
  128. package/dist/esm/audio/AudioBridge.js +446 -0
  129. package/dist/esm/audio/AudioBridge.js.map +1 -0
  130. package/dist/esm/devtools/GameplayAnalytics.js +639 -0
  131. package/dist/esm/devtools/GameplayAnalytics.js.map +1 -0
  132. package/dist/esm/dialogue/DialogueSystem.js +1008 -0
  133. package/dist/esm/dialogue/DialogueSystem.js.map +1 -0
  134. package/dist/esm/editor/NiceGameEditor.js +556 -58
  135. package/dist/esm/editor/NiceGameEditor.js.map +1 -1
  136. package/dist/esm/editor/ShaderGraph.js +1606 -0
  137. package/dist/esm/editor/ShaderGraph.js.map +1 -0
  138. package/dist/esm/editor/TimelineEditor.js +800 -0
  139. package/dist/esm/editor/TimelineEditor.js.map +1 -0
  140. package/dist/esm/engine/SaveSystemV2.js +487 -0
  141. package/dist/esm/engine/SaveSystemV2.js.map +1 -0
  142. package/dist/esm/export/GodotExporter.js +1100 -0
  143. package/dist/esm/export/GodotExporter.js.map +1 -0
  144. package/dist/esm/export/PlatformExporter.js +230 -0
  145. package/dist/esm/export/PlatformExporter.js.map +1 -0
  146. package/dist/esm/export/ThreeJSExporter.js +1114 -0
  147. package/dist/esm/export/ThreeJSExporter.js.map +1 -0
  148. package/dist/esm/export/UnityExporter.js +1191 -0
  149. package/dist/esm/export/UnityExporter.js.map +1 -0
  150. package/dist/esm/export/WebExporter.js +1033 -0
  151. package/dist/esm/export/WebExporter.js.map +1 -0
  152. package/dist/esm/export/index.js +44 -0
  153. package/dist/esm/export/index.js.map +1 -0
  154. package/dist/esm/import/AsepriteImporter.js +759 -0
  155. package/dist/esm/import/AsepriteImporter.js.map +1 -0
  156. package/dist/esm/import/DragonBonesImporter.js +496 -0
  157. package/dist/esm/import/DragonBonesImporter.js.map +1 -0
  158. package/dist/esm/import/GameMakerImporter.js +556 -0
  159. package/dist/esm/import/GameMakerImporter.js.map +1 -0
  160. package/dist/esm/import/GodotSceneImporter.js +822 -0
  161. package/dist/esm/import/GodotSceneImporter.js.map +1 -0
  162. package/dist/esm/import/LDtkImporter.js +479 -0
  163. package/dist/esm/import/LDtkImporter.js.map +1 -0
  164. package/dist/esm/import/Live2DImporter.js +550 -0
  165. package/dist/esm/import/Live2DImporter.js.map +1 -0
  166. package/dist/esm/import/NdgFormat.js +490 -0
  167. package/dist/esm/import/NdgFormat.js.map +1 -0
  168. package/dist/esm/import/OgmoImporter.js +526 -0
  169. package/dist/esm/import/OgmoImporter.js.map +1 -0
  170. package/dist/esm/import/RPGMakerImporter.js +517 -0
  171. package/dist/esm/import/RPGMakerImporter.js.map +1 -0
  172. package/dist/esm/import/SceneImporter.js +441 -0
  173. package/dist/esm/import/SceneImporter.js.map +1 -0
  174. package/dist/esm/import/SpineImporter.js +580 -0
  175. package/dist/esm/import/SpineImporter.js.map +1 -0
  176. package/dist/esm/import/SpriterImporter.js +649 -0
  177. package/dist/esm/import/SpriterImporter.js.map +1 -0
  178. package/dist/esm/import/TiledMapImporter.js +857 -0
  179. package/dist/esm/import/TiledMapImporter.js.map +1 -0
  180. package/dist/esm/import/UnitySceneImporter.js +730 -0
  181. package/dist/esm/import/UnitySceneImporter.js.map +1 -0
  182. package/dist/esm/import/index.js +279 -0
  183. package/dist/esm/import/index.js.map +1 -0
  184. package/dist/esm/index.js +47 -3
  185. package/dist/esm/index.js.map +1 -1
  186. package/dist/esm/integration/IconSprite.js +266 -0
  187. package/dist/esm/integration/IconSprite.js.map +1 -0
  188. package/dist/esm/inventory/InventorySystem.js +924 -0
  189. package/dist/esm/inventory/InventorySystem.js.map +1 -0
  190. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
  191. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
  192. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
  193. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
  194. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
  195. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
  196. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
  197. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
  198. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
  199. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
  200. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
  201. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
  202. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
  203. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
  204. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
  205. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
  206. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
  207. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
  208. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
  209. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
  210. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
  211. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
  212. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
  213. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
  214. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
  215. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
  216. package/dist/esm/quest/QuestSystem.js +916 -0
  217. package/dist/esm/quest/QuestSystem.js.map +1 -0
  218. package/dist/esm/rendering/WebGPURenderPipeline.js +642 -0
  219. package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -0
  220. package/dist/esm/scripting/GraphToAST.js +564 -0
  221. package/dist/esm/scripting/GraphToAST.js.map +1 -0
  222. package/dist/esm/scripting/LanguageExporter.js +311 -0
  223. package/dist/esm/scripting/LanguageExporter.js.map +1 -0
  224. package/dist/esm/scripting/ScriptAST.js +52 -0
  225. package/dist/esm/scripting/ScriptAST.js.map +1 -0
  226. package/dist/esm/scripting/VisualScripting2.js +1130 -0
  227. package/dist/esm/scripting/VisualScripting2.js.map +1 -0
  228. package/dist/esm/scripting/exporters/CSharpExporter.js +501 -0
  229. package/dist/esm/scripting/exporters/CSharpExporter.js.map +1 -0
  230. package/dist/esm/scripting/exporters/GDScriptExporter.js +450 -0
  231. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +1 -0
  232. package/dist/esm/scripting/exporters/LuaExporter.js +455 -0
  233. package/dist/esm/scripting/exporters/LuaExporter.js.map +1 -0
  234. package/dist/esm/scripting/exporters/PythonExporter.js +563 -0
  235. package/dist/esm/scripting/exporters/PythonExporter.js.map +1 -0
  236. package/dist/esm/scripting/exporters/RustExporter.js +523 -0
  237. package/dist/esm/scripting/exporters/RustExporter.js.map +1 -0
  238. package/dist/esm/scripting/exporters/TypeScriptExporter.js +568 -0
  239. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +1 -0
  240. package/dist/esm/systems/ParticleSystem2.js +1471 -0
  241. package/dist/esm/systems/ParticleSystem2.js.map +1 -0
  242. package/dist/esm/xr/ARVR.js.map +1 -1
  243. package/dist/types/__tests__/setup.d.ts +1 -1
  244. package/dist/types/ai/BehaviorTree.d.ts +375 -0
  245. package/dist/types/ai/StateMachine.d.ts +296 -0
  246. package/dist/types/audio/AudioBridge.d.ts +199 -0
  247. package/dist/types/devtools/GameplayAnalytics.d.ts +279 -0
  248. package/dist/types/dialogue/DialogueSystem.d.ts +326 -0
  249. package/dist/types/dialogue/index.d.ts +2 -0
  250. package/dist/types/editor/NiceGameEditor.d.ts +12 -1
  251. package/dist/types/editor/ShaderGraph.d.ts +207 -0
  252. package/dist/types/editor/TimelineEditor.d.ts +393 -0
  253. package/dist/types/engine/SaveSystemV2.d.ts +155 -0
  254. package/dist/types/export/GodotExporter.d.ts +56 -0
  255. package/dist/types/export/PlatformExporter.d.ts +201 -0
  256. package/dist/types/export/ThreeJSExporter.d.ts +40 -0
  257. package/dist/types/export/UnityExporter.d.ts +69 -0
  258. package/dist/types/export/WebExporter.d.ts +58 -0
  259. package/dist/types/export/index.d.ts +19 -0
  260. package/dist/types/import/AsepriteImporter.d.ts +46 -0
  261. package/dist/types/import/DragonBonesImporter.d.ts +331 -0
  262. package/dist/types/import/GameMakerImporter.d.ts +375 -0
  263. package/dist/types/import/GodotSceneImporter.d.ts +34 -0
  264. package/dist/types/import/LDtkImporter.d.ts +177 -0
  265. package/dist/types/import/Live2DImporter.d.ts +237 -0
  266. package/dist/types/import/NdgFormat.d.ts +387 -0
  267. package/dist/types/import/OgmoImporter.d.ts +237 -0
  268. package/dist/types/import/RPGMakerImporter.d.ts +186 -0
  269. package/dist/types/import/SceneImporter.d.ts +276 -0
  270. package/dist/types/import/SpineImporter.d.ts +372 -0
  271. package/dist/types/import/SpriterImporter.d.ts +230 -0
  272. package/dist/types/import/TiledMapImporter.d.ts +57 -0
  273. package/dist/types/import/UnitySceneImporter.d.ts +87 -0
  274. package/dist/types/import/index.d.ts +59 -0
  275. package/dist/types/index.d.ts +46 -18
  276. package/dist/types/integration/IconSprite.d.ts +196 -0
  277. package/dist/types/inventory/InventorySystem.d.ts +336 -0
  278. package/dist/types/performance/WebGPUCompute.d.ts +0 -10
  279. package/dist/types/quest/QuestSystem.d.ts +287 -0
  280. package/dist/types/rendering/WebGPURenderPipeline.d.ts +255 -0
  281. package/dist/types/scripting/GraphToAST.d.ts +55 -0
  282. package/dist/types/scripting/LanguageExporter.d.ts +136 -0
  283. package/dist/types/scripting/ScriptAST.d.ts +312 -0
  284. package/dist/types/scripting/VisualScripting2.d.ts +353 -0
  285. package/dist/types/scripting/exporters/CSharpExporter.d.ts +44 -0
  286. package/dist/types/scripting/exporters/GDScriptExporter.d.ts +46 -0
  287. package/dist/types/scripting/exporters/LuaExporter.d.ts +46 -0
  288. package/dist/types/scripting/exporters/PythonExporter.d.ts +49 -0
  289. package/dist/types/scripting/exporters/RustExporter.d.ts +46 -0
  290. package/dist/types/scripting/exporters/TypeScriptExporter.d.ts +48 -0
  291. package/dist/types/scripting/exporters/index.d.ts +8 -0
  292. package/dist/types/scripting/index.d.ts +11 -0
  293. package/dist/types/systems/ParticleSystem2.d.ts +646 -0
  294. package/package.json +7 -1
@@ -0,0 +1,207 @@
1
+ /**
2
+ * @file ShaderGraph.ts
3
+ * @description Visual Shader Graph Editor System
4
+ * PRO-1.4: Professional Editor Features
5
+ *
6
+ * Features:
7
+ * - Node-based shader editing
8
+ * - GLSL/WGSL/HLSL generation
9
+ * - Real-time preview
10
+ * - Material templates
11
+ * - Custom node creation
12
+ * - Subgraph support
13
+ * - PBR and unlit workflows
14
+ */
15
+ export type ShaderTarget = 'glsl' | 'wgsl' | 'hlsl' | 'metal' | 'spirv';
16
+ export type ShaderStage = 'vertex' | 'fragment' | 'compute';
17
+ export type ShaderPrecision = 'lowp' | 'mediump' | 'highp';
18
+ export type ShaderDataType = 'float' | 'vec2' | 'vec3' | 'vec4' | 'int' | 'ivec2' | 'ivec3' | 'ivec4' | 'bool' | 'bvec2' | 'bvec3' | 'bvec4' | 'mat2' | 'mat3' | 'mat4' | 'sampler2D' | 'samplerCube' | 'sampler3D' | 'void';
19
+ export type ShaderBlendMode = 'opaque' | 'alpha' | 'additive' | 'multiply' | 'premultiplied';
20
+ export type ShaderCullMode = 'none' | 'front' | 'back';
21
+ export type ShaderDepthTest = 'always' | 'never' | 'less' | 'lequal' | 'greater' | 'gequal' | 'equal' | 'notequal';
22
+ export interface ShaderPortDef {
23
+ name: string;
24
+ type: ShaderDataType;
25
+ description?: string;
26
+ default?: number | number[];
27
+ min?: number;
28
+ max?: number;
29
+ hidden?: boolean;
30
+ }
31
+ export interface ShaderNodeDef {
32
+ id: string;
33
+ name: string;
34
+ category: ShaderNodeCategory;
35
+ description?: string;
36
+ inputs: ShaderPortDef[];
37
+ outputs: ShaderPortDef[];
38
+ /** GLSL code template with {{input}}, {{output}} placeholders */
39
+ glsl?: string;
40
+ /** WGSL code template */
41
+ wgsl?: string;
42
+ /** HLSL code template */
43
+ hlsl?: string;
44
+ /** Preview function name */
45
+ previewFunc?: string;
46
+ /** Custom properties */
47
+ properties?: ShaderPropertyDef[];
48
+ /** Whether this node is a master/output node */
49
+ isMaster?: boolean;
50
+ /** Stage restriction */
51
+ stage?: ShaderStage;
52
+ }
53
+ export type ShaderNodeCategory = 'input' | 'output' | 'math' | 'vector' | 'matrix' | 'texture' | 'uv' | 'color' | 'lighting' | 'channel' | 'procedural' | 'utility' | 'custom' | 'subgraph';
54
+ export interface ShaderPropertyDef {
55
+ name: string;
56
+ type: 'float' | 'int' | 'bool' | 'color' | 'texture' | 'dropdown' | 'vec2' | 'vec3' | 'vec4';
57
+ default?: unknown;
58
+ options?: string[];
59
+ min?: number;
60
+ max?: number;
61
+ }
62
+ export interface ShaderPort {
63
+ nodeId: string;
64
+ portName: string;
65
+ }
66
+ export interface ShaderConnection {
67
+ id: string;
68
+ from: ShaderPort;
69
+ to: ShaderPort;
70
+ }
71
+ export interface ShaderNodeInstance {
72
+ id: string;
73
+ type: string;
74
+ position: {
75
+ x: number;
76
+ y: number;
77
+ };
78
+ properties: Record<string, unknown>;
79
+ /** Collapsed state */
80
+ collapsed?: boolean;
81
+ /** Preview enabled */
82
+ previewEnabled?: boolean;
83
+ /** Custom title override */
84
+ title?: string;
85
+ /** Comment/note */
86
+ comment?: string;
87
+ }
88
+ export interface ShaderSubgraph {
89
+ id: string;
90
+ name: string;
91
+ description?: string;
92
+ nodes: ShaderNodeInstance[];
93
+ connections: ShaderConnection[];
94
+ inputs: ShaderPortDef[];
95
+ outputs: ShaderPortDef[];
96
+ }
97
+ export interface ShaderGraphDef {
98
+ id: string;
99
+ name: string;
100
+ description?: string;
101
+ target: ShaderTarget;
102
+ stage: ShaderStage;
103
+ nodes: ShaderNodeInstance[];
104
+ connections: ShaderConnection[];
105
+ /** Exposed properties for material instances */
106
+ properties: ShaderExposedProperty[];
107
+ /** Graph-level settings */
108
+ settings: ShaderGraphSettings;
109
+ /** Subgraphs */
110
+ subgraphs?: ShaderSubgraph[];
111
+ /** Custom functions */
112
+ customFunctions?: ShaderCustomFunction[];
113
+ /** Metadata */
114
+ metadata?: Record<string, unknown>;
115
+ }
116
+ export interface ShaderExposedProperty {
117
+ id: string;
118
+ name: string;
119
+ displayName: string;
120
+ type: ShaderDataType;
121
+ default: unknown;
122
+ min?: number;
123
+ max?: number;
124
+ group?: string;
125
+ tooltip?: string;
126
+ }
127
+ export interface ShaderGraphSettings {
128
+ precision: ShaderPrecision;
129
+ blendMode: ShaderBlendMode;
130
+ cullMode: ShaderCullMode;
131
+ depthWrite: boolean;
132
+ depthTest: ShaderDepthTest;
133
+ alphaClip?: number;
134
+ castShadows: boolean;
135
+ receiveShadows: boolean;
136
+ doubleSided: boolean;
137
+ /** Surface type */
138
+ surfaceType: 'opaque' | 'transparent';
139
+ /** Render queue */
140
+ renderQueue: number;
141
+ /** Custom defines */
142
+ defines?: Record<string, string | number | boolean>;
143
+ }
144
+ export interface ShaderCustomFunction {
145
+ name: string;
146
+ returnType: ShaderDataType;
147
+ parameters: {
148
+ name: string;
149
+ type: ShaderDataType;
150
+ }[];
151
+ body: string;
152
+ }
153
+ export declare const SHADER_NODE_LIBRARY: ShaderNodeDef[];
154
+ export interface GeneratedShader {
155
+ vertex: string;
156
+ fragment: string;
157
+ uniforms: ShaderUniform[];
158
+ defines: string[];
159
+ }
160
+ export interface ShaderUniform {
161
+ name: string;
162
+ type: ShaderDataType;
163
+ value?: unknown;
164
+ }
165
+ export declare class ShaderCodeGenerator {
166
+ private graph;
167
+ private nodeLibrary;
168
+ private generatedCode;
169
+ private uniforms;
170
+ private defines;
171
+ private nodeCounter;
172
+ constructor(graph: ShaderGraphDef);
173
+ generate(): GeneratedShader;
174
+ private generateNode;
175
+ private defaultValue;
176
+ private formatValue;
177
+ private buildVertexShader;
178
+ private buildFragmentShader;
179
+ }
180
+ export interface ShaderGraphEditorState {
181
+ graph: ShaderGraphDef;
182
+ selectedNodes: string[];
183
+ hoveredNode: string | null;
184
+ hoveredPort: ShaderPort | null;
185
+ draggingConnection: {
186
+ from: ShaderPort;
187
+ toPosition: {
188
+ x: number;
189
+ y: number;
190
+ };
191
+ } | null;
192
+ viewOffset: {
193
+ x: number;
194
+ y: number;
195
+ };
196
+ zoom: number;
197
+ previewEnabled: boolean;
198
+ generatedShader: GeneratedShader | null;
199
+ compileErrors: string[];
200
+ }
201
+ export declare function createShaderGraphEditorState(graph?: ShaderGraphDef): ShaderGraphEditorState;
202
+ export declare function createEmptyShaderGraph(): ShaderGraphDef;
203
+ export declare function createShaderGraph(name: string, target?: ShaderTarget): ShaderGraphDef;
204
+ export declare function generateShader(graph: ShaderGraphDef): GeneratedShader;
205
+ export declare function getNodeLibrary(): ShaderNodeDef[];
206
+ export declare function getNodesByCategory(category: ShaderNodeCategory): ShaderNodeDef[];
207
+ export declare function findNodeDef(nodeType: string): ShaderNodeDef | undefined;
@@ -0,0 +1,393 @@
1
+ /**
2
+ * @file TimelineEditor.ts
3
+ * @description Timeline System for Cutscenes, Cinematics, and Sequencing
4
+ * PRO-1.4: Professional Editor Features
5
+ *
6
+ * Features:
7
+ * - Multi-track timeline
8
+ * - Track types: animation, audio, event, property, activation
9
+ * - Keyframe animation with curves
10
+ * - Clips with blending
11
+ * - Markers and events
12
+ * - Playback control
13
+ * - Recording mode
14
+ * - Debugger integration
15
+ */
16
+ import type { EntityId, Vec2 } from '../core/types';
17
+ export type TimelinePlayState = 'stopped' | 'playing' | 'paused' | 'recording';
18
+ export type TimelineWrapMode = 'once' | 'loop' | 'pingPong' | 'clampForever';
19
+ export type TrackType = 'animation' | 'audio' | 'event' | 'property' | 'activation' | 'camera' | 'transform' | 'group' | 'override';
20
+ export type TangentMode = 'auto' | 'smooth' | 'linear' | 'constant' | 'free';
21
+ export type EasingFunction = 'linear' | 'easeIn' | 'easeOut' | 'easeInOut' | 'easeInQuad' | 'easeOutQuad' | 'easeInOutQuad' | 'easeInCubic' | 'easeOutCubic' | 'easeInOutCubic' | 'easeInQuart' | 'easeOutQuart' | 'easeInOutQuart' | 'easeInQuint' | 'easeOutQuint' | 'easeInOutQuint' | 'easeInSine' | 'easeOutSine' | 'easeInOutSine' | 'easeInExpo' | 'easeOutExpo' | 'easeInOutExpo' | 'easeInCirc' | 'easeOutCirc' | 'easeInOutCirc' | 'easeInBack' | 'easeOutBack' | 'easeInOutBack' | 'easeInElastic' | 'easeOutElastic' | 'easeInOutElastic' | 'easeInBounce' | 'easeOutBounce' | 'easeInOutBounce';
22
+ export interface Keyframe<T = number> {
23
+ id: string;
24
+ time: number;
25
+ value: T;
26
+ /** Easing to next keyframe */
27
+ easing?: EasingFunction;
28
+ /** Bezier tangent mode */
29
+ tangentMode?: TangentMode;
30
+ /** In tangent (for bezier) */
31
+ inTangent?: Vec2;
32
+ /** Out tangent (for bezier) */
33
+ outTangent?: Vec2;
34
+ /** In weight (0-1) */
35
+ inWeight?: number;
36
+ /** Out weight (0-1) */
37
+ outWeight?: number;
38
+ }
39
+ export interface AnimationCurve {
40
+ id: string;
41
+ property: string;
42
+ keyframes: Keyframe<number>[];
43
+ /** Pre-infinity mode */
44
+ preWrap?: TimelineWrapMode;
45
+ /** Post-infinity mode */
46
+ postWrap?: TimelineWrapMode;
47
+ }
48
+ export interface BaseClip {
49
+ id: string;
50
+ name: string;
51
+ trackId: string;
52
+ /** Start time in timeline */
53
+ startTime: number;
54
+ /** Duration of clip */
55
+ duration: number;
56
+ /** Clip can be trimmed from start */
57
+ clipIn?: number;
58
+ /** Speed multiplier */
59
+ speed?: number;
60
+ /** Blend in duration */
61
+ blendInDuration?: number;
62
+ /** Blend out duration */
63
+ blendOutDuration?: number;
64
+ /** Custom color */
65
+ color?: string;
66
+ /** Is this clip muted? */
67
+ muted?: boolean;
68
+ /** Is this clip locked? */
69
+ locked?: boolean;
70
+ }
71
+ export interface AnimationClip extends BaseClip {
72
+ type: 'animation';
73
+ /** Animation curves */
74
+ curves: AnimationCurve[];
75
+ /** Root motion */
76
+ rootMotion?: {
77
+ extractPosition: boolean;
78
+ extractRotation: boolean;
79
+ };
80
+ /** Target binding */
81
+ binding?: {
82
+ type: 'entity' | 'component' | 'property';
83
+ path: string;
84
+ };
85
+ }
86
+ export interface AudioClip extends BaseClip {
87
+ type: 'audio';
88
+ /** Audio asset reference */
89
+ audioSource: string;
90
+ /** Volume (0-1) */
91
+ volume: number;
92
+ /** Volume curve */
93
+ volumeCurve?: AnimationCurve;
94
+ /** Spatial blend (0 = 2D, 1 = 3D) */
95
+ spatialBlend?: number;
96
+ /** Loop */
97
+ loop?: boolean;
98
+ }
99
+ export interface EventClip extends BaseClip {
100
+ type: 'event';
101
+ /** Event name to fire */
102
+ eventName: string;
103
+ /** Event payload */
104
+ payload?: Record<string, unknown>;
105
+ /** Fire once or every frame */
106
+ fireMode: 'once' | 'every-frame' | 'on-exit';
107
+ }
108
+ export interface PropertyClip extends BaseClip {
109
+ type: 'property';
110
+ /** Target property path */
111
+ propertyPath: string;
112
+ /** Property curves */
113
+ curves: AnimationCurve[];
114
+ }
115
+ export interface ActivationClip extends BaseClip {
116
+ type: 'activation';
117
+ /** Entity to activate/deactivate */
118
+ targetEntity: EntityId;
119
+ /** Activation state */
120
+ active: boolean;
121
+ }
122
+ export interface TransformClip extends BaseClip {
123
+ type: 'transform';
124
+ /** Position curve */
125
+ positionCurve?: {
126
+ x: AnimationCurve;
127
+ y: AnimationCurve;
128
+ z: AnimationCurve;
129
+ };
130
+ /** Rotation curve (euler) */
131
+ rotationCurve?: {
132
+ x: AnimationCurve;
133
+ y: AnimationCurve;
134
+ z: AnimationCurve;
135
+ };
136
+ /** Scale curve */
137
+ scaleCurve?: {
138
+ x: AnimationCurve;
139
+ y: AnimationCurve;
140
+ z: AnimationCurve;
141
+ };
142
+ }
143
+ export interface CameraClip extends BaseClip {
144
+ type: 'camera';
145
+ /** Camera property curves */
146
+ fieldOfView?: AnimationCurve;
147
+ nearClip?: AnimationCurve;
148
+ farClip?: AnimationCurve;
149
+ /** Depth of field */
150
+ dof?: {
151
+ focusDistance: AnimationCurve;
152
+ aperture: AnimationCurve;
153
+ focalLength: AnimationCurve;
154
+ };
155
+ /** Camera shake */
156
+ shake?: {
157
+ amplitude: AnimationCurve;
158
+ frequency: AnimationCurve;
159
+ };
160
+ /** Look-at target */
161
+ lookAtTarget?: EntityId;
162
+ }
163
+ export type TimelineClip = AnimationClip | AudioClip | EventClip | PropertyClip | ActivationClip | TransformClip | CameraClip;
164
+ export interface BaseTrack {
165
+ id: string;
166
+ name: string;
167
+ type: TrackType;
168
+ /** Parent track (for grouping) */
169
+ parentId?: string;
170
+ /** Track color */
171
+ color?: string;
172
+ /** Is track muted? */
173
+ muted?: boolean;
174
+ /** Is track locked? */
175
+ locked?: boolean;
176
+ /** Is track collapsed in UI? */
177
+ collapsed?: boolean;
178
+ /** Track height in editor */
179
+ height?: number;
180
+ /** Clips on this track */
181
+ clips: TimelineClip[];
182
+ /** Override tracks (for track mixing) */
183
+ overrides?: string[];
184
+ }
185
+ export interface AnimationTrack extends BaseTrack {
186
+ type: 'animation';
187
+ /** Binding target */
188
+ binding?: {
189
+ entityId: EntityId;
190
+ animator?: string;
191
+ };
192
+ /** Default animator state */
193
+ defaultState?: string;
194
+ }
195
+ export interface AudioTrack extends BaseTrack {
196
+ type: 'audio';
197
+ /** Output audio group */
198
+ outputGroup?: string;
199
+ /** Master volume */
200
+ volume?: number;
201
+ }
202
+ export interface EventTrack extends BaseTrack {
203
+ type: 'event';
204
+ /** Target listener */
205
+ listenerPath?: string;
206
+ }
207
+ export interface PropertyTrack extends BaseTrack {
208
+ type: 'property';
209
+ /** Target entity */
210
+ targetEntity: EntityId;
211
+ /** Property path */
212
+ propertyPath: string;
213
+ }
214
+ export interface ActivationTrack extends BaseTrack {
215
+ type: 'activation';
216
+ /** Target entity */
217
+ targetEntity: EntityId;
218
+ }
219
+ export interface TransformTrack extends BaseTrack {
220
+ type: 'transform';
221
+ /** Target entity */
222
+ targetEntity: EntityId;
223
+ /** Space */
224
+ space: 'local' | 'world';
225
+ }
226
+ export interface CameraTrack extends BaseTrack {
227
+ type: 'camera';
228
+ /** Target camera entity */
229
+ cameraEntity: EntityId;
230
+ }
231
+ export interface GroupTrack extends BaseTrack {
232
+ type: 'group';
233
+ /** Child track IDs */
234
+ children: string[];
235
+ }
236
+ export type TimelineTrack = AnimationTrack | AudioTrack | EventTrack | PropertyTrack | ActivationTrack | TransformTrack | CameraTrack | GroupTrack;
237
+ export interface TimelineMarker {
238
+ id: string;
239
+ name: string;
240
+ time: number;
241
+ color?: string;
242
+ /** Marker type */
243
+ type: 'marker' | 'signal' | 'jump';
244
+ /** For signal markers */
245
+ signalName?: string;
246
+ signalPayload?: Record<string, unknown>;
247
+ /** For jump markers */
248
+ jumpTarget?: string;
249
+ jumpCondition?: string;
250
+ }
251
+ export interface TimelineDefinition {
252
+ id: string;
253
+ name: string;
254
+ description?: string;
255
+ /** Total duration */
256
+ duration: number;
257
+ /** Frames per second */
258
+ fps: number;
259
+ /** Wrap mode */
260
+ wrapMode: TimelineWrapMode;
261
+ /** Tracks */
262
+ tracks: TimelineTrack[];
263
+ /** Markers */
264
+ markers: TimelineMarker[];
265
+ /** Metadata */
266
+ metadata?: {
267
+ author?: string;
268
+ version?: string;
269
+ created?: number;
270
+ modified?: number;
271
+ tags?: string[];
272
+ };
273
+ /** Editor settings */
274
+ editorSettings?: {
275
+ snapToFrames: boolean;
276
+ showCurves: boolean;
277
+ showAudioWaveforms: boolean;
278
+ zoom: number;
279
+ scrollOffset: number;
280
+ };
281
+ }
282
+ export type TimelineEventType = 'play' | 'pause' | 'stop' | 'seek' | 'marker' | 'signal' | 'clip-enter' | 'clip-exit' | 'loop' | 'complete' | 'event';
283
+ export interface TimelineEvent {
284
+ type: TimelineEventType;
285
+ time: number;
286
+ data?: unknown;
287
+ }
288
+ export declare function applyEasing(t: number, easing?: EasingFunction): number;
289
+ export declare function evaluateCurve(curve: AnimationCurve, time: number): number;
290
+ export declare class TimelinePlayer {
291
+ private definition;
292
+ private state;
293
+ private currentTime;
294
+ private speed;
295
+ private direction;
296
+ /** Active clips per track */
297
+ private activeClips;
298
+ /** Previous time for detecting clip transitions */
299
+ private previousTime;
300
+ /** Event listeners */
301
+ private listeners;
302
+ /** Property bindings */
303
+ private propertyBindings;
304
+ /** Audio context */
305
+ private audioContext?;
306
+ private audioNodes;
307
+ /** Debug mode */
308
+ debugMode: boolean;
309
+ private history;
310
+ constructor(definition: TimelineDefinition);
311
+ play(): void;
312
+ pause(): void;
313
+ stop(): void;
314
+ seek(time: number): void;
315
+ seekToMarker(markerName: string): boolean;
316
+ setSpeed(speed: number): void;
317
+ getSpeed(): number;
318
+ update(dt: number): void;
319
+ private processTracks;
320
+ private processTrack;
321
+ private onClipEnter;
322
+ private onClipExit;
323
+ private updateClip;
324
+ private updateAnimationClip;
325
+ private updatePropertyClip;
326
+ private updateEventClip;
327
+ private updateTransformClip;
328
+ private updateCameraClip;
329
+ private updateAudioClip;
330
+ private fireEventClip;
331
+ private playAudioClip;
332
+ private stopAudioClip;
333
+ private stopAllAudio;
334
+ private processMarkers;
335
+ private evaluateCondition;
336
+ bindProperty(path: string, setter: (value: unknown) => void): void;
337
+ unbindProperty(path: string): void;
338
+ private applyProperty;
339
+ on(event: TimelineEventType, listener: (event: TimelineEvent) => void): void;
340
+ off(event: TimelineEventType, listener: (event: TimelineEvent) => void): void;
341
+ private emit;
342
+ getState(): TimelinePlayState;
343
+ getCurrentTime(): number;
344
+ getDuration(): number;
345
+ getProgress(): number;
346
+ isPlaying(): boolean;
347
+ isPaused(): boolean;
348
+ isStopped(): boolean;
349
+ getDefinition(): TimelineDefinition;
350
+ getHistory(): TimelineEvent[];
351
+ clearHistory(): void;
352
+ getDebugInfo(): {
353
+ state: TimelinePlayState;
354
+ time: number;
355
+ duration: number;
356
+ progress: number;
357
+ speed: number;
358
+ activeClipCount: number;
359
+ };
360
+ }
361
+ export interface RecordingOptions {
362
+ targetTrack: string;
363
+ propertyPath?: string;
364
+ sampleRate?: number;
365
+ autoKeyMode?: 'none' | 'all' | 'modified';
366
+ }
367
+ export declare class TimelineRecorder {
368
+ private player;
369
+ private options;
370
+ private recording;
371
+ private recordedKeyframes;
372
+ private lastSampleTime;
373
+ constructor(player: TimelinePlayer, options: RecordingOptions);
374
+ startRecording(): void;
375
+ stopRecording(): Map<string, Keyframe<number>[]>;
376
+ isRecording(): boolean;
377
+ recordValue(property: string, value: number): void;
378
+ getRecordedKeyframes(): Map<string, Keyframe<number>[]>;
379
+ }
380
+ export declare function createTimelineDefinition(name: string, duration?: number): TimelineDefinition;
381
+ export declare function createTimelinePlayer(definition: TimelineDefinition): TimelinePlayer;
382
+ export declare function createTimelineRecorder(player: TimelinePlayer, options: RecordingOptions): TimelineRecorder;
383
+ export declare function createTrack(name: string, type: TrackType): TimelineTrack;
384
+ export declare function createAnimationClip(trackId: string, startTime: number, duration: number): AnimationClip;
385
+ export declare function createAudioClip(trackId: string, startTime: number, duration: number, audioSource: string): AudioClip;
386
+ export declare function createEventClip(trackId: string, time: number, eventName: string): EventClip;
387
+ export declare function createPropertyClip(trackId: string, startTime: number, duration: number, propertyPath: string): PropertyClip;
388
+ export declare function createTransformClip(trackId: string, startTime: number, duration: number): TransformClip;
389
+ export declare function createCameraClip(trackId: string, startTime: number, duration: number): CameraClip;
390
+ export declare function createAnimationCurve(property: string): AnimationCurve;
391
+ export declare function createKeyframe<T = number>(time: number, value: T, easing?: EasingFunction): Keyframe<T>;
392
+ export declare function createMarker(name: string, time: number): TimelineMarker;
393
+ export declare function createSignalMarker(name: string, time: number, signalName: string, payload?: Record<string, unknown>): TimelineMarker;