@luma.gl/engine 8.5.8 → 8.6.0-alpha.2

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 (270) hide show
  1. package/dist/animation/key-frames.d.ts +18 -0
  2. package/dist/animation/key-frames.d.ts.map +1 -0
  3. package/dist/{esm/animation → animation}/key-frames.js +13 -6
  4. package/dist/animation/key-frames.js.map +1 -0
  5. package/dist/animation/timeline.d.ts +51 -0
  6. package/dist/animation/timeline.d.ts.map +1 -0
  7. package/dist/{esm/animation → animation}/timeline.js +10 -5
  8. package/dist/animation/timeline.js.map +1 -0
  9. package/dist/bundle.d.ts +2 -0
  10. package/dist/bundle.d.ts.map +1 -0
  11. package/dist/bundle.js +5 -0
  12. package/dist/bundle.js.map +1 -0
  13. package/dist/geometries/cone-geometry.d.ts +10 -0
  14. package/dist/geometries/cone-geometry.d.ts.map +1 -0
  15. package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
  16. package/dist/geometries/cone-geometry.js.map +1 -0
  17. package/dist/geometries/cube-geometry.d.ts +9 -0
  18. package/dist/geometries/cube-geometry.d.ts.map +1 -0
  19. package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
  20. package/dist/geometries/cube-geometry.js.map +1 -0
  21. package/dist/geometries/cylinder-geometry.d.ts +10 -0
  22. package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
  23. package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
  24. package/dist/geometries/cylinder-geometry.js.map +1 -0
  25. package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
  26. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
  27. package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
  28. package/dist/geometries/ico-sphere-geometry.js.map +1 -0
  29. package/dist/geometries/plane-geometry.d.ts +10 -0
  30. package/dist/geometries/plane-geometry.d.ts.map +1 -0
  31. package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
  32. package/dist/geometries/plane-geometry.js.map +1 -0
  33. package/dist/geometries/sphere-geometry.d.ts +12 -0
  34. package/dist/geometries/sphere-geometry.d.ts.map +1 -0
  35. package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
  36. package/dist/geometries/sphere-geometry.js.map +1 -0
  37. package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
  38. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
  39. package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
  40. package/dist/geometries/truncated-cone-geometry.js.map +1 -0
  41. package/dist/geometry/geometry-utils.d.ts +2 -0
  42. package/dist/geometry/geometry-utils.d.ts.map +1 -0
  43. package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
  44. package/dist/geometry/geometry-utils.js.map +1 -0
  45. package/dist/geometry/geometry.d.ts +44 -0
  46. package/dist/geometry/geometry.d.ts.map +1 -0
  47. package/dist/{esm/geometry → geometry}/geometry.js +28 -19
  48. package/dist/geometry/geometry.js.map +1 -0
  49. package/dist/index.d.ts +26 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +17 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/animation-loop.d.ts +149 -0
  54. package/dist/lib/animation-loop.d.ts.map +1 -0
  55. package/dist/{esm/lib → lib}/animation-loop.js +190 -143
  56. package/dist/lib/animation-loop.js.map +1 -0
  57. package/dist/lib/model-utils.d.ts +4 -0
  58. package/dist/lib/model-utils.d.ts.map +1 -0
  59. package/dist/{esm/lib → lib}/model-utils.js +3 -2
  60. package/dist/lib/model-utils.js.map +1 -0
  61. package/dist/lib/model.d.ts +109 -0
  62. package/dist/lib/model.d.ts.map +1 -0
  63. package/dist/{esm/lib → lib}/model.js +76 -20
  64. package/dist/lib/model.js.map +1 -0
  65. package/dist/lib/program-manager.d.ts +39 -0
  66. package/dist/lib/program-manager.d.ts.map +1 -0
  67. package/dist/{esm/lib → lib}/program-manager.js +29 -18
  68. package/dist/lib/program-manager.js.map +1 -0
  69. package/dist/lib/render-loop.d.ts +27 -0
  70. package/dist/lib/render-loop.d.ts.map +1 -0
  71. package/dist/lib/render-loop.js +56 -0
  72. package/dist/lib/render-loop.js.map +1 -0
  73. package/dist/transform/buffer-transform.d.ts +36 -0
  74. package/dist/transform/buffer-transform.d.ts.map +1 -0
  75. package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
  76. package/dist/transform/buffer-transform.js.map +1 -0
  77. package/dist/transform/texture-transform.d.ts +57 -0
  78. package/dist/transform/texture-transform.d.ts.map +1 -0
  79. package/dist/{esm/transform → transform}/texture-transform.js +48 -16
  80. package/dist/transform/texture-transform.js.map +1 -0
  81. package/dist/transform/transform-shader-utils.d.ts +26 -0
  82. package/dist/transform/transform-shader-utils.d.ts.map +1 -0
  83. package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
  84. package/dist/transform/transform-shader-utils.js.map +1 -0
  85. package/dist/transform/transform-types.d.ts +44 -0
  86. package/dist/transform/transform-types.d.ts.map +1 -0
  87. package/dist/transform/transform-types.js +2 -0
  88. package/dist/transform/transform-types.js.map +1 -0
  89. package/dist/transform/transform.d.ts +47 -0
  90. package/dist/transform/transform.d.ts.map +1 -0
  91. package/dist/{esm/transform → transform}/transform.js +63 -43
  92. package/dist/transform/transform.js.map +1 -0
  93. package/dist/utils/clip-space.d.ts +5 -0
  94. package/dist/utils/clip-space.d.ts.map +1 -0
  95. package/dist/{esm/utils → utils}/clip-space.js +3 -17
  96. package/dist/utils/clip-space.js.map +1 -0
  97. package/package.json +11 -11
  98. package/src/animation/{key-frames.js → key-frames.ts} +18 -16
  99. package/src/animation/{timeline.js → timeline.ts} +54 -18
  100. package/src/bundle.ts +4 -0
  101. package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
  102. package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
  103. package/src/geometries/cylinder-geometry.ts +20 -0
  104. package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
  105. package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
  106. package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
  107. package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
  108. package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
  109. package/src/geometry/{geometry.js → geometry.ts} +47 -34
  110. package/src/index.ts +35 -0
  111. package/src/lib/animation-loop.ts +724 -0
  112. package/src/lib/{model-utils.js → model-utils.ts} +2 -2
  113. package/src/lib/{model.js → model.ts} +184 -66
  114. package/src/lib/{program-manager.js → program-manager.ts} +53 -34
  115. package/src/lib/render-loop.ts +56 -0
  116. package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
  117. package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
  118. package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
  119. package/src/transform/transform-types.ts +42 -0
  120. package/src/transform/transform.ts +189 -0
  121. package/src/utils/{clip-space.js → clip-space.ts} +4 -3
  122. package/dist/dist.js +0 -32403
  123. package/dist/dist.min.js +0 -1
  124. package/dist/es5/animation/key-frames.d.ts +0 -19
  125. package/dist/es5/animation/key-frames.js +0 -95
  126. package/dist/es5/animation/key-frames.js.map +0 -1
  127. package/dist/es5/animation/timeline.d.ts +0 -39
  128. package/dist/es5/animation/timeline.js +0 -211
  129. package/dist/es5/animation/timeline.js.map +0 -1
  130. package/dist/es5/bundle.js +0 -9
  131. package/dist/es5/bundle.js.map +0 -1
  132. package/dist/es5/geometries/cone-geometry.d.ts +0 -5
  133. package/dist/es5/geometries/cone-geometry.js +0 -59
  134. package/dist/es5/geometries/cone-geometry.js.map +0 -1
  135. package/dist/es5/geometries/cube-geometry.d.ts +0 -5
  136. package/dist/es5/geometries/cube-geometry.js +0 -75
  137. package/dist/es5/geometries/cube-geometry.js.map +0 -1
  138. package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
  139. package/dist/es5/geometries/cylinder-geometry.js +0 -55
  140. package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
  141. package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
  142. package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
  143. package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
  144. package/dist/es5/geometries/index.d.ts +0 -7
  145. package/dist/es5/geometries/index.js +0 -64
  146. package/dist/es5/geometries/index.js.map +0 -1
  147. package/dist/es5/geometries/plane-geometry.d.ts +0 -5
  148. package/dist/es5/geometries/plane-geometry.js +0 -168
  149. package/dist/es5/geometries/plane-geometry.js.map +0 -1
  150. package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
  151. package/dist/es5/geometries/sphere-geometry.js +0 -152
  152. package/dist/es5/geometries/sphere-geometry.js.map +0 -1
  153. package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
  154. package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
  155. package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
  156. package/dist/es5/geometry/geometry-utils.d.ts +0 -1
  157. package/dist/es5/geometry/geometry-utils.js +0 -49
  158. package/dist/es5/geometry/geometry-utils.js.map +0 -1
  159. package/dist/es5/geometry/geometry.d.ts +0 -25
  160. package/dist/es5/geometry/geometry.js +0 -150
  161. package/dist/es5/geometry/geometry.js.map +0 -1
  162. package/dist/es5/index.d.ts +0 -19
  163. package/dist/es5/index.js +0 -128
  164. package/dist/es5/index.js.map +0 -1
  165. package/dist/es5/lib/animation-loop.d.ts +0 -158
  166. package/dist/es5/lib/animation-loop.js +0 -642
  167. package/dist/es5/lib/animation-loop.js.map +0 -1
  168. package/dist/es5/lib/model-utils.d.ts +0 -3
  169. package/dist/es5/lib/model-utils.js +0 -110
  170. package/dist/es5/lib/model-utils.js.map +0 -1
  171. package/dist/es5/lib/model.d.ts +0 -214
  172. package/dist/es5/lib/model.js +0 -584
  173. package/dist/es5/lib/model.js.map +0 -1
  174. package/dist/es5/lib/program-manager.d.ts +0 -79
  175. package/dist/es5/lib/program-manager.js +0 -238
  176. package/dist/es5/lib/program-manager.js.map +0 -1
  177. package/dist/es5/transform/buffer-transform.d.ts +0 -13
  178. package/dist/es5/transform/buffer-transform.js +0 -294
  179. package/dist/es5/transform/buffer-transform.js.map +0 -1
  180. package/dist/es5/transform/resource-transform.d.ts +0 -16
  181. package/dist/es5/transform/texture-transform.d.ts +0 -16
  182. package/dist/es5/transform/texture-transform.js +0 -405
  183. package/dist/es5/transform/texture-transform.js.map +0 -1
  184. package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
  185. package/dist/es5/transform/transform-shader-utils.js +0 -160
  186. package/dist/es5/transform/transform-shader-utils.js.map +0 -1
  187. package/dist/es5/transform/transform.d.ts +0 -33
  188. package/dist/es5/transform/transform.js +0 -274
  189. package/dist/es5/transform/transform.js.map +0 -1
  190. package/dist/es5/utils/clip-space.d.ts +0 -5
  191. package/dist/es5/utils/clip-space.js +0 -72
  192. package/dist/es5/utils/clip-space.js.map +0 -1
  193. package/dist/esm/animation/key-frames.d.ts +0 -19
  194. package/dist/esm/animation/key-frames.js.map +0 -1
  195. package/dist/esm/animation/timeline.d.ts +0 -39
  196. package/dist/esm/animation/timeline.js.map +0 -1
  197. package/dist/esm/bundle.js +0 -7
  198. package/dist/esm/bundle.js.map +0 -1
  199. package/dist/esm/geometries/cone-geometry.d.ts +0 -5
  200. package/dist/esm/geometries/cone-geometry.js.map +0 -1
  201. package/dist/esm/geometries/cube-geometry.d.ts +0 -5
  202. package/dist/esm/geometries/cube-geometry.js.map +0 -1
  203. package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
  204. package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
  205. package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
  206. package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
  207. package/dist/esm/geometries/index.d.ts +0 -7
  208. package/dist/esm/geometries/index.js +0 -8
  209. package/dist/esm/geometries/index.js.map +0 -1
  210. package/dist/esm/geometries/plane-geometry.d.ts +0 -5
  211. package/dist/esm/geometries/plane-geometry.js.map +0 -1
  212. package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
  213. package/dist/esm/geometries/sphere-geometry.js.map +0 -1
  214. package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
  215. package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
  216. package/dist/esm/geometry/geometry-utils.d.ts +0 -1
  217. package/dist/esm/geometry/geometry-utils.js.map +0 -1
  218. package/dist/esm/geometry/geometry.d.ts +0 -25
  219. package/dist/esm/geometry/geometry.js.map +0 -1
  220. package/dist/esm/index.d.ts +0 -19
  221. package/dist/esm/index.js +0 -16
  222. package/dist/esm/index.js.map +0 -1
  223. package/dist/esm/lib/animation-loop.d.ts +0 -158
  224. package/dist/esm/lib/animation-loop.js.map +0 -1
  225. package/dist/esm/lib/model-utils.d.ts +0 -3
  226. package/dist/esm/lib/model-utils.js.map +0 -1
  227. package/dist/esm/lib/model.d.ts +0 -214
  228. package/dist/esm/lib/model.js.map +0 -1
  229. package/dist/esm/lib/program-manager.d.ts +0 -79
  230. package/dist/esm/lib/program-manager.js.map +0 -1
  231. package/dist/esm/transform/buffer-transform.d.ts +0 -13
  232. package/dist/esm/transform/buffer-transform.js.map +0 -1
  233. package/dist/esm/transform/resource-transform.d.ts +0 -16
  234. package/dist/esm/transform/texture-transform.d.ts +0 -16
  235. package/dist/esm/transform/texture-transform.js.map +0 -1
  236. package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
  237. package/dist/esm/transform/transform-shader-utils.js.map +0 -1
  238. package/dist/esm/transform/transform.d.ts +0 -33
  239. package/dist/esm/transform/transform.js.map +0 -1
  240. package/dist/esm/utils/clip-space.d.ts +0 -5
  241. package/dist/esm/utils/clip-space.js.map +0 -1
  242. package/src/animation/key-frames.d.ts +0 -19
  243. package/src/animation/timeline.d.ts +0 -39
  244. package/src/bundle.js +0 -7
  245. package/src/geometries/cone-geometry.d.ts +0 -5
  246. package/src/geometries/cube-geometry.d.ts +0 -5
  247. package/src/geometries/cylinder-geometry.d.ts +0 -5
  248. package/src/geometries/cylinder-geometry.js +0 -14
  249. package/src/geometries/ico-sphere-geometry.d.ts +0 -5
  250. package/src/geometries/index.d.ts +0 -7
  251. package/src/geometries/index.js +0 -7
  252. package/src/geometries/plane-geometry.d.ts +0 -5
  253. package/src/geometries/sphere-geometry.d.ts +0 -5
  254. package/src/geometries/truncated-cone-geometry.d.ts +0 -5
  255. package/src/geometry/geometry-utils.d.ts +0 -1
  256. package/src/geometry/geometry.d.ts +0 -25
  257. package/src/index.d.ts +0 -19
  258. package/src/index.js +0 -22
  259. package/src/lib/animation-loop.d.ts +0 -158
  260. package/src/lib/animation-loop.js +0 -601
  261. package/src/lib/model-utils.d.ts +0 -3
  262. package/src/lib/model.d.ts +0 -214
  263. package/src/lib/program-manager.d.ts +0 -79
  264. package/src/transform/buffer-transform.d.ts +0 -13
  265. package/src/transform/resource-transform.d.ts +0 -16
  266. package/src/transform/texture-transform.d.ts +0 -16
  267. package/src/transform/transform-shader-utils.d.ts +0 -31
  268. package/src/transform/transform.d.ts +0 -33
  269. package/src/transform/transform.js +0 -177
  270. package/src/utils/clip-space.d.ts +0 -5
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/animation-loop.js"],"names":["isPage","document","statIdCounter","AnimationLoop","props","onCreateContext","opts","onAddHTML","onInitialize","onRender","onFinalize","onError","gl","glOptions","debug","createFramebuffer","autoResizeViewport","autoResizeDrawingBuffer","stats","lumaStats","get","useDevicePixels","log","deprecated","useDevicePixelRatio","needsRedraw","timeline","cpuTime","gpuTime","frameRate","_initialized","_running","_animationFrameId","_nextFramePromise","_resolveNextFrame","_cpuStartTime","setProps","start","bind","stop","_pageLoadPromise","_onMousemove","_onMouseleave","_setDisplay","reason","startPromise","_getPageLoadPromise","then","_createWebGLContext","_createFramebuffer","_startEventHandling","_initializeCallbackData","_updateCallbackData","_resizeCanvasDrawingBuffer","_resizeViewport","_gpuTimeQuery","Query","isSupported","animationProps","appContext","_addCallbackData","_startLoop","catch","isContextLost","_beginTimers","_setupFrame","_renderFrame","_clearNeedsRedraw","offScreen","commit","_endTimers","_finalizeCallbackData","_cancelAnimationFrame","setNeedsRedraw","Promise","resolve","waitForRender","canvas","toDataURL","id","defaultValue","element","getElementById","Number","value","removed","renderFrame","redraw","_requestAnimationFrame","reject","readyState","window","addEventListener","display","delete","animationLoop","animationFrameId","cancelAnimationFrame","renderFrameCallback","requestAnimationFrame","undefined","_resizeFramebuffer","framebuffer","startTime","Date","now","engineTime","tick","tock","time","_timeline","_loop","_animationLoop","_mousePosition","_getSizeAndAspect","width","height","aspect","update","Math","floor","getTime","_offScreen","Object","assign","OffscreenCanvas","Error","_createInfoDiv","wrapperDiv","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","drawingBufferWidth","drawingBufferHeight","clientHeight","clientWidth","viewport","Framebuffer","resize","timeEnd","timeStart","isResultAvailable","isTimerDisjoint","addTime","getTimerMilliseconds","beginTimeElapsedQuery","end","e","offsetX","offsetY"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AAQA;;AAWA;;AAEA,IAAMA,MAAM,GAAG,yBAAe,OAAOC,QAAP,KAAoB,WAAlD;AAEA,IAAIC,aAAa,GAAG,CAApB;;IAEqBC,a;AAInB,2BAAwB;AAAA,QAAZC,KAAY,uEAAJ,EAAI;AAAA;AAAA,gCAmBlBA,KAnBkB,CAEpBC,eAFoB;AAAA,QAEpBA,eAFoB,sCAEF,UAAAC,IAAI;AAAA,aAAI,8BAAgBA,IAAhB,CAAJ;AAAA,KAFF;AAAA,2BAmBlBF,KAnBkB,CAGpBG,SAHoB;AAAA,QAGpBA,SAHoB,iCAGR,IAHQ;AAAA,8BAmBlBH,KAnBkB,CAIpBI,YAJoB;AAAA,QAIpBA,YAJoB,oCAIL,YAAM,CAAE,CAJH;AAAA,0BAmBlBJ,KAnBkB,CAKpBK,QALoB;AAAA,QAKpBA,QALoB,gCAKT,YAAM,CAAE,CALC;AAAA,4BAmBlBL,KAnBkB,CAMpBM,UANoB;AAAA,QAMpBA,UANoB,kCAMP,YAAM,CAAE,CAND;AAAA,QAOpBC,OAPoB,GAmBlBP,KAnBkB,CAOpBO,OAPoB;AAAA,oBAmBlBP,KAnBkB,CASpBQ,EAToB;AAAA,QASpBA,EAToB,0BASf,IATe;AAAA,2BAmBlBR,KAnBkB,CAUpBS,SAVoB;AAAA,QAUpBA,SAVoB,iCAUR,EAVQ;AAAA,uBAmBlBT,KAnBkB,CAWpBU,KAXoB;AAAA,QAWpBA,KAXoB,6BAWZ,KAXY;AAAA,gCAmBlBV,KAnBkB,CAapBW,iBAboB;AAAA,QAapBA,iBAboB,sCAaA,KAbA;AAAA,gCAmBlBX,KAnBkB,CAgBpBY,kBAhBoB;AAAA,QAgBpBA,kBAhBoB,sCAgBC,IAhBD;AAAA,gCAmBlBZ,KAnBkB,CAiBpBa,uBAjBoB;AAAA,QAiBpBA,uBAjBoB,sCAiBM,IAjBN;AAAA,uBAmBlBb,KAnBkB,CAkBpBc,KAlBoB;AAAA,QAkBpBA,KAlBoB,6BAkBZC,iBAAUC,GAAV,0BAAgClB,aAAa,EAA7C,EAlBY;AAAA,gCAqBSE,KArBT,CAqBjBiB,eArBiB;AAAA,QAqBjBA,eArBiB,sCAqBC,IArBD;;AAuBtB,QAAI,yBAAyBjB,KAA7B,EAAoC;AAClCkB,iBAAIC,UAAJ,CAAe,qBAAf,EAAsC,iBAAtC;;AAEAF,MAAAA,eAAe,GAAGjB,KAAK,CAACoB,mBAAxB;AACD;;AAED,SAAKpB,KAAL,GAAa;AACXC,MAAAA,eAAe,EAAfA,eADW;AAEXE,MAAAA,SAAS,EAATA,SAFW;AAGXC,MAAAA,YAAY,EAAZA,YAHW;AAIXC,MAAAA,QAAQ,EAARA,QAJW;AAKXC,MAAAA,UAAU,EAAVA,UALW;AAMXC,MAAAA,OAAO,EAAPA,OANW;AAQXC,MAAAA,EAAE,EAAFA,EARW;AASXC,MAAAA,SAAS,EAATA,SATW;AAUXC,MAAAA,KAAK,EAALA,KAVW;AAWXC,MAAAA,iBAAiB,EAAjBA;AAXW,KAAb;AAeA,SAAKH,EAAL,GAAUA,EAAV;AACA,SAAKa,WAAL,GAAmB,IAAnB;AACA,SAAKC,QAAL,GAAgB,IAAhB;AACA,SAAKR,KAAL,GAAaA,KAAb;AACA,SAAKS,OAAL,GAAe,KAAKT,KAAL,CAAWE,GAAX,CAAe,UAAf,CAAf;AACA,SAAKQ,OAAL,GAAe,KAAKV,KAAL,CAAWE,GAAX,CAAe,UAAf,CAAf;AACA,SAAKS,SAAL,GAAiB,KAAKX,KAAL,CAAWE,GAAX,CAAe,YAAf,CAAjB;AAEA,SAAKU,YAAL,GAAoB,KAApB;AACA,SAAKC,QAAL,GAAgB,KAAhB;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AACA,SAAKC,aAAL,GAAqB,CAArB;AAEA,SAAKC,QAAL,CAAc;AACZpB,MAAAA,kBAAkB,EAAlBA,kBADY;AAEZC,MAAAA,uBAAuB,EAAvBA,uBAFY;AAGZI,MAAAA,eAAe,EAAfA;AAHY,KAAd;AAOA,SAAKgB,KAAL,GAAa,KAAKA,KAAL,CAAWC,IAAX,CAAgB,IAAhB,CAAb;AACA,SAAKC,IAAL,GAAY,KAAKA,IAAL,CAAUD,IAAV,CAAe,IAAf,CAAZ;AAEA,SAAKE,gBAAL,GAAwB,IAAxB;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBH,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKI,aAAL,GAAqB,KAAKA,aAAL,CAAmBJ,IAAnB,CAAwB,IAAxB,CAArB;AACD;;;;8BAEQ;AACP,WAAKC,IAAL;;AACA,WAAKI,WAAL,CAAiB,IAAjB;AACD;;;mCAEcC,M,EAAQ;AACrB,yBAAO,OAAOA,MAAP,KAAkB,QAAzB;AACA,WAAKnB,WAAL,GAAmB,KAAKA,WAAL,IAAoBmB,MAAvC;AACA,aAAO,IAAP;AACD;;;6BAEQxC,K,EAAO;AACd,UAAI,wBAAwBA,KAA5B,EAAmC;AACjC,aAAKY,kBAAL,GAA0BZ,KAAK,CAACY,kBAAhC;AACD;;AACD,UAAI,6BAA6BZ,KAAjC,EAAwC;AACtC,aAAKa,uBAAL,GAA+Bb,KAAK,CAACa,uBAArC;AACD;;AACD,UAAI,qBAAqBb,KAAzB,EAAgC;AAC9B,aAAKiB,eAAL,GAAuBjB,KAAK,CAACiB,eAA7B;AACD;;AACD,aAAO,IAAP;AACD;;;4BAIgB;AAAA;;AAAA,UAAXf,IAAW,uEAAJ,EAAI;;AACf,UAAI,KAAKyB,QAAT,EAAmB;AACjB,eAAO,IAAP;AACD;;AACD,WAAKA,QAAL,GAAgB,IAAhB;;AAGA,UAAMc,YAAY,GAAG,KAAKC,mBAAL,GAClBC,IADkB,CACb,YAAM;AACV,YAAI,CAAC,KAAI,CAAChB,QAAN,IAAkB,KAAI,CAACD,YAA3B,EAAyC;AACvC,iBAAO,IAAP;AACD;;AAGD,QAAA,KAAI,CAACkB,mBAAL,CAAyB1C,IAAzB;;AACA,QAAA,KAAI,CAAC2C,kBAAL;;AACA,QAAA,KAAI,CAACC,mBAAL;;AAGA,QAAA,KAAI,CAACC,uBAAL;;AACA,QAAA,KAAI,CAACC,mBAAL;;AAGA,QAAA,KAAI,CAACC,0BAAL;;AACA,QAAA,KAAI,CAACC,eAAL;;AAEA,QAAA,KAAI,CAACC,aAAL,GAAqBC,aAAMC,WAAN,CAAkB,KAAI,CAAC7C,EAAvB,EAA2B,CAAC,QAAD,CAA3B,IAAyC,IAAI4C,YAAJ,CAAU,KAAI,CAAC5C,EAAf,CAAzC,GAA8D,IAAnF;AAEA,QAAA,KAAI,CAACkB,YAAL,GAAoB,IAApB;AAGA,eAAO,KAAI,CAACtB,YAAL,CAAkB,KAAI,CAACkD,cAAvB,CAAP;AACD,OAzBkB,EA0BlBX,IA1BkB,CA0Bb,UAAAY,UAAU,EAAI;AAClB,YAAI,KAAI,CAAC5B,QAAT,EAAmB;AACjB,UAAA,KAAI,CAAC6B,gBAAL,CAAsBD,UAAU,IAAI,EAApC;;AACA,cAAIA,UAAU,KAAK,KAAnB,EAA0B;AACxB,YAAA,KAAI,CAACE,UAAL;AACD;AACF;AACF,OAjCkB,CAArB;;AAmCA,UAAI,KAAKzD,KAAL,CAAWO,OAAf,EAAwB;AACtBkC,QAAAA,YAAY,CAACiB,KAAb,CAAmB,KAAK1D,KAAL,CAAWO,OAA9B;AACD;;AAED,aAAO,IAAP;AACD;;;6BAGQ;AACP,UAAI,KAAKoD,aAAL,EAAJ,EAA0B;AACxB,eAAO,IAAP;AACD;;AAED,WAAKC,YAAL;;AAEA,WAAKC,WAAL;;AACA,WAAKb,mBAAL;;AAEA,WAAKc,YAAL,CAAkB,KAAKR,cAAvB;;AAGA,WAAKS,iBAAL;;AAIA,UAAI,KAAKC,SAAL,IAAkB,KAAKxD,EAAL,CAAQyD,MAA9B,EAAsC;AACpC,aAAKzD,EAAL,CAAQyD,MAAR;AACD;;AAED,UAAI,KAAKnC,iBAAT,EAA4B;AAC1B,aAAKA,iBAAL,CAAuB,IAAvB;;AACA,aAAKD,iBAAL,GAAyB,IAAzB;AACA,aAAKC,iBAAL,GAAyB,IAAzB;AACD;;AAED,WAAKoC,UAAL;;AAEA,aAAO,IAAP;AACD;;;2BAGM;AAEL,UAAI,KAAKvC,QAAT,EAAmB;AACjB,aAAKwC,qBAAL;;AACA,aAAKC,qBAAL,CAA2B,KAAKxC,iBAAhC;;AACA,aAAKC,iBAAL,GAAyB,IAAzB;AACA,aAAKC,iBAAL,GAAyB,IAAzB;AACA,aAAKF,iBAAL,GAAyB,IAAzB;AACA,aAAKD,QAAL,GAAgB,KAAhB;AACD;;AACD,aAAO,IAAP;AACD;;;mCAEcL,Q,EAAU;AACvB,WAAKA,QAAL,GAAgBA,QAAhB;AAEA,aAAO,KAAKA,QAAZ;AACD;;;qCAEgB;AACf,WAAKA,QAAL,GAAgB,IAAhB;AACD;;;oCAEe;AAAA;;AACd,WAAK+C,cAAL,CAAoB,eAApB;;AAEA,UAAI,CAAC,KAAKxC,iBAAV,EAA6B;AAC3B,aAAKA,iBAAL,GAAyB,IAAIyC,OAAJ,CAAY,UAAAC,OAAO,EAAI;AAC9C,UAAA,MAAI,CAACzC,iBAAL,GAAyByC,OAAzB;AACD,SAFwB,CAAzB;AAGD;;AACD,aAAO,KAAK1C,iBAAZ;AACD;;;;;;;;;AAGC,qBAAKwC,cAAL,CAAoB,WAApB;;uBAEM,KAAKG,aAAL,E;;;iDAEC,KAAKhE,EAAL,CAAQiE,MAAR,CAAeC,SAAf,E;;;;;;;;;;;;;;;;;;oCAGO;AACd,aAAO,KAAKlE,EAAL,CAAQmD,aAAR,EAAP;AACD;;;sCAEwB;AAAA;;AACvB,aAAO,oBAAK3D,KAAL,EAAWC,eAAX,8BAAP;AACD;;;mCAEqB;AAAA;;AACpB,aAAO,qBAAKD,KAAL,EAAWI,YAAX,+BAAP;AACD;;;+BAEiB;AAAA;;AAChB,aAAO,qBAAKJ,KAAL,EAAWK,QAAX,+BAAP;AACD;;;iCAEmB;AAAA;;AAClB,aAAO,qBAAKL,KAAL,EAAWM,UAAX,+BAAP;AACD;;;wCAImBqE,E,EAAsB;AAAA,UAAlBC,YAAkB,uEAAH,CAAG;AACxC,UAAMC,OAAO,GAAGhF,QAAQ,CAACiF,cAAT,CAAwBH,EAAxB,CAAhB;AAEA,aAAOE,OAAO,GAAGE,MAAM,CAACF,OAAO,CAACG,KAAT,CAAT,GAA2BJ,YAAzC;AACD;;;wCAGmB;AAClB1D,iBAAI+D,OAAJ,CAAY,iCAAZ,EAA+C,wBAA/C;;AACA,aAAO,IAAP;AACD;;;iCAIY;AAAA;;AACX,UAAMC,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxB,YAAI,CAAC,MAAI,CAACvD,QAAV,EAAoB;AAClB;AACD;;AACD,QAAA,MAAI,CAACwD,MAAL;;AACA,QAAA,MAAI,CAACvD,iBAAL,GAAyB,MAAI,CAACwD,sBAAL,CAA4BF,WAA5B,CAAzB;AACD,OAND;;AASA,WAAKd,qBAAL,CAA2B,KAAKxC,iBAAhC;;AACA,WAAKA,iBAAL,GAAyB,KAAKwD,sBAAL,CAA4BF,WAA5B,CAAzB;AACD;;;0CAIqB;AACpB,UAAI,CAAC,KAAK9C,gBAAV,EAA4B;AAC1B,aAAKA,gBAAL,GAAwBxC,MAAM,GAC1B,IAAI0E,OAAJ,CAAY,UAACC,OAAD,EAAUc,MAAV,EAAqB;AAC/B,cAAIzF,MAAM,IAAIC,QAAQ,CAACyF,UAAT,KAAwB,UAAtC,EAAkD;AAChDf,YAAAA,OAAO,CAAC1E,QAAD,CAAP;AACA;AACD;;AACD0F,UAAAA,MAAM,CAACC,gBAAP,CAAwB,MAAxB,EAAgC,YAAM;AACpCjB,YAAAA,OAAO,CAAC1E,QAAD,CAAP;AACD,WAFD;AAGD,SARD,CAD0B,GAU1ByE,OAAO,CAACC,OAAR,CAAgB,EAAhB,CAVJ;AAWD;;AACD,aAAO,KAAKnC,gBAAZ;AACD;;;gCAEWqD,O,EAAS;AACnB,UAAI,KAAKA,OAAT,EAAkB;AAChB,aAAKA,OAAL,CAAaC,MAAb;AACA,aAAKD,OAAL,CAAaE,aAAb,GAA6B,IAA7B;AACD;;AAGD,UAAIF,OAAJ,EAAa;AACXA,QAAAA,OAAO,CAACE,aAAR,GAAwB,IAAxB;AACD;;AAED,WAAKF,OAAL,GAAeA,OAAf;AACD;;;0CAEqBG,gB,EAAkB;AAEtC,UAAI,KAAKH,OAAL,IAAgB,KAAKA,OAAL,CAAaI,oBAAjC,EAAuD;AACrD,eAAO,KAAKJ,OAAL,CAAaI,oBAAb,CAAkCD,gBAAlC,CAAP;AACD;;AAED,aAAO,iCAAqBA,gBAArB,CAAP;AACD;;;2CAEsBE,mB,EAAqB;AAC1C,UAAI,KAAKnE,QAAT,EAAmB;AAEjB,YAAI,KAAK8D,OAAL,IAAgB,KAAKA,OAAL,CAAaM,qBAAjC,EAAwD;AACtD,iBAAO,KAAKN,OAAL,CAAaM,qBAAb,CAAmCD,mBAAnC,CAAP;AACD;;AAED,eAAO,kCAAsBA,mBAAtB,CAAP;AACD;;AACD,aAAOE,SAAP;AACD;;;mCAIqB;AAEpB,UAAI,KAAKP,OAAT,EAAkB;AAAA;;AAChB,8BAAKA,OAAL,EAAa3B,YAAb;;AACA;AACD;;AAGD,WAAKzD,QAAL;AAED;;;wCAEmB;AAClB,WAAKgB,WAAL,GAAmB,IAAnB;AACD;;;kCAEa;AACZ,WAAK4B,0BAAL;;AACA,WAAKC,eAAL;;AACA,WAAK+C,kBAAL;AACD;;;8CAGyB;AACxB,WAAK3C,cAAL,GAAsB;AACpB9C,QAAAA,EAAE,EAAE,KAAKA,EADW;AAGpB2B,QAAAA,IAAI,EAAE,KAAKA,IAHS;AAIpBsC,QAAAA,MAAM,EAAE,KAAKjE,EAAL,CAAQiE,MAJI;AAKpByB,QAAAA,WAAW,EAAE,KAAKA,WALE;AAQpBjF,QAAAA,eAAe,EAAE,KAAKA,eARF;AASpBI,QAAAA,WAAW,EAAE,IATO;AAYpB8E,QAAAA,SAAS,EAAEC,IAAI,CAACC,GAAL,EAZS;AAapBC,QAAAA,UAAU,EAAE,CAbQ;AAcpBC,QAAAA,IAAI,EAAE,CAdc;AAepBC,QAAAA,IAAI,EAAE,CAfc;AAkBpBC,QAAAA,IAAI,EAAE,CAlBc;AAqBpBC,QAAAA,SAAS,EAAE,KAAKpF,QArBI;AAsBpBqF,QAAAA,KAAK,EAAE,IAtBa;AAuBpBC,QAAAA,cAAc,EAAE,IAvBI;AAwBpBC,QAAAA,cAAc,EAAE;AAxBI,OAAtB;AA0BD;;;0CAGqB;AAAA,kCACY,KAAKC,iBAAL,EADZ;AAAA,UACbC,KADa,yBACbA,KADa;AAAA,UACNC,MADM,yBACNA,MADM;AAAA,UACEC,MADF,yBACEA,MADF;;AAEpB,UAAIF,KAAK,KAAK,KAAKzD,cAAL,CAAoByD,KAA9B,IAAuCC,MAAM,KAAK,KAAK1D,cAAL,CAAoB0D,MAA1E,EAAkF;AAChF,aAAK3C,cAAL,CAAoB,wBAApB;AACD;;AACD,UAAI4C,MAAM,KAAK,KAAK3D,cAAL,CAAoB2D,MAAnC,EAA2C;AACzC,aAAK5C,cAAL,CAAoB,+BAApB;AACD;;AAED,WAAKf,cAAL,CAAoByD,KAApB,GAA4BA,KAA5B;AACA,WAAKzD,cAAL,CAAoB0D,MAApB,GAA6BA,MAA7B;AACA,WAAK1D,cAAL,CAAoB2D,MAApB,GAA6BA,MAA7B;AAEA,WAAK3D,cAAL,CAAoBjC,WAApB,GAAkC,KAAKA,WAAvC;AAGA,WAAKiC,cAAL,CAAoBgD,UAApB,GAAiCF,IAAI,CAACC,GAAL,KAAa,KAAK/C,cAAL,CAAoB6C,SAAlE;;AAEA,UAAI,KAAK7E,QAAT,EAAmB;AACjB,aAAKA,QAAL,CAAc4F,MAAd,CAAqB,KAAK5D,cAAL,CAAoBgD,UAAzC;AACD;;AAED,WAAKhD,cAAL,CAAoBiD,IAApB,GAA2BY,IAAI,CAACC,KAAL,CAAY,KAAK9D,cAAL,CAAoBmD,IAApB,GAA2B,IAA5B,GAAoC,EAA/C,CAA3B;AACA,WAAKnD,cAAL,CAAoBkD,IAApB;AAGA,WAAKlD,cAAL,CAAoBmD,IAApB,GAA2B,KAAKnF,QAAL,GACvB,KAAKA,QAAL,CAAc+F,OAAd,EADuB,GAEvB,KAAK/D,cAAL,CAAoBgD,UAFxB;AAKA,WAAKhD,cAAL,CAAoBgE,UAApB,GAAiC,KAAKtD,SAAtC;AACD;;;4CAEuB;AAEtB,WAAK1D,UAAL,CAAgB,KAAKgD,cAArB;AAED;;;qCAGgBC,U,EAAY;AAC3B,UAAI,sBAAOA,UAAP,MAAsB,QAAtB,IAAkCA,UAAU,KAAK,IAArD,EAA2D;AACzD,aAAKD,cAAL,GAAsBiE,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkB,KAAKlE,cAAvB,EAAuCC,UAAvC,CAAtB;AACD;AACF;;;wCAGmBrD,I,EAAM;AACxB,WAAK8D,SAAL,GACE9D,IAAI,CAACuE,MAAL,IACA,OAAOgD,eAAP,KAA2B,WAD3B,IAEAvH,IAAI,CAACuE,MAAL,YAAuBgD,eAHzB;AAMAvH,MAAAA,IAAI,GAAGqH,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBtH,IAAlB,EAAwB,KAAKF,KAAL,CAAWS,SAAnC,CAAP;AACA,WAAKD,EAAL,GAAU,KAAKR,KAAL,CAAWQ,EAAX,GAAgB,kCAAoB,KAAKR,KAAL,CAAWQ,EAA/B,EAAmCN,IAAnC,CAAhB,GAA2D,KAAKD,eAAL,CAAqBC,IAArB,CAArE;;AAEA,UAAI,CAAC,sBAAQ,KAAKM,EAAb,CAAL,EAAuB;AACrB,cAAM,IAAIkH,KAAJ,CAAU,0DAAV,CAAN;AACD;;AAGD,oCAAgB,KAAKlH,EAArB;;AAEA,WAAKmH,cAAL;AACD;;;qCAEgB;AACf,UAAI,KAAKnH,EAAL,CAAQiE,MAAR,IAAkB,KAAKzE,KAAL,CAAWG,SAAjC,EAA4C;AAC1C,YAAMyH,UAAU,GAAG/H,QAAQ,CAACgI,aAAT,CAAuB,KAAvB,CAAnB;AACAhI,QAAAA,QAAQ,CAACiI,IAAT,CAAcC,WAAd,CAA0BH,UAA1B;AACAA,QAAAA,UAAU,CAACI,KAAX,CAAiBC,QAAjB,GAA4B,UAA5B;AACA,YAAMC,GAAG,GAAGrI,QAAQ,CAACgI,aAAT,CAAuB,KAAvB,CAAZ;AACAK,QAAAA,GAAG,CAACF,KAAJ,CAAUC,QAAV,GAAqB,UAArB;AACAC,QAAAA,GAAG,CAACF,KAAJ,CAAUG,IAAV,GAAiB,MAAjB;AACAD,QAAAA,GAAG,CAACF,KAAJ,CAAUI,MAAV,GAAmB,MAAnB;AACAF,QAAAA,GAAG,CAACF,KAAJ,CAAUjB,KAAV,GAAkB,OAAlB;AACAmB,QAAAA,GAAG,CAACF,KAAJ,CAAUK,UAAV,GAAuB,OAAvB;AACAT,QAAAA,UAAU,CAACG,WAAX,CAAuB,KAAKvH,EAAL,CAAQiE,MAA/B;AACAmD,QAAAA,UAAU,CAACG,WAAX,CAAuBG,GAAvB;AACA,YAAMI,IAAI,GAAG,KAAKtI,KAAL,CAAWG,SAAX,CAAqB+H,GAArB,CAAb;;AACA,YAAII,IAAJ,EAAU;AACRJ,UAAAA,GAAG,CAACK,SAAJ,GAAgBD,IAAhB;AACD;AACF;AACF;;;wCAEmB;AAElB,UAAMvB,KAAK,GAAG,KAAKvG,EAAL,CAAQgI,kBAAtB;AACA,UAAMxB,MAAM,GAAG,KAAKxG,EAAL,CAAQiI,mBAAvB;AAGA,UAAIxB,MAAM,GAAG,CAAb;AANkB,UAOXxC,MAPW,GAOD,KAAKjE,EAPJ,CAOXiE,MAPW;;AASlB,UAAIA,MAAM,IAAIA,MAAM,CAACiE,YAArB,EAAmC;AACjCzB,QAAAA,MAAM,GAAGxC,MAAM,CAACkE,WAAP,GAAqBlE,MAAM,CAACiE,YAArC;AACD,OAFD,MAEO,IAAI3B,KAAK,GAAG,CAAR,IAAaC,MAAM,GAAG,CAA1B,EAA6B;AAClCC,QAAAA,MAAM,GAAGF,KAAK,GAAGC,MAAjB;AACD;;AAED,aAAO;AAACD,QAAAA,KAAK,EAALA,KAAD;AAAQC,QAAAA,MAAM,EAANA,MAAR;AAAgBC,QAAAA,MAAM,EAANA;AAAhB,OAAP;AACD;;;sCAGiB;AAChB,UAAI,KAAKrG,kBAAT,EAA6B;AAC3B,aAAKJ,EAAL,CAAQoI,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,KAAKpI,EAAL,CAAQgI,kBAA/B,EAAmD,KAAKhI,EAAL,CAAQiI,mBAA3D;AACD;AACF;;;iDAI4B;AAC3B,UAAI,KAAK5H,uBAAT,EAAkC;AAChC,sCAAgB,KAAKL,EAArB,EAAyB;AAACS,UAAAA,eAAe,EAAE,KAAKA;AAAvB,SAAzB;AACD;AACF;;;yCAGoB;AAEnB,UAAI,KAAKjB,KAAL,CAAWW,iBAAf,EAAkC;AAChC,aAAKuF,WAAL,GAAmB,IAAI2C,kBAAJ,CAAgB,KAAKrI,EAArB,CAAnB;AACD;AACF;;;yCAEoB;AACnB,UAAI,KAAK0F,WAAT,EAAsB;AACpB,aAAKA,WAAL,CAAiB4C,MAAjB,CAAwB;AACtB/B,UAAAA,KAAK,EAAE,KAAKvG,EAAL,CAAQgI,kBADO;AAEtBxB,UAAAA,MAAM,EAAE,KAAKxG,EAAL,CAAQiI;AAFM,SAAxB;AAID;AACF;;;mCAEc;AACb,WAAKhH,SAAL,CAAesH,OAAf;AACA,WAAKtH,SAAL,CAAeuH,SAAf;;AAKA,UACE,KAAK7F,aAAL,IACA,KAAKA,aAAL,CAAmB8F,iBAAnB,EADA,IAEA,CAAC,KAAK9F,aAAL,CAAmB+F,eAAnB,EAHH,EAIE;AACA,aAAKpI,KAAL,CAAWE,GAAX,CAAe,UAAf,EAA2BmI,OAA3B,CAAmC,KAAKhG,aAAL,CAAmBiG,oBAAnB,EAAnC;AACD;;AAED,UAAI,KAAKjG,aAAT,EAAwB;AAEtB,aAAKA,aAAL,CAAmBkG,qBAAnB;AACD;;AAED,WAAK9H,OAAL,CAAayH,SAAb;AACD;;;iCAEY;AACX,WAAKzH,OAAL,CAAawH,OAAb;;AAEA,UAAI,KAAK5F,aAAT,EAAwB;AAEtB,aAAKA,aAAL,CAAmBmG,GAAnB;AACD;AACF;;;0CAIqB;AAAA,UACb7E,MADa,GACH,KAAKjE,EADF,CACbiE,MADa;;AAEpB,UAAIA,MAAJ,EAAY;AACVA,QAAAA,MAAM,CAACe,gBAAP,CAAwB,WAAxB,EAAqC,KAAKnD,YAA1C;AACAoC,QAAAA,MAAM,CAACe,gBAAP,CAAwB,YAAxB,EAAsC,KAAKlD,aAA3C;AACD;AACF;;;iCAEYiH,C,EAAG;AACd,WAAKjG,cAAL,CAAoBuD,cAApB,GAAqC,CAAC0C,CAAC,CAACC,OAAH,EAAYD,CAAC,CAACE,OAAd,CAArC;AACD;;;kCACaF,C,EAAG;AACf,WAAKjG,cAAL,CAAoBuD,cAApB,GAAqC,IAArC;AACD","sourcesContent":["import {\n isWebGL,\n createGLContext,\n instrumentGLContext,\n resizeGLContext,\n resetParameters\n} from '@luma.gl/gltools';\n\nimport {\n requestAnimationFrame,\n cancelAnimationFrame,\n Query,\n lumaStats,\n // TODO - remove dependency on framebuffer (bundle size impact)\n Framebuffer,\n log,\n assert\n} from '@luma.gl/webgl';\n\nimport {isBrowser} from 'probe.gl/env';\n\nconst isPage = isBrowser() && typeof document !== 'undefined';\n\nlet statIdCounter = 0;\n\nexport default class AnimationLoop {\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props = {}) {\n const {\n onCreateContext = opts => createGLContext(opts),\n onAddHTML = null,\n onInitialize = () => {},\n onRender = () => {},\n onFinalize = () => {},\n onError,\n\n gl = null,\n glOptions = {},\n debug = false,\n\n createFramebuffer = false,\n\n // view parameters\n autoResizeViewport = true,\n autoResizeDrawingBuffer = true,\n stats = lumaStats.get(`animation-loop-${statIdCounter++}`)\n } = props;\n\n let {useDevicePixels = true} = props;\n\n if ('useDevicePixelRatio' in props) {\n log.deprecated('useDevicePixelRatio', 'useDevicePixels')();\n // @ts-ignore\n useDevicePixels = props.useDevicePixelRatio;\n }\n\n this.props = {\n onCreateContext,\n onAddHTML,\n onInitialize,\n onRender,\n onFinalize,\n onError,\n\n gl,\n glOptions,\n debug,\n createFramebuffer\n };\n\n // state\n this.gl = gl;\n this.needsRedraw = null;\n this.timeline = null;\n this.stats = stats;\n this.cpuTime = this.stats.get('CPU Time');\n this.gpuTime = this.stats.get('GPU Time');\n this.frameRate = this.stats.get('Frame Rate');\n\n this._initialized = false;\n this._running = false;\n this._animationFrameId = null;\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._cpuStartTime = 0;\n\n this.setProps({\n autoResizeViewport,\n autoResizeDrawingBuffer,\n useDevicePixels\n });\n\n // Bind methods\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n\n this._pageLoadPromise = null;\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n delete() {\n this.stop();\n this._setDisplay(null);\n }\n\n setNeedsRedraw(reason) {\n assert(typeof reason === 'string');\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n setProps(props) {\n if ('autoResizeViewport' in props) {\n this.autoResizeViewport = props.autoResizeViewport;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;\n }\n if ('useDevicePixels' in props) {\n this.useDevicePixels = props.useDevicePixels;\n }\n return this;\n }\n\n // Starts a render loop if not already running\n // @param {Object} context - contains frame specific info (E.g. tick, width, height, etc)\n start(opts = {}) {\n if (this._running) {\n return this;\n }\n this._running = true;\n // console.debug(`Starting ${this.constructor.name}`);\n // Wait for start promise before rendering frame\n const startPromise = this._getPageLoadPromise()\n .then(() => {\n if (!this._running || this._initialized) {\n return null;\n }\n\n // Create the WebGL context\n this._createWebGLContext(opts);\n this._createFramebuffer();\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeCallbackData();\n this._updateCallbackData();\n\n // Default viewport setup, in case onInitialize wants to render\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n\n this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;\n\n this._initialized = true;\n\n // Note: onIntialize can return a promise (in case it needs to load resources)\n return this.onInitialize(this.animationProps);\n })\n .then(appContext => {\n if (this._running) {\n this._addCallbackData(appContext || {});\n if (appContext !== false) {\n this._startLoop();\n }\n }\n });\n\n if (this.props.onError) {\n startPromise.catch(this.props.onError);\n }\n\n return this;\n }\n\n // Redraw now\n redraw() {\n if (this.isContextLost()) {\n return this;\n }\n\n this._beginTimers();\n\n this._setupFrame();\n this._updateCallbackData();\n\n this._renderFrame(this.animationProps);\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/commit\n // Chrome's offscreen canvas does not require gl.commit\n if (this.offScreen && this.gl.commit) {\n this.gl.commit();\n }\n\n if (this._resolveNextFrame) {\n this._resolveNextFrame(this);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n }\n\n this._endTimers();\n\n return this;\n }\n\n // Stops a render loop if already running, finalizing\n stop() {\n // console.debug(`Stopping ${this.constructor.name}`);\n if (this._running) {\n this._finalizeCallbackData();\n this._cancelAnimationFrame(this._animationFrameId);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._animationFrameId = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline) {\n this.timeline = timeline;\n\n return this.timeline;\n }\n\n detachTimeline() {\n this.timeline = null;\n }\n\n waitForRender() {\n this.setNeedsRedraw('waitForRender');\n\n if (!this._nextFramePromise) {\n this._nextFramePromise = new Promise(resolve => {\n this._resolveNextFrame = resolve;\n });\n }\n return this._nextFramePromise;\n }\n\n async toDataURL() {\n this.setNeedsRedraw('toDataURL');\n\n await this.waitForRender();\n\n return this.gl.canvas.toDataURL();\n }\n\n isContextLost() {\n return this.gl.isContextLost();\n }\n\n onCreateContext(...args) {\n return this.props.onCreateContext(...args);\n }\n\n onInitialize(...args) {\n return this.props.onInitialize(...args);\n }\n\n onRender(...args) {\n return this.props.onRender(...args);\n }\n\n onFinalize(...args) {\n return this.props.onFinalize(...args);\n }\n\n // DEPRECATED/REMOVED METHODS\n\n getHTMLControlValue(id, defaultValue = 1) {\n const element = document.getElementById(id);\n // @ts-ignore Not all html elements have value\n return element ? Number(element.value) : defaultValue;\n }\n\n // Update parameters\n setViewParameters() {\n log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();\n return this;\n }\n\n // PRIVATE METHODS\n\n _startLoop() {\n const renderFrame = () => {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n };\n\n // cancel any pending renders to ensure only one loop can ever run\n this._cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = this._requestAnimationFrame(renderFrame);\n }\n\n // PRIVATE METHODS\n\n _getPageLoadPromise() {\n if (!this._pageLoadPromise) {\n this._pageLoadPromise = isPage\n ? new Promise((resolve, reject) => {\n if (isPage && document.readyState === 'complete') {\n resolve(document);\n return;\n }\n window.addEventListener('load', () => {\n resolve(document);\n });\n })\n : Promise.resolve({});\n }\n return this._pageLoadPromise;\n }\n\n _setDisplay(display) {\n if (this.display) {\n this.display.delete();\n this.display.animationLoop = null;\n }\n\n // store animation loop on the display\n if (display) {\n display.animationLoop = this;\n }\n\n this.display = display;\n }\n\n _cancelAnimationFrame(animationFrameId) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.cancelAnimationFrame) {\n return this.display.cancelAnimationFrame(animationFrameId);\n }\n\n return cancelAnimationFrame(animationFrameId);\n }\n\n _requestAnimationFrame(renderFrameCallback) {\n if (this._running) {\n // E.g. VR display has a separate animation frame to sync with headset\n if (this.display && this.display.requestAnimationFrame) {\n return this.display.requestAnimationFrame(renderFrameCallback);\n }\n\n return requestAnimationFrame(renderFrameCallback);\n }\n return undefined;\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(...args) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(...args);\n return;\n }\n\n // call callback\n this.onRender(...args);\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = null;\n }\n\n _setupFrame() {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n this._resizeFramebuffer();\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeCallbackData() {\n this.animationProps = {\n gl: this.gl,\n\n stop: this.stop,\n canvas: this.gl.canvas,\n framebuffer: this.framebuffer,\n\n // Initial values\n useDevicePixels: this.useDevicePixels,\n needsRedraw: null,\n\n // Animation props\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Timeline time for back compatibility\n time: 0,\n\n // Experimental\n _timeline: this.timeline,\n _loop: this,\n _animationLoop: this,\n _mousePosition: null // Event props\n };\n }\n\n // Update the context object that will be passed to app callbacks\n _updateCallbackData() {\n const {width, height, aspect} = this._getSizeAndAspect();\n if (width !== this.animationProps.width || height !== this.animationProps.height) {\n this.setNeedsRedraw('drawing buffer resized');\n }\n if (aspect !== this.animationProps.aspect) {\n this.setNeedsRedraw('drawing buffer aspect changed');\n }\n\n this.animationProps.width = width;\n this.animationProps.height = height;\n this.animationProps.aspect = aspect;\n\n this.animationProps.needsRedraw = this.needsRedraw;\n\n // Update time properties\n this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n if (this.timeline) {\n this.timeline.update(this.animationProps.engineTime);\n }\n\n this.animationProps.tick = Math.floor((this.animationProps.time / 1000) * 60);\n this.animationProps.tock++;\n\n // For back compatibility\n this.animationProps.time = this.timeline\n ? this.timeline.getTime()\n : this.animationProps.engineTime;\n\n // experimental\n this.animationProps._offScreen = this.offScreen;\n }\n\n _finalizeCallbackData() {\n // call callback\n this.onFinalize(this.animationProps);\n // end callback\n }\n\n // Add application's data to the app context object\n _addCallbackData(appContext) {\n if (typeof appContext === 'object' && appContext !== null) {\n this.animationProps = Object.assign({}, this.animationProps, appContext);\n }\n }\n\n // Either uses supplied or existing context, or calls provided callback to create one\n _createWebGLContext(opts) {\n this.offScreen =\n opts.canvas &&\n typeof OffscreenCanvas !== 'undefined' &&\n opts.canvas instanceof OffscreenCanvas;\n\n // Create the WebGL context if necessary\n opts = Object.assign({}, opts, this.props.glOptions);\n this.gl = this.props.gl ? instrumentGLContext(this.props.gl, opts) : this.onCreateContext(opts);\n\n if (!isWebGL(this.gl)) {\n throw new Error('AnimationLoop.onCreateContext - illegal context returned');\n }\n\n // Reset the WebGL context.\n resetParameters(this.gl);\n\n this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.gl.canvas && this.props.onAddHTML) {\n const wrapperDiv = document.createElement('div');\n document.body.appendChild(wrapperDiv);\n wrapperDiv.style.position = 'relative';\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.left = '10px';\n div.style.bottom = '10px';\n div.style.width = '300px';\n div.style.background = 'white';\n wrapperDiv.appendChild(this.gl.canvas);\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect() {\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const width = this.gl.drawingBufferWidth;\n const height = this.gl.drawingBufferHeight;\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const {canvas} = this.gl;\n\n if (canvas && canvas.clientHeight) {\n aspect = canvas.clientWidth / canvas.clientHeight;\n } else if (width > 0 && height > 0) {\n aspect = width / height;\n }\n\n return {width, height, aspect};\n }\n\n // Default viewport setup\n _resizeViewport() {\n if (this.autoResizeViewport) {\n this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);\n }\n }\n\n // Resize the render buffer of the canvas to match canvas client size\n // Optionally multiplying with devicePixel ratio\n _resizeCanvasDrawingBuffer() {\n if (this.autoResizeDrawingBuffer) {\n resizeGLContext(this.gl, {useDevicePixels: this.useDevicePixels});\n }\n }\n\n // TBD - deprecated?\n _createFramebuffer() {\n // Setup default framebuffer\n if (this.props.createFramebuffer) {\n this.framebuffer = new Framebuffer(this.gl);\n }\n }\n\n _resizeFramebuffer() {\n if (this.framebuffer) {\n this.framebuffer.resize({\n width: this.gl.drawingBufferWidth,\n height: this.gl.drawingBufferHeight\n });\n }\n }\n\n _beginTimers() {\n this.frameRate.timeEnd();\n this.frameRate.timeStart();\n\n // Check if timer for last frame has completed.\n // GPU timer results are never available in the same\n // frame they are captured.\n if (\n this._gpuTimeQuery &&\n this._gpuTimeQuery.isResultAvailable() &&\n !this._gpuTimeQuery.isTimerDisjoint()\n ) {\n this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n }\n\n if (this._gpuTimeQuery) {\n // GPU time query start\n this._gpuTimeQuery.beginTimeElapsedQuery();\n }\n\n this.cpuTime.timeStart();\n }\n\n _endTimers() {\n this.cpuTime.timeEnd();\n\n if (this._gpuTimeQuery) {\n // GPU time query end. Results will be available on next frame.\n this._gpuTimeQuery.end();\n }\n }\n\n // Event handling\n\n _startEventHandling() {\n const {canvas} = this.gl;\n if (canvas) {\n canvas.addEventListener('mousemove', this._onMousemove);\n canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(e) {\n this.animationProps._mousePosition = [e.offsetX, e.offsetY];\n }\n _onMouseleave(e) {\n this.animationProps._mousePosition = null;\n }\n}\n"],"file":"animation-loop.js"}
@@ -1,3 +0,0 @@
1
- export function getBuffersFromGeometry(gl: WebGLRenderingContext, geometry: any, options?: any): {};
2
-
3
- export function inferAttributeAccessor(attributeName: any, attribute: any): void;
@@ -1,110 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.getBuffersFromGeometry = getBuffersFromGeometry;
9
- exports.inferAttributeAccessor = inferAttributeAccessor;
10
-
11
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
-
13
- var _webgl = require("@luma.gl/webgl");
14
-
15
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
16
-
17
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
18
-
19
- var GLTF_TO_LUMA_ATTRIBUTE_MAP = {
20
- POSITION: 'positions',
21
- NORMAL: 'normals',
22
- COLOR_0: 'colors',
23
- TEXCOORD_0: 'texCoords',
24
- TEXCOORD_1: 'texCoords1',
25
- TEXCOORD_2: 'texCoords2'
26
- };
27
-
28
- function getBuffersFromGeometry(gl, geometry, options) {
29
- var buffers = {};
30
- var indices = geometry.indices;
31
-
32
- for (var name in geometry.attributes) {
33
- var attribute = geometry.attributes[name];
34
- var remappedName = mapAttributeName(name, options);
35
-
36
- if (name === 'indices') {
37
- indices = attribute;
38
- } else if (attribute.constant) {
39
- buffers[remappedName] = attribute.value;
40
- } else {
41
- var typedArray = attribute.value;
42
-
43
- var accessor = _objectSpread({}, attribute);
44
-
45
- delete accessor.value;
46
- buffers[remappedName] = [new _webgl.Buffer(gl, typedArray), accessor];
47
- inferAttributeAccessor(name, accessor);
48
- }
49
- }
50
-
51
- if (indices) {
52
- var data = indices.value || indices;
53
- (0, _webgl.assert)(data instanceof Uint16Array || data instanceof Uint32Array, 'attribute array for "indices" must be of integer type');
54
- var _accessor = {
55
- size: 1,
56
- isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed
57
- };
58
- buffers.indices = [new _webgl.Buffer(gl, {
59
- data: data,
60
- target: 34963
61
- }), _accessor];
62
- }
63
-
64
- return buffers;
65
- }
66
-
67
- function mapAttributeName(name, options) {
68
- var _ref = options || {},
69
- _ref$attributeMap = _ref.attributeMap,
70
- attributeMap = _ref$attributeMap === void 0 ? GLTF_TO_LUMA_ATTRIBUTE_MAP : _ref$attributeMap;
71
-
72
- return attributeMap && attributeMap[name] || name;
73
- }
74
-
75
- function inferAttributeAccessor(attributeName, attribute) {
76
- var category;
77
-
78
- switch (attributeName) {
79
- case 'texCoords':
80
- case 'texCoord1':
81
- case 'texCoord2':
82
- case 'texCoord3':
83
- category = 'uvs';
84
- break;
85
-
86
- case 'vertices':
87
- case 'positions':
88
- case 'normals':
89
- case 'pickingColors':
90
- category = 'vectors';
91
- break;
92
-
93
- default:
94
- }
95
-
96
- switch (category) {
97
- case 'vectors':
98
- attribute.size = attribute.size || 3;
99
- break;
100
-
101
- case 'uvs':
102
- attribute.size = attribute.size || 2;
103
- break;
104
-
105
- default:
106
- }
107
-
108
- (0, _webgl.assert)(Number.isFinite(attribute.size), "attribute ".concat(attributeName, " needs size"));
109
- }
110
- //# sourceMappingURL=model-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/lib/model-utils.js"],"names":["GLTF_TO_LUMA_ATTRIBUTE_MAP","POSITION","NORMAL","COLOR_0","TEXCOORD_0","TEXCOORD_1","TEXCOORD_2","getBuffersFromGeometry","gl","geometry","options","buffers","indices","name","attributes","attribute","remappedName","mapAttributeName","constant","value","typedArray","accessor","Buffer","inferAttributeAccessor","data","Uint16Array","Uint32Array","size","isIndexed","undefined","target","attributeMap","attributeName","category","Number","isFinite"],"mappings":"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","sourcesContent":["import GL from '@luma.gl/constants';\nimport {Buffer, assert} from '@luma.gl/webgl';\n\n// Support for mapping new geometries with glTF attribute names to \"classic\" luma.gl shader names\nconst GLTF_TO_LUMA_ATTRIBUTE_MAP = {\n POSITION: 'positions',\n NORMAL: 'normals',\n COLOR_0: 'colors',\n TEXCOORD_0: 'texCoords',\n TEXCOORD_1: 'texCoords1',\n TEXCOORD_2: 'texCoords2'\n};\n\nexport function getBuffersFromGeometry(gl, geometry, options) {\n const buffers = {};\n let indices = geometry.indices;\n\n for (const name in geometry.attributes) {\n const attribute = geometry.attributes[name];\n const remappedName = mapAttributeName(name, options);\n\n if (name === 'indices') {\n indices = attribute;\n } else if (attribute.constant) {\n buffers[remappedName] = attribute.value;\n } else {\n const typedArray = attribute.value;\n // Create accessor by copying the attribute and removing `value``\n const accessor = {...attribute};\n delete accessor.value;\n buffers[remappedName] = [new Buffer(gl, typedArray), accessor];\n\n inferAttributeAccessor(name, accessor);\n }\n }\n\n if (indices) {\n const data = indices.value || indices;\n assert(\n data instanceof Uint16Array || data instanceof Uint32Array,\n 'attribute array for \"indices\" must be of integer type'\n );\n const accessor = {\n size: 1,\n isIndexed: indices.isIndexed === undefined ? true : indices.isIndexed\n };\n buffers.indices = [\n new Buffer(gl, {\n data,\n target: GL.ELEMENT_ARRAY_BUFFER\n }),\n accessor\n ];\n }\n\n return buffers;\n}\n\nfunction mapAttributeName(name, options) {\n const {attributeMap = GLTF_TO_LUMA_ATTRIBUTE_MAP} = options || {};\n return (attributeMap && attributeMap[name]) || name;\n}\n\n// Check for well known attribute names\n// eslint-disable-next-line complexity\nexport function inferAttributeAccessor(attributeName, attribute) {\n let category;\n switch (attributeName) {\n case 'texCoords':\n case 'texCoord1':\n case 'texCoord2':\n case 'texCoord3':\n category = 'uvs';\n break;\n case 'vertices':\n case 'positions':\n case 'normals':\n case 'pickingColors':\n category = 'vectors';\n break;\n default:\n }\n\n // Check for categorys\n switch (category) {\n case 'vectors':\n attribute.size = attribute.size || 3;\n break;\n case 'uvs':\n attribute.size = attribute.size || 2;\n break;\n default:\n }\n\n assert(Number.isFinite(attribute.size), `attribute ${attributeName} needs size`);\n}\n"],"file":"model-utils.js"}
@@ -1,214 +0,0 @@
1
- import ProgramManager from './program-manager';
2
- import {Program, Shader} from '@luma.gl/webgl';
3
-
4
- type DefineMap = object;
5
- type InjectionMap = object;
6
-
7
- type ProgramProps = {
8
- program?: Program
9
- vs?: Shader | string
10
- fs?: Shader | string
11
- modules?: (object | string)[]; // Array<ShaderModule | ShaderModuleObject | string>
12
- defines?: DefineMap
13
- inject?: InjectionMap
14
- varyings?: string[]
15
- bufferMode?: number
16
- transpileToGLSL100?: boolean
17
- }
18
-
19
- type ModelProps = ProgramProps & {
20
- id?: string
21
- moduleSettings?: object; // UniformsOptions
22
- attributes?: object,
23
- uniforms?: object; // Uniforms
24
- geometry?: object; // Geometry
25
- vertexCount?: number
26
- drawMode?: number
27
- isInstanced?: boolean
28
- instanceCount?: number
29
- programManager?: ProgramManager
30
- onBeforeRender?: () => void
31
- onAfterRender?: () => void
32
- _feedbackBuffers?: object; // FeedbackBuffers
33
- }
34
-
35
- /*
36
- export type ModelProps = {
37
- id?: string;
38
- program?: Program;
39
- vs?: Shader | string;
40
- fs?: Shader | string;
41
- geometry?: object;
42
- drawMode?: number;
43
- vertexCount?: number;
44
- isInstanced?: boolean;
45
- modules?: object;
46
- defines?: object;
47
- inject?: object;
48
- varyings?: object;
49
- bufferMode?: number;
50
- transpileToGLSL100?: boolean;
51
- };
52
- */
53
-
54
- export default class Model {
55
- readonly id: string;
56
- readonly gl: WebGLRenderingContext;
57
- readonly animated: boolean;
58
- readonly programManager: ProgramManager;
59
- readonly vertexCount: number;
60
-
61
- constructor(gl: WebGLRenderingContext, props?: ModelProps);
62
- initialize(props: any): void;
63
- setProps(props: any): void;
64
- delete(): void;
65
- getDrawMode(): any;
66
- getVertexCount(): any;
67
- getInstanceCount(): any;
68
- getAttributes(): any;
69
- getProgram(): any;
70
- setProgram(props: any): void;
71
- getUniforms(): any;
72
- setDrawMode(drawMode: any): this;
73
- setVertexCount(vertexCount: number): this;
74
- setInstanceCount(instanceCount: number): this;
75
- setGeometry(geometry: any): this;
76
- setAttributes(attributes?: object): this;
77
- setUniforms(uniforms?: object): this;
78
- getModuleUniforms(opts?: object): any;
79
- updateModuleSettings(opts?: object): this;
80
- clear(opts: any): this;
81
- draw(opts?: {}): boolean;
82
- transform(opts?: {}): this;
83
- render(uniforms?: {}): any;
84
- }
85
-
86
- /*
87
- import Geometry from '../geometry/geometry';
88
- import { AnimationProps } from './animation-loop';
89
- import {
90
- Buffer,
91
- Program,
92
- VertexArray,
93
- Framebuffer,
94
- TransformFeedback,
95
- Accessor,
96
- VertexShader,
97
- FragmentShader
98
- } from '@luma.gl/webgl';
99
-
100
- import {
101
- AccessorObject
102
- } from '@luma.gl/webgl/src/classes/accessor'
103
-
104
- import {
105
- Uniforms,
106
- UniformsOptions
107
- } from '@luma.gl/webgl/src/classes/uniforms'
108
-
109
- import {
110
- ShaderModule,
111
- ShaderModuleObject,
112
- InjectionMap
113
- } from '@luma.gl/shadertools/src/lib/shader-module'
114
-
115
- import {
116
- DefineMap
117
- } from '@luma.gl/shadertools/src/lib/assemble-shaders'
118
-
119
- type Attribute = Buffer | AccessorObject | Accessor |
120
- [Buffer, Accessor] | [Buffer, AccessorObject]
121
-
122
- interface Attributes {
123
- [attributeName: string]: Attribute
124
- }
125
-
126
- interface Parameters {
127
- [parameterConstant: number]: boolean
128
- [settingName: string]: boolean
129
- }
130
-
131
- interface FeedbackBuffers {
132
- [name: string]: string | Buffer
133
- }
134
-
135
- interface ProgramProps {
136
- program: Program
137
- vs: VertexShader | string
138
- fs: FragmentShader | string
139
- modules: Array<ShaderModule | ShaderModuleObject | string>
140
- defines: DefineMap
141
- inject: InjectionMap
142
- varyings: Array<string>
143
- bufferMode: number
144
- transpileToGLSL100: boolean
145
- }
146
-
147
- interface ModelProps extends ProgramProps {
148
- id?: string
149
- moduleSettings?: UniformsOptions
150
- uniforms?: Uniforms
151
- geometry?: Geometry
152
- vertexCount?: number
153
- drawMode?: number
154
- programManager?: ProgramManager
155
- onBeforeRender?: () => void
156
- onAfterRender?: () => void
157
- _feedbackBuffers?: FeedbackBuffers
158
- }
159
-
160
- interface DrawOpts {
161
- moduleSettings?: UniformsOptions
162
- framebuffer: Framebuffer
163
- uniforms?: Uniforms
164
- attributes?: Attributes
165
- parameters?: Parameters
166
- transformFeedback?: TransformFeedback
167
- vertexArray?: VertexArray
168
- }
169
-
170
- interface ClearOpts {
171
- framebuffer?: Framebuffer
172
- color?: boolean
173
- depth?: boolean
174
- stencil?: boolean
175
- }
176
-
177
- interface TransformOpts extends DrawOpts {
178
- discard: boolean
179
- feedbackBuffers: FeedbackBuffers
180
- unbindModels: Array<Model>
181
- parameters: Parameters
182
- }
183
-
184
- export default class Model {
185
- readonly id: string;
186
- readonly gl: WebGLRenderingContext;
187
- readonly animated: boolean;
188
- readonly programManager: ProgramManager;
189
-
190
- constructor(gl: WebGLRenderingContext, props?: ModelProps);
191
- initialize(props: any): void;
192
- setProps(props: any): void;
193
- delete(): void;
194
- getDrawMode(): any;
195
- getVertexCount(): any;
196
- getInstanceCount(): any;
197
- getAttributes(): any;
198
- getProgram(): any;
199
- setProgram(props: any): void;
200
- getUniforms(): any;
201
- setDrawMode(drawMode: any): this;
202
- setVertexCount(vertexCount: number): this;
203
- setInstanceCount(instanceCount: number): this;
204
- setGeometry(geometry: any): this;
205
- setAttributes(attributes?: object): this;
206
- setUniforms(uniforms?: object): this;
207
- getModuleUniforms(opts?: object): any;
208
- updateModuleSettings(opts?: object): this;
209
- clear(opts: any): this;
210
- draw(opts?: {}): any;
211
- transform(opts?: {}): this;
212
- render(uniforms?: {}): any;
213
- }
214
- */