@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAS,MAAM,cAAc,CAAC;AAG5C,OAAO,KAAK,EAAC,WAAW,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAC,WAAW,EAAgB,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,MAAM,cAAc,CAAC;AAGjC,OAAO,EAAC,cAAc,EAAE,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAE5F;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS;IAC5B;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,GAAG,OAAO;IASpE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC3B,YAAY,SAAK;IACjB,eAAe,MAAQ;IACvB,gBAAgB,MAAQ;IACxB,eAAe,MAAQ;gBAEX,MAAM,EAAE,MAAM,GAAG,sBAAsB,EAAE,KAAK,GAAE,cAAmB;IAQ/E,8BAA8B;IAC9B,OAAO,IAAI,IAAI;IAaf,iCAAiC;IACjC,MAAM,IAAI,IAAI;IAId,8BAA8B;IAC9B,GAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI;IAYxC,0CAA0C;IAC1C,IAAI,IAAI,IAAI;IASZ,mDAAmD;IACnD,SAAS,CAAC,WAAW,GAAE,MAAa,GAAG,MAAM;IAI7C,qDAAqD;IACrD,OAAO,CAAC,OAAO,GAAE;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAM;IAW9D,yDAAyD;IACzD,cAAc,IAAI,WAAW,GAAG,IAAI;IAIpC,kDAAkD;IAClD,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAYnC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAoBxC,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc;IASxD,wBAAwB,CAAC,EAAE,EAAE,sBAAsB,EAAE,KAAK,EAAE,cAAc;IAa1E,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,oBAAoB;CAQvE"}
@@ -1,28 +1,45 @@
1
- import { getPassthroughFS } from '@luma.gl/shadertools';
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import { assert } from '@luma.gl/api';
3
+ import GL from '@luma.gl/constants';
4
+ import { getShaderInfo, getPassthroughFS } from '@luma.gl/shadertools';
5
+ import { WebGLDevice, isObjectEmpty } from '@luma.gl/webgl';
6
+ import Model from '../lib/model';
2
7
  import BufferTransform from './buffer-transform';
3
8
  import TextureTransform from './texture-transform';
4
- import { isWebGL2 } from '@luma.gl/gltools';
5
- import { assert, isObjectEmpty, getShaderVersion } from '@luma.gl/webgl';
6
- import Model from '../lib/model';
7
9
  export default class Transform {
8
- static isSupported(gl) {
9
- return isWebGL2(gl);
10
+ static isSupported(device) {
11
+ try {
12
+ const webglDevice = WebGLDevice.attach(device);
13
+ return webglDevice.isWebGL2;
14
+ } catch {
15
+ return false;
16
+ }
10
17
  }
11
18
 
12
- constructor(gl, props = {}) {
13
- this.gl = gl;
14
- this.model = null;
15
- this.elementCount = 0;
16
- this.bufferTransform = null;
17
- this.textureTransform = null;
18
- this.elementIDBuffer = null;
19
+ constructor(device, props = {}) {
20
+ _defineProperty(this, "device", void 0);
21
+
22
+ _defineProperty(this, "gl", void 0);
23
+
24
+ _defineProperty(this, "model", null);
25
+
26
+ _defineProperty(this, "elementCount", 0);
27
+
28
+ _defineProperty(this, "bufferTransform", null);
29
+
30
+ _defineProperty(this, "textureTransform", null);
31
+
32
+ _defineProperty(this, "elementIDBuffer", null);
33
+
34
+ this.device = WebGLDevice.attach(device);
35
+ this.gl = this.device.gl2;
19
36
 
20
37
  this._initialize(props);
21
38
 
22
39
  Object.seal(this);
23
40
  }
24
41
 
25
- delete() {
42
+ destroy() {
26
43
  const {
27
44
  model,
28
45
  bufferTransform,
@@ -42,12 +59,16 @@ export default class Transform {
42
59
  }
43
60
  }
44
61
 
45
- run(opts = {}) {
62
+ delete() {
63
+ this.destroy();
64
+ }
65
+
66
+ run(options) {
46
67
  const {
47
68
  clearRenderTarget = true
48
- } = opts;
69
+ } = options || {};
49
70
 
50
- const updatedOpts = this._updateDrawOptions(opts);
71
+ const updatedOpts = this._updateDrawOptions(options);
51
72
 
52
73
  if (clearRenderTarget && updatedOpts.framebuffer) {
53
74
  updatedOpts.framebuffer.clear({
@@ -73,11 +94,11 @@ export default class Transform {
73
94
  return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);
74
95
  }
75
96
 
76
- getData(opts = {}) {
97
+ getData(options = {}) {
77
98
  const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
78
99
 
79
100
  for (const resourceTransform of resourceTransforms) {
80
- const data = resourceTransform.getData(opts);
101
+ const data = resourceTransform.getData(options);
81
102
 
82
103
  if (data) {
83
104
  return data;
@@ -91,19 +112,19 @@ export default class Transform {
91
112
  return this.textureTransform && this.textureTransform.getFramebuffer();
92
113
  }
93
114
 
94
- update(opts = {}) {
95
- if ('elementCount' in opts) {
96
- this.model.setVertexCount(opts.elementCount);
115
+ update(props) {
116
+ if ('elementCount' in props) {
117
+ this.model.setVertexCount(props.elementCount);
97
118
  }
98
119
 
99
120
  const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
100
121
 
101
122
  for (const resourceTransform of resourceTransforms) {
102
- resourceTransform.update(opts);
123
+ resourceTransform.update(props);
103
124
  }
104
125
  }
105
126
 
106
- _initialize(props = {}) {
127
+ _initialize(props) {
107
128
  const {
108
129
  gl
109
130
  } = this;
@@ -111,21 +132,25 @@ export default class Transform {
111
132
  this._buildResourceTransforms(gl, props);
112
133
 
113
134
  props = this._updateModelProps(props);
114
- this.model = new Model(gl, Object.assign({}, props, {
135
+ this.model = new Model(this.device, Object.assign({}, props, {
115
136
  fs: props.fs || getPassthroughFS({
116
- version: getShaderVersion(props.vs)
137
+ version: getShaderInfo(props.vs).version
117
138
  }),
118
139
  id: props.id || 'transform-model',
119
- drawMode: props.drawMode || 0,
140
+ drawMode: props.drawMode || GL.POINTS,
120
141
  vertexCount: props.elementCount
121
142
  }));
122
- this.bufferTransform && this.bufferTransform.setupResources({
123
- model: this.model
124
- });
143
+
144
+ if (this.bufferTransform) {
145
+ this.bufferTransform.setupResources({
146
+ model: this.model
147
+ });
148
+ }
125
149
  }
126
150
 
127
151
  _updateModelProps(props) {
128
- let updatedProps = Object.assign({}, props);
152
+ let updatedProps = { ...props
153
+ };
129
154
  const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
130
155
 
131
156
  for (const resourceTransform of resourceTransforms) {
@@ -147,8 +172,9 @@ export default class Transform {
147
172
  assert(this.bufferTransform || this.textureTransform, 'must provide source/feedback buffers or source/target textures');
148
173
  }
149
174
 
150
- _updateDrawOptions(opts) {
151
- let updatedOpts = Object.assign({}, opts);
175
+ _updateDrawOptions(options) {
176
+ let updatedOpts = { ...options
177
+ };
152
178
  const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);
153
179
 
154
180
  for (const resourceTransform of resourceTransforms) {
@@ -161,18 +187,12 @@ export default class Transform {
161
187
  }
162
188
 
163
189
  function canCreateBufferTransform(props) {
164
- if (!isObjectEmpty(props.feedbackBuffers) || !isObjectEmpty(props.feedbackMap) || props.varyings && props.varyings.length > 0) {
165
- return true;
166
- }
167
-
168
- return false;
190
+ const canCreate = !isObjectEmpty(props.feedbackBuffers) || !isObjectEmpty(props.feedbackMap) || props.varyings && props.varyings.length > 0;
191
+ return Boolean(canCreate);
169
192
  }
170
193
 
171
194
  function canCreateTextureTransform(props) {
172
- if (!isObjectEmpty(props._sourceTextures) || props._targetTexture || props._targetTextureVarying) {
173
- return true;
174
- }
175
-
176
- return false;
195
+ const canCreate = !isObjectEmpty(props._sourceTextures) || props._targetTexture || props._targetTextureVarying;
196
+ return canCreate;
177
197
  }
178
198
  //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transform/transform.ts"],"names":["assert","GL","getShaderInfo","getPassthroughFS","WebGLDevice","isObjectEmpty","Model","BufferTransform","TextureTransform","Transform","isSupported","device","webglDevice","attach","isWebGL2","constructor","props","gl","gl2","_initialize","Object","seal","destroy","model","bufferTransform","textureTransform","delete","run","options","clearRenderTarget","updatedOpts","_updateDrawOptions","framebuffer","clear","color","transform","swap","swapped","resourceTransforms","filter","Boolean","resourceTransform","getBuffer","varyingName","getData","data","getFramebuffer","update","setVertexCount","elementCount","_buildResourceTransforms","_updateModelProps","assign","fs","version","vs","id","drawMode","POINTS","vertexCount","setupResources","updatedProps","updateModelProps","canCreateBufferTransform","canCreateTextureTransform","getDrawOptions","canCreate","feedbackBuffers","feedbackMap","varyings","length","_sourceTextures","_targetTexture","_targetTextureVarying"],"mappings":"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","sourcesContent":["import {Device, assert} from '@luma.gl/api';\nimport GL from '@luma.gl/constants';\nimport {getShaderInfo, getPassthroughFS} from '@luma.gl/shadertools';\nimport type {Framebuffer, Buffer} from '@luma.gl/webgl';\nimport {WebGLDevice, isObjectEmpty} from '@luma.gl/webgl';\n\nimport Model from '../lib/model';\nimport BufferTransform from './buffer-transform';\nimport TextureTransform from './texture-transform';\nimport {TransformProps, TransformRunOptions, TransformDrawOptions} from './transform-types';\n\n/** \n * Takes source and target buffers/textures and sets up the pipeline \n */\nexport default class Transform {\n /** \n * Check if Transforms are supported (they are not under WebGL1)\n * @todo differentiate writing to buffer vs not\n */\n static isSupported(device: Device | WebGL2RenderingContext): boolean {\n try {\n const webglDevice = WebGLDevice.attach(device);\n return webglDevice.isWebGL2;\n } catch {\n return false;\n }\n }\n\n readonly device: WebGLDevice;\n readonly gl: WebGL2RenderingContext;\n model: Model | null = null;\n elementCount = 0;\n bufferTransform = null;\n textureTransform = null;\n elementIDBuffer = null;\n\n constructor(device: Device | WebGL2RenderingContext, props: TransformProps = {}) {\n this.device = WebGLDevice.attach(device);\n // TODO assert webgl2?\n this.gl = this.device.gl2;\n this._initialize(props);\n Object.seal(this);\n }\n\n /** Delete owned resources. */\n destroy(): void {\n const {model, bufferTransform, textureTransform} = this;\n if (model) {\n model.delete();\n }\n if (bufferTransform) {\n bufferTransform.delete();\n }\n if (textureTransform) {\n textureTransform.delete();\n }\n }\n\n /** @deprecated Use destroy*() */\n delete(): void {\n this.destroy();\n }\n\n /** Run one transform loop. */\n run(options?: TransformRunOptions): void {\n const {clearRenderTarget = true} = options || {};\n\n const updatedOpts = this._updateDrawOptions(options);\n\n if (clearRenderTarget && updatedOpts.framebuffer) {\n updatedOpts.framebuffer.clear({color: true});\n }\n\n this.model.transform(updatedOpts);\n }\n\n /** swap resources if a map is provided */\n swap(): void {\n let swapped = false;\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n swapped = swapped || resourceTransform.swap();\n }\n assert(swapped, 'Nothing to swap');\n }\n\n /** Return Buffer object for given varying name. */\n getBuffer(varyingName: string = null): Buffer {\n return this.bufferTransform && this.bufferTransform.getBuffer(varyingName);\n }\n\n /** Return data either from Buffer or from Texture */\n getData(options: {packed?: boolean; varyingName?: string} = {}) {\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n const data = resourceTransform.getData(options);\n if (data) {\n return data;\n }\n }\n return null;\n }\n\n /** Return framebuffer object if rendering to textures */\n getFramebuffer(): Framebuffer | null {\n return this.textureTransform && this.textureTransform.getFramebuffer();\n }\n\n /** Update some or all buffer/texture bindings. */\n update(props: TransformProps): void {\n if ('elementCount' in props) {\n this.model.setVertexCount(props.elementCount);\n }\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n resourceTransform.update(props);\n }\n }\n\n // Private\n\n _initialize(props: TransformProps): void {\n const {gl} = this;\n this._buildResourceTransforms(gl, props);\n\n props = this._updateModelProps(props);\n this.model = new Model(\n this.device,\n Object.assign({}, props, {\n fs: props.fs || getPassthroughFS({version: getShaderInfo(props.vs).version}),\n id: props.id || 'transform-model',\n drawMode: props.drawMode || GL.POINTS,\n vertexCount: props.elementCount\n })\n );\n\n if (this.bufferTransform) {\n this.bufferTransform.setupResources({model: this.model});\n }\n }\n\n _updateModelProps(props: TransformProps): TransformProps {\n let updatedProps = {...props};\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedProps = resourceTransform.updateModelProps(updatedProps);\n }\n return updatedProps;\n }\n\n _buildResourceTransforms(gl: WebGL2RenderingContext, props: TransformProps) {\n if (canCreateBufferTransform(props)) {\n this.bufferTransform = new BufferTransform(gl, props);\n }\n if (canCreateTextureTransform(props)) {\n this.textureTransform = new TextureTransform(gl, props);\n }\n assert(\n this.bufferTransform || this.textureTransform,\n 'must provide source/feedback buffers or source/target textures'\n );\n }\n\n _updateDrawOptions(options: TransformRunOptions): TransformDrawOptions {\n let updatedOpts = {...options};\n const resourceTransforms = [this.bufferTransform, this.textureTransform].filter(Boolean);\n for (const resourceTransform of resourceTransforms) {\n updatedOpts = Object.assign(updatedOpts, resourceTransform.getDrawOptions(updatedOpts));\n }\n return updatedOpts;\n }\n}\n\n// Helper Methods\n\nfunction canCreateBufferTransform(props: TransformProps): boolean {\n const canCreate = !isObjectEmpty(props.feedbackBuffers) ||\n !isObjectEmpty(props.feedbackMap) ||\n (props.varyings && props.varyings.length > 0);\n return Boolean(canCreate);\n}\n\nfunction canCreateTextureTransform(props: TransformProps): boolean {\n const canCreate =\n !isObjectEmpty(props._sourceTextures) ||\n props._targetTexture ||\n props._targetTextureVarying\n return canCreate;\n}\n"],"file":"transform.js"}
@@ -0,0 +1,5 @@
1
+ import Model, { ModelProps } from '../lib/model';
2
+ export default class ClipSpace extends Model {
3
+ constructor(gl: WebGLRenderingContext, opts?: ModelProps);
4
+ }
5
+ //# sourceMappingURL=clip-space.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clip-space.d.ts","sourceRoot":"","sources":["../../src/utils/clip-space.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAwB/C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,KAAK;gBAC9B,EAAE,EAAE,qBAAqB,EAAE,IAAI,CAAC,EAAE,UAAU;CAoBzD"}
@@ -1,21 +1,7 @@
1
+ import GL from '@luma.gl/constants';
1
2
  import Model from '../lib/model';
2
3
  import Geometry from '../geometry/geometry';
3
- const CLIPSPACE_VERTEX_SHADER = `\
4
- attribute vec2 aClipSpacePosition;
5
- attribute vec2 aTexCoord;
6
- attribute vec2 aCoordinate;
7
-
8
- varying vec2 position;
9
- varying vec2 coordinate;
10
- varying vec2 uv;
11
-
12
- void main(void) {
13
- gl_Position = vec4(aClipSpacePosition, 0., 1.);
14
- position = aClipSpacePosition;
15
- coordinate = aCoordinate;
16
- uv = aTexCoord;
17
- }
18
- `;
4
+ const CLIPSPACE_VERTEX_SHADER = "attribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n";
19
5
  const POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];
20
6
  export default class ClipSpace extends Model {
21
7
  constructor(gl, opts) {
@@ -23,7 +9,7 @@ export default class ClipSpace extends Model {
23
9
  super(gl, Object.assign({}, opts, {
24
10
  vs: CLIPSPACE_VERTEX_SHADER,
25
11
  geometry: new Geometry({
26
- drawMode: 5,
12
+ drawMode: GL.TRIANGLE_STRIP,
27
13
  vertexCount: 4,
28
14
  attributes: {
29
15
  aClipSpacePosition: {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/clip-space.ts"],"names":["GL","Model","Geometry","CLIPSPACE_VERTEX_SHADER","POSITIONS","ClipSpace","constructor","gl","opts","TEX_COORDS","map","coord","Object","assign","vs","geometry","drawMode","TRIANGLE_STRIP","vertexCount","attributes","aClipSpacePosition","size","value","Float32Array","aTexCoord","aCoordinate","setVertexCount"],"mappings":"AACA,OAAOA,EAAP,MAAe,oBAAf;AACA,OAAOC,KAAP,MAAgC,cAAhC;AACA,OAAOC,QAAP,MAAqB,sBAArB;AAEA,MAAMC,uBAAuB,oUAA7B;AAkBA,MAAMC,SAAS,GAAG,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,EAAY,CAAC,CAAb,EAAgB,CAAC,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;AAGA,eAAe,MAAMC,SAAN,SAAwBJ,KAAxB,CAA8B;AAC3CK,EAAAA,WAAW,CAACC,EAAD,EAA4BC,IAA5B,EAA+C;AACxD,UAAMC,UAAU,GAAGL,SAAS,CAACM,GAAV,CAAeC,KAAD,IAAYA,KAAK,KAAK,CAAC,CAAX,GAAe,CAAf,GAAmBA,KAA7C,CAAnB;AAEA,UACEJ,EADF,EAEEK,MAAM,CAACC,MAAP,CAAc,EAAd,EAAkBL,IAAlB,EAAwB;AACtBM,MAAAA,EAAE,EAAEX,uBADkB;AAEtBY,MAAAA,QAAQ,EAAE,IAAIb,QAAJ,CAAa;AACrBc,QAAAA,QAAQ,EAAEhB,EAAE,CAACiB,cADQ;AAErBC,QAAAA,WAAW,EAAE,CAFQ;AAGrBC,QAAAA,UAAU,EAAE;AACVC,UAAAA,kBAAkB,EAAE;AAACC,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBnB,SAAjB;AAAjB,WADV;AAEVoB,UAAAA,SAAS,EAAE;AAACH,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB,WAFD;AAGVgB,UAAAA,WAAW,EAAE;AAACJ,YAAAA,IAAI,EAAE,CAAP;AAAUC,YAAAA,KAAK,EAAE,IAAIC,YAAJ,CAAiBd,UAAjB;AAAjB;AAHH;AAHS,OAAb;AAFY,KAAxB,CAFF;AAeA,SAAKiB,cAAL,CAAoB,CAApB;AACD;;AApB0C","sourcesContent":["// ClipSpace\nimport GL from '@luma.gl/constants';\nimport Model, {ModelProps} from '../lib/model';\nimport Geometry from '../geometry/geometry';\n\nconst CLIPSPACE_VERTEX_SHADER = `\\\nattribute vec2 aClipSpacePosition;\nattribute vec2 aTexCoord;\nattribute vec2 aCoordinate;\n\nvarying vec2 position;\nvarying vec2 coordinate;\nvarying vec2 uv;\n\nvoid main(void) {\n gl_Position = vec4(aClipSpacePosition, 0., 1.);\n position = aClipSpacePosition;\n coordinate = aCoordinate;\n uv = aTexCoord;\n}\n`;\n\n/* eslint-disable indent, no-multi-spaces */\nconst POSITIONS = [-1, -1, 1, -1, -1, 1, 1, 1];\n\n\nexport default class ClipSpace extends Model {\n constructor(gl: WebGLRenderingContext, opts?: ModelProps) {\n const TEX_COORDS = POSITIONS.map((coord) => (coord === -1 ? 0 : coord));\n\n super(\n gl,\n Object.assign({}, opts, {\n vs: CLIPSPACE_VERTEX_SHADER,\n geometry: new Geometry({\n drawMode: GL.TRIANGLE_STRIP,\n vertexCount: 4,\n attributes: {\n aClipSpacePosition: {size: 2, value: new Float32Array(POSITIONS)},\n aTexCoord: {size: 2, value: new Float32Array(TEX_COORDS)},\n aCoordinate: {size: 2, value: new Float32Array(TEX_COORDS)}\n }\n })\n })\n );\n this.setVertexCount(4);\n }\n}\n"],"file":"clip-space.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luma.gl/engine",
3
- "version": "8.5.8",
3
+ "version": "8.6.0-alpha.2",
4
4
  "description": "WebGL2 Components for High Performance Rendering and Computation",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -16,9 +16,9 @@
16
16
  "animation",
17
17
  "3d"
18
18
  ],
19
- "types": "src/index.d.ts",
20
- "main": "dist/es5/index.js",
21
- "module": "dist/esm/index.js",
19
+ "types": "src/index.ts",
20
+ "main": "dist/index.js",
21
+ "module": "dist/index.js",
22
22
  "files": [
23
23
  "src",
24
24
  "dist",
@@ -26,17 +26,17 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "scripts": {
29
- "pre-build": "npm run build-bundle && npm run build-bundle -- --env.dev",
29
+ "pre-build": "npm run build-bundle",
30
30
  "build-bundle": "webpack --display=minimal --config ../../scripts/bundle.config.js"
31
31
  },
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.0.0",
34
- "@luma.gl/constants": "8.5.8",
35
- "@luma.gl/gltools": "8.5.8",
36
- "@luma.gl/shadertools": "8.5.8",
37
- "@luma.gl/webgl": "8.5.8",
34
+ "@luma.gl/constants": "8.6.0-alpha.2",
35
+ "@luma.gl/shadertools": "8.6.0-alpha.2",
36
+ "@luma.gl/webgl": "8.6.0-alpha.2",
38
37
  "@math.gl/core": "^3.5.0",
39
- "probe.gl": "^3.4.0"
38
+ "@probe.gl/log": "3.5.0-alpha.5",
39
+ "@probe.gl/stats": "3.5.0-alpha.5"
40
40
  },
41
- "gitHead": "ec6897d6a3df73e30a4f31be904b2fba4fcac191"
41
+ "gitHead": "bdcebda76c1b4e47b127cdbd3f426ea6cbae44f1"
42
42
  }
@@ -1,18 +1,20 @@
1
- /** @type {import('@luma.gl/engine').KeyFrames} */
1
+ // keyframes
2
+ export type KeyFrame<T> = [number, T];
2
3
 
3
- export class KeyFrames {
4
- constructor(keyFrames) {
5
- this._lastTime = -1;
6
- this.startIndex = -1;
7
- this.endIndex = -1;
8
- this.factor = 0;
9
- this.times = [];
10
- this.values = [];
4
+ export class KeyFrames<T = number> {
5
+ startIndex: number = -1;
6
+ endIndex: number = -1;
7
+ factor: number = 0;
8
+ times: number[] = [];
9
+ values: T[] = [];
10
+ private _lastTime = -1;
11
+
12
+ constructor(keyFrames: KeyFrame<T>[]) {
11
13
  this.setKeyFrames(keyFrames);
12
14
  this.setTime(0);
13
15
  }
14
16
 
15
- setKeyFrames(keyFrames) {
17
+ setKeyFrames(keyFrames: KeyFrame<T>[]): void {
16
18
  const numKeys = keyFrames.length;
17
19
  this.times.length = numKeys;
18
20
  this.values.length = numKeys;
@@ -25,7 +27,7 @@ export class KeyFrames {
25
27
  this._calculateKeys(this._lastTime);
26
28
  }
27
29
 
28
- setTime(time) {
30
+ setTime(time: number): void {
29
31
  time = Math.max(0, time);
30
32
 
31
33
  if (time !== this._lastTime) {
@@ -34,23 +36,23 @@ export class KeyFrames {
34
36
  }
35
37
  }
36
38
 
37
- getStartTime() {
39
+ getStartTime(): number {
38
40
  return this.times[this.startIndex];
39
41
  }
40
42
 
41
- getEndTime() {
43
+ getEndTime(): number {
42
44
  return this.times[this.endIndex];
43
45
  }
44
46
 
45
- getStartData() {
47
+ getStartData(): T {
46
48
  return this.values[this.startIndex];
47
49
  }
48
50
 
49
- getEndData() {
51
+ getEndData(): T {
50
52
  return this.values[this.endIndex];
51
53
  }
52
54
 
53
- _calculateKeys(time) {
55
+ _calculateKeys(time: number): void {
54
56
  let index = 0;
55
57
  const numKeys = this.times.length;
56
58
 
@@ -1,20 +1,56 @@
1
+ // luma.gl, MIT license
2
+
3
+ /**
4
+ * Timeline channel properties
5
+ * @param delay = 0;
6
+ * @param duration = Number.POSITIVE_INFINITY;
7
+ * @param rate = 1
8
+ * @param repeat = 1
9
+ */
10
+ export type ChannelOptions = {
11
+ delay?: number
12
+ duration?: number
13
+ rate?: number
14
+ repeat?: number
15
+ }
16
+
17
+ export type AnimationOptions = {
18
+ setTime: (time: number) => void
19
+ }
20
+
21
+ type Channel = {
22
+ time: number
23
+ delay: number
24
+ duration: number
25
+ rate: number
26
+ repeat: number
27
+ }
28
+
29
+ type Animation = {
30
+ channel: number;
31
+ animation: {
32
+ setTime: (time: number) => void
33
+ }
34
+ }
35
+
1
36
  let channelHandles = 1;
2
37
  let animationHandles = 1;
3
38
 
4
39
  export class Timeline {
40
+ time: number = 0;
41
+ channels = new Map<number, Channel>();
42
+ animations = new Map<number, Animation>();
43
+ playing: boolean = false;
44
+ lastEngineTime: number = -1;
45
+
5
46
  constructor() {
6
- this.time = 0;
7
- this.channels = new Map();
8
- this.animations = new Map();
9
- this.playing = false;
10
- this.lastEngineTime = -1;
11
47
  }
12
48
 
13
- addChannel(props) {
49
+ addChannel(props: ChannelOptions): number {
14
50
  const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;
15
51
 
16
52
  const handle = channelHandles++;
17
- const channel = {
53
+ const channel: Channel = {
18
54
  time: 0,
19
55
  delay,
20
56
  duration,
@@ -27,7 +63,7 @@ export class Timeline {
27
63
  return handle;
28
64
  }
29
65
 
30
- removeChannel(handle) {
66
+ removeChannel(handle: number): void {
31
67
  this.channels.delete(handle);
32
68
 
33
69
  for (const [animationHandle, animation] of this.animations) {
@@ -37,7 +73,7 @@ export class Timeline {
37
73
  }
38
74
  }
39
75
 
40
- isFinished(handle) {
76
+ isFinished(handle: number): boolean {
41
77
  const channel = this.channels.get(handle);
42
78
  if (channel === undefined) {
43
79
  return false;
@@ -46,7 +82,7 @@ export class Timeline {
46
82
  return this.time >= channel.delay + channel.duration * channel.repeat;
47
83
  }
48
84
 
49
- getTime(handle) {
85
+ getTime(handle?: number): number {
50
86
  if (handle === undefined) {
51
87
  return this.time;
52
88
  }
@@ -60,7 +96,7 @@ export class Timeline {
60
96
  return channel.time;
61
97
  }
62
98
 
63
- setTime(time) {
99
+ setTime(time: number): void {
64
100
  this.time = Math.max(0, time);
65
101
 
66
102
  const channels = this.channels.values();
@@ -75,20 +111,20 @@ export class Timeline {
75
111
  }
76
112
  }
77
113
 
78
- play() {
114
+ play(): void {
79
115
  this.playing = true;
80
116
  }
81
117
 
82
- pause() {
118
+ pause(): void {
83
119
  this.playing = false;
84
120
  this.lastEngineTime = -1;
85
121
  }
86
122
 
87
- reset() {
123
+ reset(): void {
88
124
  this.setTime(0);
89
125
  }
90
126
 
91
- attachAnimation(animation, channelHandle) {
127
+ attachAnimation(animation: AnimationOptions, channelHandle: number): number {
92
128
  const animationHandle = animationHandles++;
93
129
 
94
130
  this.animations.set(animationHandle, {
@@ -101,11 +137,11 @@ export class Timeline {
101
137
  return animationHandle;
102
138
  }
103
139
 
104
- detachAnimation(handle) {
140
+ detachAnimation(handle: number): void {
105
141
  this.animations.delete(handle);
106
142
  }
107
143
 
108
- update(engineTime) {
144
+ update(engineTime: number): void {
109
145
  if (this.playing) {
110
146
  if (this.lastEngineTime === -1) {
111
147
  this.lastEngineTime = engineTime;
@@ -115,7 +151,7 @@ export class Timeline {
115
151
  }
116
152
  }
117
153
 
118
- _setChannelTime(channel, time) {
154
+ _setChannelTime(channel: Channel, time: number): void {
119
155
  const offsetTime = time - channel.delay;
120
156
  const totalDuration = channel.duration * channel.repeat;
121
157
  // Note(Tarek): Don't loop on final repeat.
package/src/bundle.ts ADDED
@@ -0,0 +1,4 @@
1
+ // @ts-nocheck
2
+ const moduleExports = require('./index');
3
+ globalThis.luma = globalThis.luma || {};
4
+ module.exports = Object.assign(globalThis.luma, moduleExports);
@@ -1,8 +1,14 @@
1
- import TruncatedConeGeometry from './truncated-cone-geometry';
1
+ import {TruncatedConeGeometry} from './truncated-cone-geometry';
2
2
  import {uid} from '@luma.gl/webgl';
3
3
 
4
- export default class ConeGeometry extends TruncatedConeGeometry {
5
- constructor(props = {}) {
4
+ export type ConeGeometryProps = {
5
+ id?: string;
6
+ radius?: number;
7
+ cap?: boolean;
8
+ };
9
+
10
+ export class ConeGeometry extends TruncatedConeGeometry {
11
+ constructor(props: ConeGeometryProps = {}) {
6
12
  const {id = uid('cone-geometry'), radius = 1, cap = true} = props;
7
13
  super({
8
14
  ...props,
@@ -1,6 +1,23 @@
1
1
  import Geometry from '../geometry/geometry';
2
2
  import {uid} from '@luma.gl/webgl';
3
3
 
4
+ export type CubeGeometryProps = {
5
+ id?: string;
6
+ attributes?
7
+ };
8
+
9
+ export class CubeGeometry extends Geometry {
10
+ constructor(props: CubeGeometryProps = {}) {
11
+ const {id = uid('cube-geometry')} = props;
12
+ super({
13
+ ...props,
14
+ id,
15
+ indices: {size: 1, value: new Uint16Array(CUBE_INDICES)},
16
+ attributes: {...ATTRIBUTES, ...props.attributes}
17
+ });
18
+ }
19
+ }
20
+
4
21
  // prettier-ignore
5
22
  const CUBE_INDICES = new Uint16Array([
6
23
  0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13,
@@ -55,15 +72,3 @@ const ATTRIBUTES = {
55
72
  NORMAL: {size: 3, value: new Float32Array(CUBE_NORMALS)},
56
73
  TEXCOORD_0: {size: 2, value: new Float32Array(CUBE_TEX_COORDS)}
57
74
  };
58
-
59
- export default class CubeGeometry extends Geometry {
60
- constructor(props = {}) {
61
- const {id = uid('cube-geometry')} = props;
62
- super({
63
- ...props,
64
- id,
65
- indices: {size: 1, value: new Uint16Array(CUBE_INDICES)},
66
- attributes: {...ATTRIBUTES, ...props.attributes}
67
- });
68
- }
69
- }
@@ -0,0 +1,20 @@
1
+ import {TruncatedConeGeometry} from './truncated-cone-geometry';
2
+ import {uid} from '@luma.gl/webgl';
3
+
4
+ export type CylinderGeometryProps = {
5
+ id?: string;
6
+ radius?: number;
7
+ attributes?
8
+ };
9
+
10
+ export class CylinderGeometry extends TruncatedConeGeometry {
11
+ constructor(props: CylinderGeometryProps = {}) {
12
+ const {id = uid('cylinder-geometry'), radius = 1} = props;
13
+ super({
14
+ ...props,
15
+ id,
16
+ bottomRadius: radius,
17
+ topRadius: radius
18
+ });
19
+ }
20
+ }
@@ -7,8 +7,15 @@ import {uid} from '@luma.gl/webgl';
7
7
  const ICO_POSITIONS = [-1, 0, 0, 0, 1, 0, 0, 0, -1, 0, 0, 1, 0, -1, 0, 1, 0, 0];
8
8
  const ICO_INDICES = [3, 4, 5, 3, 5, 1, 3, 1, 0, 3, 0, 4, 4, 0, 2, 4, 2, 5, 2, 0, 1, 5, 2, 1];
9
9
 
10
- export default class IcoSphereGeometry extends Geometry {
11
- constructor(props = {}) {
10
+ export type IcoSphereGeometryProps = {
11
+ id?: string;
12
+ radius?: number;
13
+ iterations?: number;
14
+ attributes?
15
+ };
16
+
17
+ export class IcoSphereGeometry extends Geometry {
18
+ constructor(props: IcoSphereGeometryProps = {}) {
12
19
  const {id = uid('ico-sphere-geometry')} = props;
13
20
  const {indices, attributes} = tesselateIcosaHedron(props);
14
21
  super({
@@ -20,7 +27,7 @@ export default class IcoSphereGeometry extends Geometry {
20
27
  }
21
28
  }
22
29
 
23
- function tesselateIcosaHedron(props) {
30
+ function tesselateIcosaHedron(props: IcoSphereGeometryProps) {
24
31
  const {iterations = 0} = props;
25
32
 
26
33
  const PI = Math.PI;