@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
@@ -2,8 +2,17 @@ import Geometry from '../geometry/geometry';
2
2
  import {unpackIndexedGeometry} from '../geometry/geometry-utils';
3
3
  import {uid} from '@luma.gl/webgl';
4
4
 
5
- export default class PlaneGeometry extends Geometry {
6
- constructor(props = {}) {
5
+ export type PlaneGeometryProps = {
6
+ id?: string;
7
+ radius?: number;
8
+ attributes?
9
+ };
10
+
11
+ // Primitives inspired by TDL http://code.google.com/p/webglsamples/,
12
+ // copyright 2011 Google Inc. new BSD License
13
+ // (http://www.opensource.org/licenses/bsd-license.php).
14
+ export class PlaneGeometry extends Geometry {
15
+ constructor(props: PlaneGeometryProps = {}) {
7
16
  const {id = uid('plane-geometry')} = props;
8
17
 
9
18
  const {indices, attributes} = tesselatePlane(props);
@@ -16,10 +25,6 @@ export default class PlaneGeometry extends Geometry {
16
25
  }
17
26
  }
18
27
 
19
- // Primitives inspired by TDL http://code.google.com/p/webglsamples/,
20
- // copyright 2011 Google Inc. new BSD License
21
- // (http://www.opensource.org/licenses/bsd-license.php).
22
- /* eslint-disable max-statements, complexity */
23
28
  /* eslint-disable complexity, max-statements */
24
29
  function tesselatePlane(props) {
25
30
  const {type = 'x,y', offset = 0, flipCull = false, unpack = false} = props;
@@ -1,8 +1,19 @@
1
1
  import Geometry from '../geometry/geometry';
2
2
  import {uid} from '@luma.gl/webgl';
3
3
 
4
- export default class SphereGeometry extends Geometry {
5
- constructor(props = {}) {
4
+ export type SphereGeometryProps = {
5
+ id?: string;
6
+ radius?: number;
7
+ nlat?: number;
8
+ nlong?: number;
9
+ attributes?
10
+ };
11
+
12
+ // Primitives inspired by TDL http://code.google.com/p/webglsamples/,
13
+ // copyright 2011 Google Inc. new BSD License
14
+ // (http://www.opensource.org/licenses/bsd-license.php).
15
+ export class SphereGeometry extends Geometry {
16
+ constructor(props: SphereGeometryProps = {}) {
6
17
  const {id = uid('sphere-geometry')} = props;
7
18
  const {indices, attributes} = tesselateSphere(props);
8
19
  super({
@@ -14,13 +25,9 @@ export default class SphereGeometry extends Geometry {
14
25
  }
15
26
  }
16
27
 
17
- // Primitives inspired by TDL http://code.google.com/p/webglsamples/,
18
- // copyright 2011 Google Inc. new BSD License
19
- // (http://www.opensource.org/licenses/bsd-license.php).
20
28
  /* eslint-disable max-statements, complexity */
21
- function tesselateSphere(props) {
29
+ function tesselateSphere(props: SphereGeometryProps) {
22
30
  const {nlat = 10, nlong = 10} = props;
23
- let {radius = 1} = props;
24
31
 
25
32
  const startLat = 0;
26
33
  const endLat = Math.PI;
@@ -30,10 +37,7 @@ function tesselateSphere(props) {
30
37
  const longRange = endLong - startLong;
31
38
  const numVertices = (nlat + 1) * (nlong + 1);
32
39
 
33
- if (typeof radius === 'number') {
34
- const value = radius;
35
- radius = (n1, n2, n3, u, v) => value;
36
- }
40
+ const radius = (n1, n2, n3, u, v) => props.radius || 1;
37
41
 
38
42
  const positions = new Float32Array(numVertices * 3);
39
43
  const normals = new Float32Array(numVertices * 3);
@@ -7,8 +7,20 @@ const INDEX_OFFSETS = {
7
7
  z: [1, 2, 0]
8
8
  };
9
9
 
10
- export default class TruncatedConeGeometry extends Geometry {
11
- constructor(props = {}) {
10
+ export type TruncatedConeGeometryProps = {
11
+ id?: string;
12
+ topRadius?: number;
13
+ bottomRadius?: number;
14
+ topCap?: boolean;
15
+ bottomCap?: boolean;
16
+ attributes?
17
+ };
18
+
19
+ // Primitives inspired by TDL http://code.google.com/p/webglsamples/,
20
+ // copyright 2011 Google Inc. new BSD License
21
+ // (http://www.opensource.org/licenses/bsd-license.php).
22
+ export class TruncatedConeGeometry extends Geometry {
23
+ constructor(props: TruncatedConeGeometryProps = {}) {
12
24
  const {id = uid('truncated-code-geometry')} = props;
13
25
  const {indices, attributes} = tesselateTruncatedCone(props);
14
26
  super({
@@ -20,9 +32,6 @@ export default class TruncatedConeGeometry extends Geometry {
20
32
  }
21
33
  }
22
34
 
23
- // Primitives inspired by TDL http://code.google.com/p/webglsamples/,
24
- // copyright 2011 Google Inc. new BSD License
25
- // (http://www.opensource.org/licenses/bsd-license.php).
26
35
  /* eslint-disable max-statements, complexity */
27
36
  function tesselateTruncatedCone(props) {
28
37
  const {
@@ -1,3 +1,5 @@
1
+ import type Geometry from './geometry';
2
+
1
3
  export function unpackIndexedGeometry(geometry) {
2
4
  const {indices, attributes} = geometry;
3
5
  if (!indices) {
@@ -1,57 +1,70 @@
1
+ // luma.gl, MIT license
2
+ import GL from '@luma.gl/constants';
1
3
  import {uid, assert} from '@luma.gl/webgl';
2
4
 
3
- // Rendering primitives - specify how to extract primitives from vertices.
4
- // NOTE: These are numerically identical to the corresponding WebGL/OpenGL constants
5
- export const DRAW_MODE = {
6
- POINTS: 0x0000, // draw single points.
7
- LINES: 0x0001, // draw lines. Each vertex connects to the one after it.
8
- LINE_LOOP: 0x0002, // draw lines. Each set of two vertices is treated as a separate line segment.
9
- LINE_STRIP: 0x0003, // draw a connected group of line segments from the first vertex to the last
10
- TRIANGLES: 0x0004, // draw triangles. Each set of three vertices creates a separate triangle.
11
- TRIANGLE_STRIP: 0x0005, // draw a connected group of triangles.
12
- TRIANGLE_FAN: 0x0006 // draw a connected group of triangles.
13
- // Each vertex connects to the previous and the first vertex in the fan.
5
+ /**
6
+ * Rendering primitives - "opology" specifies how to extract primitives from vertices.
7
+ */
8
+ export type Topology =
9
+ GL.POINTS | // draw single points.
10
+ GL.LINES | // draw lines. Each vertex connects to the one after it.
11
+ GL.LINE_LOOP | // draw lines. Each set of two vertices is treated as a separate line segment.
12
+ GL.LINE_STRIP | // draw a connected group of line segments from the first vertex to the last
13
+ GL.TRIANGLES | // draw triangles. Each set of three vertices creates a separate triangle.
14
+ GL.TRIANGLE_STRIP | // draw a connected group of triangles.
15
+ GL.TRIANGLE_FAN // draw a connected group of triangles.
16
+ ;
17
+
18
+ export type GeometryProps = {
19
+ id?: string;
20
+ drawMode?: Topology,
21
+ attributes?: {},
22
+ indices?;
23
+ vertexCount?: number
14
24
  };
15
25
 
16
26
  export default class Geometry {
17
- static get DRAW_MODE() {
18
- return DRAW_MODE;
19
- }
20
-
21
- constructor(props = {}) {
27
+ /** @deprecated */
28
+ static DRAW_MODE = {
29
+ POINTS: GL.POINTS, // draw single points.
30
+ LINES: GL.LINES, // draw lines. Each vertex connects to the one after it.
31
+ LINE_LOOP: GL.LINE_LOOP, // draw lines. Each set of two vertices is treated as a separate line segment.
32
+ LINE_STRIP: GL.LINE_STRIP, // draw a connected group of line segments from the first vertex to the last
33
+ TRIANGLES: GL.TRIANGLES, // draw triangles. Each set of three vertices creates a separate triangle.
34
+ TRIANGLE_STRIP: GL.TRIANGLE_STRIP, // draw a connected group of triangles.
35
+ TRIANGLE_FAN: GL.TRIANGLE_FAN // draw a connected group of triangles.
36
+ };
37
+
38
+ readonly id: string;
39
+ readonly drawMode: Topology = GL.TRIANGLES;
40
+
41
+ vertexCount: number;
42
+ attributes = {};
43
+ indices;
44
+ userData: Record<string, any> = {};
45
+
46
+ constructor(props: GeometryProps = {}) {
22
47
  const {
23
48
  id = uid('geometry'),
24
- drawMode = DRAW_MODE.TRIANGLES,
49
+ drawMode = GL.TRIANGLES,
25
50
  attributes = {},
26
51
  indices = null,
27
52
  vertexCount = null
28
53
  } = props;
29
54
 
30
55
  this.id = id;
31
- this.drawMode = drawMode | 0;
32
- this.attributes = {};
33
- this.userData = {};
56
+ this.drawMode = drawMode;
34
57
 
35
58
  this._setAttributes(attributes, indices);
36
59
 
37
60
  this.vertexCount = vertexCount || this._calculateVertexCount(this.attributes, this.indices);
38
-
39
- // stubRemovedMethods(this, [
40
- // 'setNeedsRedraw', 'needsRedraw', 'setAttributes'
41
- // ], 'Immutable');
42
-
43
- // stubRemovedMethods(this, [
44
- // 'hasAttribute', 'getAttribute', 'getArray'
45
- // ], 'Use geometry.attributes and geometry.indices');
46
-
47
- // deprecateMethods(this, ['getAttributes'])
48
61
  }
49
62
 
50
63
  get mode() {
51
64
  return this.drawMode;
52
65
  }
53
66
 
54
- getVertexCount() {
67
+ getVertexCount(): number {
55
68
  return this.vertexCount;
56
69
  }
57
70
 
@@ -62,7 +75,7 @@ export default class Geometry {
62
75
 
63
76
  // PRIVATE
64
77
 
65
- _print(attributeName) {
78
+ _print(attributeName): string {
66
79
  return `Geometry ${this.id} attribute ${attributeName}`;
67
80
  }
68
81
 
@@ -71,7 +84,7 @@ export default class Geometry {
71
84
  // type: indices, vertices, uvs
72
85
  // size: elements per vertex
73
86
  // target: WebGL buffer type (string or constant)
74
- _setAttributes(attributes, indices) {
87
+ _setAttributes(attributes, indices): this {
75
88
  if (indices) {
76
89
  this.indices = ArrayBuffer.isView(indices) ? {value: indices, size: 1} : indices;
77
90
  }
@@ -108,7 +121,7 @@ export default class Geometry {
108
121
  return this;
109
122
  }
110
123
 
111
- _calculateVertexCount(attributes, indices) {
124
+ _calculateVertexCount(attributes, indices): number {
112
125
  if (indices) {
113
126
  return indices.value.length;
114
127
  }
package/src/index.ts ADDED
@@ -0,0 +1,35 @@
1
+ // CORE
2
+ export type {AnimationLoopProps, AnimationProps} from './lib/animation-loop';
3
+ export {default as AnimationLoop} from './lib/animation-loop';
4
+ export {RenderLoop} from './lib/render-loop';
5
+
6
+ export type {ModelProps} from './lib/model';
7
+ export {default as Model} from './lib/model';
8
+ export {default as ProgramManager} from './lib/program-manager';
9
+ export {default as Transform} from './transform/transform';
10
+
11
+ // Geometries
12
+ export {default as Geometry} from './geometry/geometry';
13
+
14
+ // Primitives
15
+ export type {ConeGeometryProps} from './geometries/cone-geometry';
16
+ export {ConeGeometry} from './geometries/cone-geometry';
17
+ export type {CubeGeometryProps} from './geometries/cube-geometry';
18
+ export {CubeGeometry} from './geometries/cube-geometry';
19
+ export type {CylinderGeometryProps} from './geometries/cylinder-geometry';
20
+ export {CylinderGeometry} from './geometries/cylinder-geometry';
21
+ export type {IcoSphereGeometryProps} from './geometries/ico-sphere-geometry';
22
+ export {IcoSphereGeometry} from './geometries/ico-sphere-geometry';
23
+ export type {PlaneGeometryProps} from './geometries/plane-geometry';
24
+ export {PlaneGeometry} from './geometries/plane-geometry';
25
+ export type {SphereGeometryProps} from './geometries/sphere-geometry';
26
+ export {SphereGeometry} from './geometries/sphere-geometry';
27
+ export type {TruncatedConeGeometryProps} from './geometries/truncated-cone-geometry';
28
+ export {TruncatedConeGeometry} from './geometries/truncated-cone-geometry';
29
+
30
+ // Animation
31
+ export {Timeline} from './animation/timeline';
32
+ export {KeyFrames} from './animation/key-frames';
33
+
34
+ // Utils
35
+ export {default as ClipSpace} from './utils/clip-space';