@twick/core 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/LICENSE +21 -0
  2. package/lib/app/Logger.d.ts +105 -0
  3. package/lib/app/Logger.d.ts.map +1 -0
  4. package/lib/app/Logger.js +77 -0
  5. package/lib/app/PlaybackManager.d.ts +55 -0
  6. package/lib/app/PlaybackManager.d.ts.map +1 -0
  7. package/lib/app/PlaybackManager.js +179 -0
  8. package/lib/app/PlaybackStatus.d.ts +30 -0
  9. package/lib/app/PlaybackStatus.d.ts.map +1 -0
  10. package/lib/app/PlaybackStatus.js +46 -0
  11. package/lib/app/Player.d.ts +130 -0
  12. package/lib/app/Player.d.ts.map +1 -0
  13. package/lib/app/Player.js +375 -0
  14. package/lib/app/Project.d.ts +145 -0
  15. package/lib/app/Project.d.ts.map +1 -0
  16. package/lib/app/Project.js +10 -0
  17. package/lib/app/Renderer.d.ts +90 -0
  18. package/lib/app/Renderer.d.ts.map +1 -0
  19. package/lib/app/Renderer.js +318 -0
  20. package/lib/app/SharedWebGLContext.d.ts +24 -0
  21. package/lib/app/SharedWebGLContext.d.ts.map +1 -0
  22. package/lib/app/SharedWebGLContext.js +200 -0
  23. package/lib/app/Stage.d.ts +30 -0
  24. package/lib/app/Stage.d.ts.map +1 -0
  25. package/lib/app/Stage.js +75 -0
  26. package/lib/app/TimeEstimator.d.ts +53 -0
  27. package/lib/app/TimeEstimator.d.ts.map +1 -0
  28. package/lib/app/TimeEstimator.js +70 -0
  29. package/lib/app/index.d.ts +16 -0
  30. package/lib/app/index.d.ts.map +1 -0
  31. package/lib/app/index.js +16 -0
  32. package/lib/app/makeProject.d.ts +15 -0
  33. package/lib/app/makeProject.d.ts.map +1 -0
  34. package/lib/app/makeProject.js +72 -0
  35. package/lib/app/project-settings.d.ts +8 -0
  36. package/lib/app/project-settings.d.ts.map +1 -0
  37. package/lib/app/project-settings.js +13 -0
  38. package/lib/decorators/decorate.d.ts +2 -0
  39. package/lib/decorators/decorate.d.ts.map +1 -0
  40. package/lib/decorators/decorate.js +10 -0
  41. package/lib/decorators/deprecated.d.ts +5 -0
  42. package/lib/decorators/deprecated.d.ts.map +1 -0
  43. package/lib/decorators/deprecated.js +23 -0
  44. package/lib/decorators/index.d.ts +9 -0
  45. package/lib/decorators/index.d.ts.map +1 -0
  46. package/lib/decorators/index.js +9 -0
  47. package/lib/decorators/lazy.d.ts +14 -0
  48. package/lib/decorators/lazy.d.ts.map +1 -0
  49. package/lib/decorators/lazy.js +27 -0
  50. package/lib/decorators/threadable.d.ts +2 -0
  51. package/lib/decorators/threadable.d.ts.map +1 -0
  52. package/lib/decorators/threadable.js +7 -0
  53. package/lib/events/AsyncEventDispatcher.d.ts +45 -0
  54. package/lib/events/AsyncEventDispatcher.d.ts.map +1 -0
  55. package/lib/events/AsyncEventDispatcher.js +33 -0
  56. package/lib/events/EventDispatcher.d.ts +38 -0
  57. package/lib/events/EventDispatcher.d.ts.map +1 -0
  58. package/lib/events/EventDispatcher.js +29 -0
  59. package/lib/events/EventDispatcherBase.d.ts +55 -0
  60. package/lib/events/EventDispatcherBase.d.ts.map +1 -0
  61. package/lib/events/EventDispatcherBase.js +68 -0
  62. package/lib/events/FlagDispatcher.d.ts +54 -0
  63. package/lib/events/FlagDispatcher.d.ts.map +1 -0
  64. package/lib/events/FlagDispatcher.js +63 -0
  65. package/lib/events/ValueDispatcher.d.ts +81 -0
  66. package/lib/events/ValueDispatcher.d.ts.map +1 -0
  67. package/lib/events/ValueDispatcher.js +97 -0
  68. package/lib/events/index.d.ts +11 -0
  69. package/lib/events/index.d.ts.map +1 -0
  70. package/lib/events/index.js +11 -0
  71. package/lib/exporter/Exporter.d.ts +101 -0
  72. package/lib/exporter/Exporter.d.ts.map +1 -0
  73. package/lib/exporter/Exporter.js +2 -0
  74. package/lib/exporter/FFmpegExporter.d.ts +50 -0
  75. package/lib/exporter/FFmpegExporter.d.ts.map +1 -0
  76. package/lib/exporter/FFmpegExporter.js +140 -0
  77. package/lib/exporter/ImageExporter.d.ts +34 -0
  78. package/lib/exporter/ImageExporter.d.ts.map +1 -0
  79. package/lib/exporter/ImageExporter.js +80 -0
  80. package/lib/exporter/WasmExporter.d.ts +19 -0
  81. package/lib/exporter/WasmExporter.d.ts.map +1 -0
  82. package/lib/exporter/WasmExporter.js +78 -0
  83. package/lib/exporter/download-videos.d.ts +3 -0
  84. package/lib/exporter/download-videos.d.ts.map +1 -0
  85. package/lib/exporter/download-videos.js +45 -0
  86. package/lib/exporter/index.d.ts +5 -0
  87. package/lib/exporter/index.d.ts.map +1 -0
  88. package/lib/exporter/index.js +5 -0
  89. package/lib/flow/all.d.ts +18 -0
  90. package/lib/flow/all.d.ts.map +1 -0
  91. package/lib/flow/all.js +25 -0
  92. package/lib/flow/any.d.ts +18 -0
  93. package/lib/flow/any.d.ts.map +1 -0
  94. package/lib/flow/any.js +25 -0
  95. package/lib/flow/chain.d.ts +36 -0
  96. package/lib/flow/chain.d.ts.map +1 -0
  97. package/lib/flow/chain.js +46 -0
  98. package/lib/flow/delay.d.ts +29 -0
  99. package/lib/flow/delay.d.ts.map +1 -0
  100. package/lib/flow/delay.js +39 -0
  101. package/lib/flow/every.d.ts +41 -0
  102. package/lib/flow/every.d.ts.map +1 -0
  103. package/lib/flow/every.js +61 -0
  104. package/lib/flow/index.d.ts +17 -0
  105. package/lib/flow/index.d.ts.map +1 -0
  106. package/lib/flow/index.js +17 -0
  107. package/lib/flow/join.d.ts +35 -0
  108. package/lib/flow/join.d.ts.map +1 -0
  109. package/lib/flow/join.js +33 -0
  110. package/lib/flow/loop.d.ts +58 -0
  111. package/lib/flow/loop.d.ts.map +1 -0
  112. package/lib/flow/loop.js +51 -0
  113. package/lib/flow/loopFor.d.ts +25 -0
  114. package/lib/flow/loopFor.d.ts.map +1 -0
  115. package/lib/flow/loopFor.js +42 -0
  116. package/lib/flow/names.d.ts +3 -0
  117. package/lib/flow/names.d.ts.map +1 -0
  118. package/lib/flow/names.js +11 -0
  119. package/lib/flow/run.d.ts +45 -0
  120. package/lib/flow/run.d.ts.map +1 -0
  121. package/lib/flow/run.js +14 -0
  122. package/lib/flow/scheduling.d.ts +18 -0
  123. package/lib/flow/scheduling.d.ts.map +1 -0
  124. package/lib/flow/scheduling.js +33 -0
  125. package/lib/flow/sequence.d.ts +22 -0
  126. package/lib/flow/sequence.d.ts.map +1 -0
  127. package/lib/flow/sequence.js +31 -0
  128. package/lib/index.d.ts +16 -0
  129. package/lib/index.d.ts.map +1 -0
  130. package/lib/index.js +16 -0
  131. package/lib/media/index.d.ts +7 -0
  132. package/lib/media/index.d.ts.map +1 -0
  133. package/lib/media/index.js +7 -0
  134. package/lib/media/loadImage.d.ts +8 -0
  135. package/lib/media/loadImage.d.ts.map +1 -0
  136. package/lib/media/loadImage.js +29 -0
  137. package/lib/plugin/DefaultPlugin.d.ts +10 -0
  138. package/lib/plugin/DefaultPlugin.d.ts.map +1 -0
  139. package/lib/plugin/DefaultPlugin.js +17 -0
  140. package/lib/plugin/Plugin.d.ts +53 -0
  141. package/lib/plugin/Plugin.d.ts.map +1 -0
  142. package/lib/plugin/Plugin.js +2 -0
  143. package/lib/plugin/index.d.ts +3 -0
  144. package/lib/plugin/index.d.ts.map +1 -0
  145. package/lib/plugin/index.js +3 -0
  146. package/lib/plugin/makePlugin.d.ts +15 -0
  147. package/lib/plugin/makePlugin.d.ts.map +1 -0
  148. package/lib/plugin/makePlugin.js +16 -0
  149. package/lib/scenes/GeneratorScene.d.ts +95 -0
  150. package/lib/scenes/GeneratorScene.d.ts.map +1 -0
  151. package/lib/scenes/GeneratorScene.js +273 -0
  152. package/lib/scenes/Inspectable.d.ts +71 -0
  153. package/lib/scenes/Inspectable.d.ts.map +1 -0
  154. package/lib/scenes/Inspectable.js +4 -0
  155. package/lib/scenes/LifecycleEvents.d.ts +18 -0
  156. package/lib/scenes/LifecycleEvents.d.ts.map +1 -0
  157. package/lib/scenes/LifecycleEvents.js +45 -0
  158. package/lib/scenes/Random.d.ts +66 -0
  159. package/lib/scenes/Random.d.ts.map +1 -0
  160. package/lib/scenes/Random.js +101 -0
  161. package/lib/scenes/Scene.d.ts +298 -0
  162. package/lib/scenes/Scene.d.ts.map +1 -0
  163. package/lib/scenes/Scene.js +25 -0
  164. package/lib/scenes/SceneState.d.ts +34 -0
  165. package/lib/scenes/SceneState.d.ts.map +1 -0
  166. package/lib/scenes/SceneState.js +35 -0
  167. package/lib/scenes/Shaders.d.ts +63 -0
  168. package/lib/scenes/Shaders.d.ts.map +1 -0
  169. package/lib/scenes/Shaders.js +158 -0
  170. package/lib/scenes/Slides.d.ts +33 -0
  171. package/lib/scenes/Slides.d.ts.map +1 -0
  172. package/lib/scenes/Slides.js +115 -0
  173. package/lib/scenes/Threadable.d.ts +19 -0
  174. package/lib/scenes/Threadable.d.ts.map +1 -0
  175. package/lib/scenes/Threadable.js +4 -0
  176. package/lib/scenes/Variables.d.ts +24 -0
  177. package/lib/scenes/Variables.d.ts.map +1 -0
  178. package/lib/scenes/Variables.js +39 -0
  179. package/lib/scenes/index.d.ts +16 -0
  180. package/lib/scenes/index.d.ts.map +1 -0
  181. package/lib/scenes/index.js +16 -0
  182. package/lib/signals/CompoundSignalContext.d.ts +21 -0
  183. package/lib/signals/CompoundSignalContext.d.ts.map +1 -0
  184. package/lib/signals/CompoundSignalContext.js +73 -0
  185. package/lib/signals/ComputedContext.d.ts +14 -0
  186. package/lib/signals/ComputedContext.d.ts.map +1 -0
  187. package/lib/signals/ComputedContext.js +36 -0
  188. package/lib/signals/DependencyContext.d.ts +32 -0
  189. package/lib/signals/DependencyContext.d.ts.map +1 -0
  190. package/lib/signals/DependencyContext.js +87 -0
  191. package/lib/signals/SignalContext.d.ts +120 -0
  192. package/lib/signals/SignalContext.d.ts.map +1 -0
  193. package/lib/signals/SignalContext.js +245 -0
  194. package/lib/signals/createComputed.d.ts +3 -0
  195. package/lib/signals/createComputed.d.ts.map +1 -0
  196. package/lib/signals/createComputed.js +5 -0
  197. package/lib/signals/createComputedAsync.d.ts +4 -0
  198. package/lib/signals/createComputedAsync.d.ts.map +1 -0
  199. package/lib/signals/createComputedAsync.js +15 -0
  200. package/lib/signals/createSignal.d.ts +5 -0
  201. package/lib/signals/createSignal.d.ts.map +1 -0
  202. package/lib/signals/createSignal.js +6 -0
  203. package/lib/signals/index.d.ts +16 -0
  204. package/lib/signals/index.d.ts.map +1 -0
  205. package/lib/signals/index.js +16 -0
  206. package/lib/signals/symbols.d.ts +2 -0
  207. package/lib/signals/symbols.d.ts.map +1 -0
  208. package/lib/signals/symbols.js +2 -0
  209. package/lib/signals/types.d.ts +51 -0
  210. package/lib/signals/types.d.ts.map +1 -0
  211. package/lib/signals/types.js +2 -0
  212. package/lib/signals/utils.d.ts +5 -0
  213. package/lib/signals/utils.d.ts.map +1 -0
  214. package/lib/signals/utils.js +10 -0
  215. package/lib/threading/Thread.d.ts +77 -0
  216. package/lib/threading/Thread.d.ts.map +1 -0
  217. package/lib/threading/Thread.js +169 -0
  218. package/lib/threading/ThreadGenerator.d.ts +39 -0
  219. package/lib/threading/ThreadGenerator.d.ts.map +1 -0
  220. package/lib/threading/ThreadGenerator.js +17 -0
  221. package/lib/threading/cancel.d.ts +17 -0
  222. package/lib/threading/cancel.d.ts.map +1 -0
  223. package/lib/threading/cancel.js +26 -0
  224. package/lib/threading/index.d.ts +11 -0
  225. package/lib/threading/index.d.ts.map +1 -0
  226. package/lib/threading/index.js +11 -0
  227. package/lib/threading/spawn.d.ts +28 -0
  228. package/lib/threading/spawn.d.ts.map +1 -0
  229. package/lib/threading/spawn.js +30 -0
  230. package/lib/threading/threads.d.ts +46 -0
  231. package/lib/threading/threads.d.ts.map +1 -0
  232. package/lib/threading/threads.js +89 -0
  233. package/lib/transitions/fadeTransition.d.ts +8 -0
  234. package/lib/transitions/fadeTransition.d.ts.map +1 -0
  235. package/lib/transitions/fadeTransition.js +16 -0
  236. package/lib/transitions/index.d.ts +11 -0
  237. package/lib/transitions/index.d.ts.map +1 -0
  238. package/lib/transitions/index.js +11 -0
  239. package/lib/transitions/slideTransition.d.ts +18 -0
  240. package/lib/transitions/slideTransition.d.ts.map +1 -0
  241. package/lib/transitions/slideTransition.js +14 -0
  242. package/lib/transitions/useTransition.d.ts +10 -0
  243. package/lib/transitions/useTransition.d.ts.map +1 -0
  244. package/lib/transitions/useTransition.js +27 -0
  245. package/lib/transitions/zoomInTransition.d.ts +10 -0
  246. package/lib/transitions/zoomInTransition.d.ts.map +1 -0
  247. package/lib/transitions/zoomInTransition.js +33 -0
  248. package/lib/transitions/zoomOutTransition.d.ts +10 -0
  249. package/lib/transitions/zoomOutTransition.d.ts.map +1 -0
  250. package/lib/transitions/zoomOutTransition.js +33 -0
  251. package/lib/tsconfig.build.tsbuildinfo +1 -0
  252. package/lib/tweening/helpers.d.ts +5 -0
  253. package/lib/tweening/helpers.d.ts.map +1 -0
  254. package/lib/tweening/helpers.js +16 -0
  255. package/lib/tweening/index.d.ts +11 -0
  256. package/lib/tweening/index.d.ts.map +1 -0
  257. package/lib/tweening/index.js +11 -0
  258. package/lib/tweening/interpolationFunctions.d.ts +38 -0
  259. package/lib/tweening/interpolationFunctions.d.ts.map +1 -0
  260. package/lib/tweening/interpolationFunctions.js +107 -0
  261. package/lib/tweening/spring.d.ts +20 -0
  262. package/lib/tweening/spring.d.ts.map +1 -0
  263. package/lib/tweening/spring.js +103 -0
  264. package/lib/tweening/timingFunctions.d.ts +46 -0
  265. package/lib/tweening/timingFunctions.d.ts.map +1 -0
  266. package/lib/tweening/timingFunctions.js +233 -0
  267. package/lib/tweening/tween.d.ts +3 -0
  268. package/lib/tweening/tween.d.ts.map +1 -0
  269. package/lib/tweening/tween.js +21 -0
  270. package/lib/types/BBox.d.ts +73 -0
  271. package/lib/types/BBox.d.ts.map +1 -0
  272. package/lib/types/BBox.js +249 -0
  273. package/lib/types/Canvas.d.ts +3 -0
  274. package/lib/types/Canvas.d.ts.map +1 -0
  275. package/lib/types/Canvas.js +2 -0
  276. package/lib/types/Color.d.ts +65 -0
  277. package/lib/types/Color.d.ts.map +1 -0
  278. package/lib/types/Color.js +185 -0
  279. package/lib/types/Matrix.d.ts +3 -0
  280. package/lib/types/Matrix.d.ts.map +1 -0
  281. package/lib/types/Matrix.js +10 -0
  282. package/lib/types/Matrix2D.d.ts +363 -0
  283. package/lib/types/Matrix2D.d.ts.map +1 -0
  284. package/lib/types/Matrix2D.js +554 -0
  285. package/lib/types/Origin.d.ts +17 -0
  286. package/lib/types/Origin.d.ts.map +1 -0
  287. package/lib/types/Origin.js +53 -0
  288. package/lib/types/Spacing.d.ts +36 -0
  289. package/lib/types/Spacing.d.ts.map +1 -0
  290. package/lib/types/Spacing.js +70 -0
  291. package/lib/types/Type.d.ts +9 -0
  292. package/lib/types/Type.d.ts.map +1 -0
  293. package/lib/types/Type.js +5 -0
  294. package/lib/types/Vector.d.ts +203 -0
  295. package/lib/types/Vector.d.ts.map +1 -0
  296. package/lib/types/Vector.js +355 -0
  297. package/lib/types/alignment-enums.d.ts +22 -0
  298. package/lib/types/alignment-enums.d.ts.map +1 -0
  299. package/lib/types/alignment-enums.js +25 -0
  300. package/lib/types/index.d.ts +17 -0
  301. package/lib/types/index.d.ts.map +1 -0
  302. package/lib/types/index.js +17 -0
  303. package/lib/types/vector-transformations.d.ts +20 -0
  304. package/lib/types/vector-transformations.d.ts.map +1 -0
  305. package/lib/types/vector-transformations.js +31 -0
  306. package/lib/utils/DetailedError.d.ts +24 -0
  307. package/lib/utils/DetailedError.d.ts.map +1 -0
  308. package/lib/utils/DetailedError.js +16 -0
  309. package/lib/utils/ExperimentalError.d.ts +10 -0
  310. package/lib/utils/ExperimentalError.d.ts.map +1 -0
  311. package/lib/utils/ExperimentalError.js +32 -0
  312. package/lib/utils/Semaphore.d.ts +12 -0
  313. package/lib/utils/Semaphore.d.ts.map +1 -0
  314. package/lib/utils/Semaphore.js +25 -0
  315. package/lib/utils/beginSlide.d.ts +3 -0
  316. package/lib/utils/beginSlide.d.ts.map +1 -0
  317. package/lib/utils/beginSlide.js +12 -0
  318. package/lib/utils/capitalize.d.ts +2 -0
  319. package/lib/utils/capitalize.d.ts.map +1 -0
  320. package/lib/utils/capitalize.js +4 -0
  321. package/lib/utils/createRef.d.ts +15 -0
  322. package/lib/utils/createRef.d.ts.map +1 -0
  323. package/lib/utils/createRef.js +21 -0
  324. package/lib/utils/createRefArray.d.ts +27 -0
  325. package/lib/utils/createRefArray.d.ts.map +1 -0
  326. package/lib/utils/createRefArray.js +49 -0
  327. package/lib/utils/createRefMap.d.ts +50 -0
  328. package/lib/utils/createRefMap.d.ts.map +1 -0
  329. package/lib/utils/createRefMap.js +77 -0
  330. package/lib/utils/debug.d.ts +24 -0
  331. package/lib/utils/debug.d.ts.map +1 -0
  332. package/lib/utils/debug.js +47 -0
  333. package/lib/utils/deprecate.d.ts +9 -0
  334. package/lib/utils/deprecate.d.ts.map +1 -0
  335. package/lib/utils/deprecate.js +15 -0
  336. package/lib/utils/errorToLog.d.ts +3 -0
  337. package/lib/utils/errorToLog.d.ts.map +1 -0
  338. package/lib/utils/errorToLog.js +8 -0
  339. package/lib/utils/experimentalLog.d.ts +3 -0
  340. package/lib/utils/experimentalLog.d.ts.map +1 -0
  341. package/lib/utils/experimentalLog.js +10 -0
  342. package/lib/utils/getContext.d.ts +2 -0
  343. package/lib/utils/getContext.d.ts.map +1 -0
  344. package/lib/utils/getContext.js +8 -0
  345. package/lib/utils/index.d.ts +26 -0
  346. package/lib/utils/index.d.ts.map +1 -0
  347. package/lib/utils/index.js +26 -0
  348. package/lib/utils/math.d.ts +15 -0
  349. package/lib/utils/math.d.ts.map +1 -0
  350. package/lib/utils/math.js +15 -0
  351. package/lib/utils/range.d.ts +40 -0
  352. package/lib/utils/range.d.ts.map +1 -0
  353. package/lib/utils/range.js +18 -0
  354. package/lib/utils/useContext.d.ts +13 -0
  355. package/lib/utils/useContext.d.ts.map +1 -0
  356. package/lib/utils/useContext.js +18 -0
  357. package/lib/utils/usePlayback.d.ts +8 -0
  358. package/lib/utils/usePlayback.d.ts.map +1 -0
  359. package/lib/utils/usePlayback.js +20 -0
  360. package/lib/utils/useScene.d.ts +17 -0
  361. package/lib/utils/useScene.d.ts.map +1 -0
  362. package/lib/utils/useScene.js +33 -0
  363. package/lib/utils/useThread.d.ts +8 -0
  364. package/lib/utils/useThread.d.ts.map +1 -0
  365. package/lib/utils/useThread.js +24 -0
  366. package/lib/utils/useTime.d.ts +19 -0
  367. package/lib/utils/useTime.d.ts.map +1 -0
  368. package/lib/utils/useTime.js +22 -0
  369. package/package.json +36 -0
  370. package/project.d.ts +24 -0
  371. package/shaders/common.glsl +15 -0
  372. package/shaders/fragment.glsl +8 -0
  373. package/tsconfig.project.json +14 -0
@@ -0,0 +1,298 @@
1
+ import type { AssetInfo, Logger, PlaybackStatus, SharedWebGLContext } from '../app';
2
+ import type { SubscribableEvent, SubscribableValueEvent } from '../events';
3
+ import type { Plugin } from '../plugin';
4
+ import type { SignalValue } from '../signals';
5
+ import type { Vector2 } from '../types';
6
+ import type { LifecycleEvents } from './LifecycleEvents';
7
+ import type { Shaders } from './Shaders';
8
+ import type { Slides } from './Slides';
9
+ import type { Variables } from './Variables';
10
+ /**
11
+ * The constructor used when creating new scenes.
12
+ *
13
+ * @remarks
14
+ * Each class implementing the {@link Scene} interface should have a matching
15
+ * constructor.
16
+ *
17
+ * @typeParam T - The type of the configuration object. This object will be
18
+ * passed to the constructor from
19
+ * {@link SceneDescription.config}.
20
+ */
21
+ export interface SceneConstructor<T> {
22
+ new (description: FullSceneDescription<T>): Scene;
23
+ }
24
+ /**
25
+ * Describes a scene exposed by scene files.
26
+ *
27
+ * @typeParam T - The type of the configuration object.
28
+ */
29
+ export interface SceneDescription<T = unknown> {
30
+ /**
31
+ * Name of the scene.
32
+ */
33
+ name: string;
34
+ /**
35
+ * The class used to instantiate the scene.
36
+ */
37
+ klass: SceneConstructor<T>;
38
+ /**
39
+ * Configuration object.
40
+ */
41
+ config: T;
42
+ /**
43
+ * The stack trace at the moment of creation.
44
+ */
45
+ stack?: string;
46
+ /**
47
+ * A list of plugins to include in the project.
48
+ */
49
+ plugins?: (Plugin | string)[];
50
+ }
51
+ /**
52
+ * Describes a complete scene together with the meta file.
53
+ *
54
+ * @typeParam T - The type of the configuration object.
55
+ */
56
+ export interface FullSceneDescription<T = unknown> extends SceneDescription<T> {
57
+ size: Vector2;
58
+ resolutionScale: number;
59
+ playback: PlaybackStatus;
60
+ logger: Logger;
61
+ sharedWebGLContext: SharedWebGLContext;
62
+ experimentalFeatures?: boolean;
63
+ }
64
+ /**
65
+ * A part of the {@link SceneDescription} that can be updated during reload.
66
+ *
67
+ * @typeParam T - The type of the configuration object.
68
+ */
69
+ export interface SceneDescriptionReload<T = unknown> {
70
+ size?: Vector2;
71
+ resolutionScale?: number;
72
+ config?: T;
73
+ stack?: string;
74
+ }
75
+ export type DescriptionOf<TScene> = TScene extends Scene<infer TConfig> ? SceneDescription<TConfig> : never;
76
+ /**
77
+ * Describes cached information about the timing of a scene.
78
+ */
79
+ export interface CachedSceneData {
80
+ firstFrame: number;
81
+ lastFrame: number;
82
+ transitionDuration: number;
83
+ duration: number;
84
+ }
85
+ /**
86
+ * Signifies the various stages of a {@link Scene}'s render lifecycle.
87
+ */
88
+ export declare enum SceneRenderEvent {
89
+ /**
90
+ * Occurs before the render starts when the Scene transitions are applied.
91
+ */
92
+ BeforeRender = 0,
93
+ /**
94
+ * Occurs at the beginning of a render when the Scene's
95
+ * {@link utils.useContext} handlers are applied.
96
+ */
97
+ BeginRender = 1,
98
+ /**
99
+ * Occurs at the end of a render when the Scene's
100
+ * {@link utils.useContextAfter} handlers are applied.
101
+ */
102
+ FinishRender = 2,
103
+ /**
104
+ * Occurs after a render ends.
105
+ */
106
+ AfterRender = 3
107
+ }
108
+ /**
109
+ * The main interface for scenes.
110
+ *
111
+ * @remarks
112
+ * Any class implementing this interface should have a constructor matching
113
+ * {@link SceneConstructor}.
114
+ *
115
+ * @typeParam T - The type of the configuration object.
116
+ */
117
+ export interface Scene<T = unknown> {
118
+ /**
119
+ * Name of the scene.
120
+ *
121
+ * @remarks
122
+ * Will be passed as the second argument to the constructor.
123
+ */
124
+ readonly name: string;
125
+ /**
126
+ * Reference to the project.
127
+ */
128
+ readonly playback: PlaybackStatus;
129
+ /**
130
+ * @experimental
131
+ */
132
+ readonly shaders: Shaders;
133
+ readonly slides: Slides;
134
+ readonly logger: Logger;
135
+ readonly variables: Variables;
136
+ creationStack?: string;
137
+ /**
138
+ * The frame at which this scene starts.
139
+ */
140
+ get firstFrame(): number;
141
+ /**
142
+ * The frame at which this scene ends.
143
+ */
144
+ get lastFrame(): number;
145
+ /**
146
+ * Triggered when the cached data changes.
147
+ *
148
+ * @eventProperty
149
+ */
150
+ get onCacheChanged(): SubscribableValueEvent<CachedSceneData>;
151
+ /**
152
+ * Triggered when the scene is reloaded.
153
+ *
154
+ * @eventProperty
155
+ */
156
+ get onReloaded(): SubscribableEvent<void>;
157
+ /**
158
+ * Triggered after scene is recalculated.
159
+ *
160
+ * @eventProperty
161
+ */
162
+ get onRecalculated(): SubscribableEvent<void>;
163
+ /**
164
+ * The {@link scenes.LifecycleEvents} of this scene.
165
+ */
166
+ get lifecycleEvents(): LifecycleEvents;
167
+ /**
168
+ * The {@link scenes.LifecycleEvents} of this scene.
169
+ *
170
+ * @deprecated Use {@link lifecycleEvents} instead.
171
+ */
172
+ get LifecycleEvents(): LifecycleEvents;
173
+ /**
174
+ * Triggered at various stages of the render lifecycle with an event title and a Context2D.
175
+ *
176
+ * @eventProperty
177
+ */
178
+ get onRenderLifecycle(): SubscribableEvent<[
179
+ SceneRenderEvent,
180
+ CanvasRenderingContext2D
181
+ ]>;
182
+ /**
183
+ * Triggered when the scene is reset.
184
+ *
185
+ * @eventProperty
186
+ */
187
+ get onReset(): SubscribableEvent<void>;
188
+ /**
189
+ * The scene directly before this scene, or null if omitted for performance.
190
+ */
191
+ get previous(): Scene | null;
192
+ /**
193
+ * Whether experimental features are enabled.
194
+ */
195
+ get experimentalFeatures(): boolean;
196
+ /**
197
+ * Render the scene onto a canvas.
198
+ *
199
+ * @param context - The context to used when rendering.
200
+ */
201
+ render(context: CanvasRenderingContext2D): Promise<void>;
202
+ /**
203
+ * Reload the scene.
204
+ *
205
+ * @remarks
206
+ * This method is called whenever something related to this scene has changed:
207
+ * time events, source code, metadata, etc.
208
+ *
209
+ * Should trigger {@link onReloaded}.
210
+ *
211
+ * @param description - If present, an updated version of the description.
212
+ */
213
+ reload(description?: SceneDescriptionReload<T>): void;
214
+ /**
215
+ * Recalculate the scene.
216
+ *
217
+ * @remarks
218
+ * The task of this method is to calculate new timings stored in the cache.
219
+ * When this method is invoked, `this.project.frame` is set to the frame at
220
+ * which this scene should start ({@link firstFrame}).
221
+ *
222
+ * At the end of execution, this method should set `this.project.frame` to the
223
+ * frame at which this scene ends ({@link lastFrame}).
224
+ *
225
+ * Should trigger {@link onRecalculated}.
226
+ */
227
+ recalculate(setFrame: (frame: number) => void): Promise<void>;
228
+ /**
229
+ * Progress this scene one frame forward.
230
+ */
231
+ next(): Promise<void>;
232
+ /**
233
+ * Reset this scene to its initial state.
234
+ *
235
+ * @param previous - If present, the previous scene.
236
+ */
237
+ reset(previous?: Scene): Promise<void>;
238
+ /**
239
+ * Get the size of this scene.
240
+ *
241
+ * @remarks
242
+ * Usually returns `this.project.getSize()`.
243
+ */
244
+ getSize(): Vector2;
245
+ /**
246
+ * Get the real size of this scene.
247
+ *
248
+ * @remarks
249
+ * Returns the size of the scene multiplied by the resolution scale.
250
+ * This is the actual size of the canvas onto which the scene is rendered.
251
+ */
252
+ getRealSize(): Vector2;
253
+ /**
254
+ * Is this scene in the {@link SceneState.AfterTransitionIn} state?
255
+ */
256
+ isAfterTransitionIn(): boolean;
257
+ /**
258
+ * Is this scene in the {@link SceneState.CanTransitionOut} state?
259
+ */
260
+ canTransitionOut(): boolean;
261
+ /**
262
+ * Is this scene in the {@link SceneState.Finished} state?
263
+ */
264
+ isFinished(): boolean;
265
+ /**
266
+ * Enter the {@link SceneState.Initial} state.
267
+ */
268
+ enterInitial(): void;
269
+ /**
270
+ * Enter the {@link SceneState.AfterTransitionIn} state.
271
+ */
272
+ enterAfterTransitionIn(): void;
273
+ /**
274
+ * Enter the {@link SceneState.CanTransitionOut} state.
275
+ */
276
+ enterCanTransitionOut(): void;
277
+ /**
278
+ * Is this scene cached?
279
+ *
280
+ * @remarks
281
+ * Used only by {@link GeneratorScene}. Seeking through a project that
282
+ * contains at least one uncached scene will log a warning to the console.
283
+ *
284
+ * Should always return `true`.
285
+ */
286
+ isCached(): boolean;
287
+ /**
288
+ * Get all media assets
289
+ */
290
+ getMediaAssets(): Array<AssetInfo>;
291
+ stopAllMedia(): void;
292
+ adjustVolume(volumeScale: number): void;
293
+ /**
294
+ * Should this scene be rendered below the previous scene during a transition?
295
+ */
296
+ previousOnTop: SignalValue<boolean>;
297
+ }
298
+ //# sourceMappingURL=Scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../src/scenes/Scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Signifies the various stages of a {@link Scene}'s render lifecycle.
3
+ */
4
+ export var SceneRenderEvent;
5
+ (function (SceneRenderEvent) {
6
+ /**
7
+ * Occurs before the render starts when the Scene transitions are applied.
8
+ */
9
+ SceneRenderEvent[SceneRenderEvent["BeforeRender"] = 0] = "BeforeRender";
10
+ /**
11
+ * Occurs at the beginning of a render when the Scene's
12
+ * {@link utils.useContext} handlers are applied.
13
+ */
14
+ SceneRenderEvent[SceneRenderEvent["BeginRender"] = 1] = "BeginRender";
15
+ /**
16
+ * Occurs at the end of a render when the Scene's
17
+ * {@link utils.useContextAfter} handlers are applied.
18
+ */
19
+ SceneRenderEvent[SceneRenderEvent["FinishRender"] = 2] = "FinishRender";
20
+ /**
21
+ * Occurs after a render ends.
22
+ */
23
+ SceneRenderEvent[SceneRenderEvent["AfterRender"] = 3] = "AfterRender";
24
+ })(SceneRenderEvent || (SceneRenderEvent = {}));
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NlbmVzL1NjZW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlHQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGdCQW1CWDtBQW5CRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVFQUFZLENBQUE7SUFDWjs7O09BR0c7SUFDSCxxRUFBVyxDQUFBO0lBQ1g7OztPQUdHO0lBQ0gsdUVBQVksQ0FBQTtJQUNaOztPQUVHO0lBQ0gscUVBQVcsQ0FBQTtBQUNiLENBQUMsRUFuQlcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQW1CM0IifQ==
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Describes the state of a scene.
3
+ */
4
+ export declare enum SceneState {
5
+ /**
6
+ * The scene has just been created/reset.
7
+ */
8
+ Initial = 0,
9
+ /**
10
+ * The scene has finished transitioning in.
11
+ *
12
+ * @remarks
13
+ * Informs the Project that the previous scene is no longer necessary and can
14
+ * be disposed of.
15
+ */
16
+ AfterTransitionIn = 1,
17
+ /**
18
+ * The scene is ready to transition out.
19
+ *
20
+ * @remarks
21
+ * Informs the project that the next scene can begin.
22
+ * The {@link Scene.next} method will still be invoked until the next scene
23
+ * enters {@link AfterTransitionIn}.
24
+ */
25
+ CanTransitionOut = 2,
26
+ /**
27
+ * The scene has finished.
28
+ *
29
+ * @remarks
30
+ * Invoking {@link Scene.next} won't have any effect.
31
+ */
32
+ Finished = 3
33
+ }
34
+ //# sourceMappingURL=SceneState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneState.d.ts","sourceRoot":"","sources":["../../src/scenes/SceneState.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,UAAU;IACpB;;OAEG;IACH,OAAO,IAAA;IAEP;;;;;;OAMG;IACH,iBAAiB,IAAA;IAEjB;;;;;;;OAOG;IACH,gBAAgB,IAAA;IAEhB;;;;;OAKG;IACH,QAAQ,IAAA;CACT"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Describes the state of a scene.
3
+ */
4
+ export var SceneState;
5
+ (function (SceneState) {
6
+ /**
7
+ * The scene has just been created/reset.
8
+ */
9
+ SceneState[SceneState["Initial"] = 0] = "Initial";
10
+ /**
11
+ * The scene has finished transitioning in.
12
+ *
13
+ * @remarks
14
+ * Informs the Project that the previous scene is no longer necessary and can
15
+ * be disposed of.
16
+ */
17
+ SceneState[SceneState["AfterTransitionIn"] = 1] = "AfterTransitionIn";
18
+ /**
19
+ * The scene is ready to transition out.
20
+ *
21
+ * @remarks
22
+ * Informs the project that the next scene can begin.
23
+ * The {@link Scene.next} method will still be invoked until the next scene
24
+ * enters {@link AfterTransitionIn}.
25
+ */
26
+ SceneState[SceneState["CanTransitionOut"] = 2] = "CanTransitionOut";
27
+ /**
28
+ * The scene has finished.
29
+ *
30
+ * @remarks
31
+ * Invoking {@link Scene.next} won't have any effect.
32
+ */
33
+ SceneState[SceneState["Finished"] = 3] = "Finished";
34
+ })(SceneState || (SceneState = {}));
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NlbmVTdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2VuZXMvU2NlbmVTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFVBZ0NYO0FBaENELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILGlEQUFPLENBQUE7SUFFUDs7Ozs7O09BTUc7SUFDSCxxRUFBaUIsQ0FBQTtJQUVqQjs7Ozs7OztPQU9HO0lBQ0gsbUVBQWdCLENBQUE7SUFFaEI7Ozs7O09BS0c7SUFDSCxtREFBUSxDQUFBO0FBQ1YsQ0FBQyxFQWhDVyxVQUFVLEtBQVYsVUFBVSxRQWdDckIifQ==
@@ -0,0 +1,63 @@
1
+ import type { SharedWebGLContext, WebGLContextOwner } from '../app/SharedWebGLContext';
2
+ import type { Scene } from './Scene';
3
+ /**
4
+ * @internal
5
+ */
6
+ export declare const UNIFORM_RESOLUTION = "resolution";
7
+ /**
8
+ * @internal
9
+ */
10
+ export declare const UNIFORM_DESTINATION_TEXTURE = "destinationTexture";
11
+ /**
12
+ * @internal
13
+ */
14
+ export declare const UNIFORM_SOURCE_TEXTURE = "sourceTexture";
15
+ /**
16
+ * @internal
17
+ */
18
+ export declare const UNIFORM_TIME = "time";
19
+ /**
20
+ * @internal
21
+ */
22
+ export declare const UNIFORM_DELTA_TIME = "deltaTime";
23
+ /**
24
+ * @internal
25
+ */
26
+ export declare const UNIFORM_FRAMERATE = "framerate";
27
+ /**
28
+ * @internal
29
+ */
30
+ export declare const UNIFORM_FRAME = "frame";
31
+ /**
32
+ * @internal
33
+ */
34
+ export declare const UNIFORM_SOURCE_MATRIX = "sourceMatrix";
35
+ /**
36
+ * @internal
37
+ */
38
+ export declare const UNIFORM_DESTINATION_MATRIX = "destinationMatrix";
39
+ /**
40
+ * @internal
41
+ */
42
+ export declare class Shaders implements WebGLContextOwner {
43
+ private readonly scene;
44
+ private readonly sharedContext;
45
+ private gl;
46
+ private positionBuffer;
47
+ private sourceTexture;
48
+ private destinationTexture;
49
+ private positionLocation;
50
+ private readonly quadPositions;
51
+ constructor(scene: Scene, sharedContext: SharedWebGLContext);
52
+ setup(gl: WebGL2RenderingContext): void;
53
+ teardown(gl: WebGL2RenderingContext): void;
54
+ private handleReload;
55
+ private updateViewport;
56
+ getGL(): WebGL2RenderingContext;
57
+ getProgram(fragment: string): WebGLProgram | null;
58
+ copyTextures(destination: TexImageSource, source: TexImageSource): void;
59
+ clear(): void;
60
+ render(): void;
61
+ private copyTexture;
62
+ }
63
+ //# sourceMappingURL=Shaders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Shaders.d.ts","sourceRoot":"","sources":["../../src/scenes/Shaders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C;;GAEG;AACH,eAAO,MAAM,2BAA2B,uBAAuB,CAAC;AAChE;;GAEG;AACH,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD;;GAEG;AACH,eAAO,MAAM,YAAY,SAAS,CAAC;AACnC;;GAEG;AACH,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C;;GAEG;AACH,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C;;GAEG;AACH,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC;;GAEG;AACH,eAAO,MAAM,qBAAqB,iBAAiB,CAAC;AACpD;;GAEG;AACH,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AA2B9D;;GAEG;AACH,qBAAa,OAAQ,YAAW,iBAAiB;IAW7C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAXhC,OAAO,CAAC,EAAE,CAAuC;IACjD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE3B;gBAGgB,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,kBAAkB;IAK7C,KAAK,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAsBvC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI;IAWjD,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,cAAc;IASf,KAAK;IAIL,UAAU,CAAC,QAAQ,EAAE,MAAM;IA+B3B,YAAY,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc;IAKhE,KAAK;IAML,MAAM;IAKb,OAAO,CAAC,WAAW;CAMpB"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * @internal
3
+ */
4
+ export const UNIFORM_RESOLUTION = 'resolution';
5
+ /**
6
+ * @internal
7
+ */
8
+ export const UNIFORM_DESTINATION_TEXTURE = 'destinationTexture';
9
+ /**
10
+ * @internal
11
+ */
12
+ export const UNIFORM_SOURCE_TEXTURE = 'sourceTexture';
13
+ /**
14
+ * @internal
15
+ */
16
+ export const UNIFORM_TIME = 'time';
17
+ /**
18
+ * @internal
19
+ */
20
+ export const UNIFORM_DELTA_TIME = 'deltaTime';
21
+ /**
22
+ * @internal
23
+ */
24
+ export const UNIFORM_FRAMERATE = 'framerate';
25
+ /**
26
+ * @internal
27
+ */
28
+ export const UNIFORM_FRAME = 'frame';
29
+ /**
30
+ * @internal
31
+ */
32
+ export const UNIFORM_SOURCE_MATRIX = 'sourceMatrix';
33
+ /**
34
+ * @internal
35
+ */
36
+ export const UNIFORM_DESTINATION_MATRIX = 'destinationMatrix';
37
+ // language=glsl
38
+ const FragmentShader = `\
39
+ #version 300 es
40
+
41
+ in vec2 position;
42
+
43
+ out vec2 screenUV;
44
+ out vec2 sourceUV;
45
+ out vec2 destinationUV;
46
+
47
+ uniform mat4 sourceMatrix;
48
+ uniform mat4 destinationMatrix;
49
+
50
+ void main() {
51
+ vec2 position_source = position * 0.5 + 0.5;
52
+ vec4 position_screen = sourceMatrix * vec4(position_source, 0, 1);
53
+
54
+ screenUV = position_screen.xy;
55
+ sourceUV = position_source;
56
+ destinationUV = (destinationMatrix * position_screen).xy;
57
+
58
+ gl_Position = (position_screen - 0.5) * 2.0;
59
+ }
60
+ `;
61
+ /**
62
+ * @internal
63
+ */
64
+ export class Shaders {
65
+ constructor(scene, sharedContext) {
66
+ this.scene = scene;
67
+ this.sharedContext = sharedContext;
68
+ this.gl = null;
69
+ this.positionBuffer = null;
70
+ this.sourceTexture = null;
71
+ this.destinationTexture = null;
72
+ this.positionLocation = 0;
73
+ this.quadPositions = new Float32Array([
74
+ -1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, -1.0,
75
+ ]);
76
+ this.handleReload = () => {
77
+ if (this.gl) {
78
+ this.updateViewport();
79
+ }
80
+ };
81
+ scene.onReloaded.subscribe(this.handleReload);
82
+ }
83
+ setup(gl) {
84
+ this.gl = gl;
85
+ this.updateViewport();
86
+ this.positionBuffer = gl.createBuffer();
87
+ gl.bindBuffer(gl.ARRAY_BUFFER, this.positionBuffer);
88
+ gl.bufferData(gl.ARRAY_BUFFER, this.quadPositions, gl.STATIC_DRAW);
89
+ gl.vertexAttribPointer(this.positionLocation, 2, gl.FLOAT, false, 0, 0);
90
+ gl.enableVertexAttribArray(this.positionLocation);
91
+ this.sourceTexture = gl.createTexture();
92
+ gl.activeTexture(gl.TEXTURE0);
93
+ gl.bindTexture(gl.TEXTURE_2D, this.sourceTexture);
94
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
95
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
96
+ this.destinationTexture = gl.createTexture();
97
+ gl.activeTexture(gl.TEXTURE1);
98
+ gl.bindTexture(gl.TEXTURE_2D, this.destinationTexture);
99
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
100
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
101
+ }
102
+ teardown(gl) {
103
+ gl.deleteBuffer(this.positionBuffer);
104
+ gl.disableVertexAttribArray(this.positionLocation);
105
+ gl.deleteTexture(this.sourceTexture);
106
+ gl.deleteTexture(this.destinationTexture);
107
+ this.positionBuffer = null;
108
+ this.sourceTexture = null;
109
+ this.destinationTexture = null;
110
+ this.gl = null;
111
+ }
112
+ updateViewport() {
113
+ if (this.gl) {
114
+ const size = this.scene.getRealSize();
115
+ this.gl.canvas.width = size.width;
116
+ this.gl.canvas.height = size.height;
117
+ this.gl.viewport(0, 0, size.width, size.height);
118
+ }
119
+ }
120
+ getGL() {
121
+ return this.gl ?? this.sharedContext.borrow(this);
122
+ }
123
+ getProgram(fragment) {
124
+ const program = this.sharedContext.getProgram(fragment, FragmentShader);
125
+ if (!program) {
126
+ return null;
127
+ }
128
+ const size = this.scene.getRealSize();
129
+ const gl = this.getGL();
130
+ gl.useProgram(program);
131
+ gl.uniform1i(gl.getUniformLocation(program, UNIFORM_SOURCE_TEXTURE), 0);
132
+ gl.uniform1i(gl.getUniformLocation(program, UNIFORM_DESTINATION_TEXTURE), 1);
133
+ gl.uniform2f(gl.getUniformLocation(program, UNIFORM_RESOLUTION), size.x, size.y);
134
+ gl.uniform1f(gl.getUniformLocation(program, UNIFORM_DELTA_TIME), this.scene.playback.deltaTime);
135
+ gl.uniform1f(gl.getUniformLocation(program, UNIFORM_FRAMERATE), this.scene.playback.fps);
136
+ return program;
137
+ }
138
+ copyTextures(destination, source) {
139
+ this.copyTexture(source, this.sourceTexture);
140
+ this.copyTexture(destination, this.destinationTexture);
141
+ }
142
+ clear() {
143
+ const gl = this.getGL();
144
+ gl.clearColor(0, 0, 0, 0);
145
+ gl.clear(gl.COLOR_BUFFER_BIT);
146
+ }
147
+ render() {
148
+ const gl = this.getGL();
149
+ gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
150
+ }
151
+ copyTexture(source, texture) {
152
+ const gl = this.getGL();
153
+ gl.bindTexture(gl.TEXTURE_2D, texture);
154
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, source);
155
+ gl.generateMipmap(gl.TEXTURE_2D);
156
+ }
157
+ }
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2VuZXMvU2hhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFlBQVksQ0FBQztBQUMvQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLG9CQUFvQixDQUFDO0FBQ2hFOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsZUFBZSxDQUFDO0FBQ3REOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUNuQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFdBQVcsQ0FBQztBQUM5Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztBQUM3Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUM7QUFDckM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFDcEQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxtQkFBbUIsQ0FBQztBQUU5RCxnQkFBZ0I7QUFDaEIsTUFBTSxjQUFjLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQnRCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBVWxCLFlBQ21CLEtBQVksRUFDWixhQUFpQztRQURqQyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osa0JBQWEsR0FBYixhQUFhLENBQW9CO1FBWDVDLE9BQUUsR0FBa0MsSUFBSSxDQUFDO1FBQ3pDLG1CQUFjLEdBQXVCLElBQUksQ0FBQztRQUMxQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsdUJBQWtCLEdBQXdCLElBQUksQ0FBQztRQUMvQyxxQkFB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
@@ -0,0 +1,33 @@
1
+ import type { Scene } from './Scene';
2
+ export interface Slide {
3
+ id: string;
4
+ name: string;
5
+ time: number;
6
+ scene: Scene;
7
+ stack?: string;
8
+ }
9
+ export declare class Slides {
10
+ private readonly scene;
11
+ get onChanged(): import("../events").SubscribableValueEvent<Slide[]>;
12
+ private readonly slides;
13
+ private readonly lookup;
14
+ private readonly collisionLookup;
15
+ private current;
16
+ private canResume;
17
+ private waitsForId;
18
+ private targetId;
19
+ constructor(scene: Scene);
20
+ setTarget(target: string | null): void;
21
+ resume(): void;
22
+ isWaitingFor(slide: string): boolean;
23
+ isWaiting(): boolean;
24
+ didHappen(slide: string): boolean;
25
+ getCurrent(): Slide | null;
26
+ register(name: string, initialTime: number): void;
27
+ shouldWait(name: string): boolean;
28
+ private handleReload;
29
+ private handleReset;
30
+ private handleRecalculated;
31
+ private toId;
32
+ }
33
+ //# sourceMappingURL=Slides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Slides.d.ts","sourceRoot":"","sources":["../../src/scenes/Slides.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAEnC,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IAaE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAZzC,IAAW,SAAS,wDAEnB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAE3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IACrD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAuB;gBAEH,KAAK,EAAE,KAAK;IAMzC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,MAAM;IAIN,YAAY,CAAC,KAAK,EAAE,MAAM;IAI1B,SAAS;IAIT,SAAS,CAAC,KAAK,EAAE,MAAM;IAiBvB,UAAU;IAIV,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAkC1C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAuBxC,OAAO,CAAC,YAAY,CAMlB;IAEF,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO,CAAC,kBAAkB,CAExB;IAEF,OAAO,CAAC,IAAI;CAGb"}