@luma.gl/engine 8.5.10 → 8.6.0-alpha.4

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 (271) hide show
  1. package/LICENSE +8 -1
  2. package/dist/animation/key-frames.d.ts +18 -0
  3. package/dist/animation/key-frames.d.ts.map +1 -0
  4. package/dist/{esm/animation → animation}/key-frames.js +13 -6
  5. package/dist/animation/key-frames.js.map +1 -0
  6. package/dist/animation/timeline.d.ts +51 -0
  7. package/dist/animation/timeline.d.ts.map +1 -0
  8. package/dist/{esm/animation → animation}/timeline.js +10 -5
  9. package/dist/animation/timeline.js.map +1 -0
  10. package/dist/bundle.d.ts +2 -0
  11. package/dist/bundle.d.ts.map +1 -0
  12. package/dist/bundle.js +5 -0
  13. package/dist/bundle.js.map +1 -0
  14. package/dist/geometries/cone-geometry.d.ts +10 -0
  15. package/dist/geometries/cone-geometry.d.ts.map +1 -0
  16. package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
  17. package/dist/geometries/cone-geometry.js.map +1 -0
  18. package/dist/geometries/cube-geometry.d.ts +9 -0
  19. package/dist/geometries/cube-geometry.d.ts.map +1 -0
  20. package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
  21. package/dist/geometries/cube-geometry.js.map +1 -0
  22. package/dist/geometries/cylinder-geometry.d.ts +10 -0
  23. package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
  24. package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
  25. package/dist/geometries/cylinder-geometry.js.map +1 -0
  26. package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
  27. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
  28. package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
  29. package/dist/geometries/ico-sphere-geometry.js.map +1 -0
  30. package/dist/geometries/plane-geometry.d.ts +10 -0
  31. package/dist/geometries/plane-geometry.d.ts.map +1 -0
  32. package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
  33. package/dist/geometries/plane-geometry.js.map +1 -0
  34. package/dist/geometries/sphere-geometry.d.ts +12 -0
  35. package/dist/geometries/sphere-geometry.d.ts.map +1 -0
  36. package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
  37. package/dist/geometries/sphere-geometry.js.map +1 -0
  38. package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
  39. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
  40. package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
  41. package/dist/geometries/truncated-cone-geometry.js.map +1 -0
  42. package/dist/geometry/geometry-utils.d.ts +2 -0
  43. package/dist/geometry/geometry-utils.d.ts.map +1 -0
  44. package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
  45. package/dist/geometry/geometry-utils.js.map +1 -0
  46. package/dist/geometry/geometry.d.ts +44 -0
  47. package/dist/geometry/geometry.d.ts.map +1 -0
  48. package/dist/{esm/geometry → geometry}/geometry.js +28 -19
  49. package/dist/geometry/geometry.js.map +1 -0
  50. package/dist/index.d.ts +26 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +17 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/lib/animation-loop.d.ts +149 -0
  55. package/dist/lib/animation-loop.d.ts.map +1 -0
  56. package/dist/{esm/lib → lib}/animation-loop.js +190 -143
  57. package/dist/lib/animation-loop.js.map +1 -0
  58. package/dist/lib/model-utils.d.ts +4 -0
  59. package/dist/lib/model-utils.d.ts.map +1 -0
  60. package/dist/{esm/lib → lib}/model-utils.js +3 -2
  61. package/dist/lib/model-utils.js.map +1 -0
  62. package/dist/lib/model.d.ts +111 -0
  63. package/dist/lib/model.d.ts.map +1 -0
  64. package/dist/{esm/lib → lib}/model.js +76 -20
  65. package/dist/lib/model.js.map +1 -0
  66. package/dist/lib/program-manager.d.ts +39 -0
  67. package/dist/lib/program-manager.d.ts.map +1 -0
  68. package/dist/{esm/lib → lib}/program-manager.js +29 -18
  69. package/dist/lib/program-manager.js.map +1 -0
  70. package/dist/lib/render-loop.d.ts +27 -0
  71. package/dist/lib/render-loop.d.ts.map +1 -0
  72. package/dist/lib/render-loop.js +56 -0
  73. package/dist/lib/render-loop.js.map +1 -0
  74. package/dist/transform/buffer-transform.d.ts +36 -0
  75. package/dist/transform/buffer-transform.d.ts.map +1 -0
  76. package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
  77. package/dist/transform/buffer-transform.js.map +1 -0
  78. package/dist/transform/texture-transform.d.ts +57 -0
  79. package/dist/transform/texture-transform.d.ts.map +1 -0
  80. package/dist/{esm/transform → transform}/texture-transform.js +48 -16
  81. package/dist/transform/texture-transform.js.map +1 -0
  82. package/dist/transform/transform-shader-utils.d.ts +26 -0
  83. package/dist/transform/transform-shader-utils.d.ts.map +1 -0
  84. package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
  85. package/dist/transform/transform-shader-utils.js.map +1 -0
  86. package/dist/transform/transform-types.d.ts +44 -0
  87. package/dist/transform/transform-types.d.ts.map +1 -0
  88. package/dist/transform/transform-types.js +2 -0
  89. package/dist/transform/transform-types.js.map +1 -0
  90. package/dist/transform/transform.d.ts +47 -0
  91. package/dist/transform/transform.d.ts.map +1 -0
  92. package/dist/{esm/transform → transform}/transform.js +63 -43
  93. package/dist/transform/transform.js.map +1 -0
  94. package/dist/utils/clip-space.d.ts +5 -0
  95. package/dist/utils/clip-space.d.ts.map +1 -0
  96. package/dist/{esm/utils → utils}/clip-space.js +3 -17
  97. package/dist/utils/clip-space.js.map +1 -0
  98. package/package.json +11 -11
  99. package/src/animation/{key-frames.js → key-frames.ts} +18 -16
  100. package/src/animation/{timeline.js → timeline.ts} +54 -18
  101. package/src/bundle.ts +4 -0
  102. package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
  103. package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
  104. package/src/geometries/cylinder-geometry.ts +20 -0
  105. package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
  106. package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
  107. package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
  108. package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
  109. package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
  110. package/src/geometry/{geometry.js → geometry.ts} +47 -34
  111. package/src/index.ts +35 -0
  112. package/src/lib/animation-loop.ts +724 -0
  113. package/src/lib/{model-utils.js → model-utils.ts} +2 -2
  114. package/src/lib/{model.js → model.ts} +186 -66
  115. package/src/lib/{program-manager.js → program-manager.ts} +53 -34
  116. package/src/lib/render-loop.ts +56 -0
  117. package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
  118. package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
  119. package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
  120. package/src/transform/transform-types.ts +42 -0
  121. package/src/transform/transform.ts +189 -0
  122. package/src/utils/{clip-space.js → clip-space.ts} +4 -3
  123. package/dist/dist.js +0 -32249
  124. package/dist/dist.min.js +0 -1
  125. package/dist/es5/animation/key-frames.d.ts +0 -19
  126. package/dist/es5/animation/key-frames.js +0 -95
  127. package/dist/es5/animation/key-frames.js.map +0 -1
  128. package/dist/es5/animation/timeline.d.ts +0 -39
  129. package/dist/es5/animation/timeline.js +0 -211
  130. package/dist/es5/animation/timeline.js.map +0 -1
  131. package/dist/es5/bundle.js +0 -9
  132. package/dist/es5/bundle.js.map +0 -1
  133. package/dist/es5/geometries/cone-geometry.d.ts +0 -5
  134. package/dist/es5/geometries/cone-geometry.js +0 -59
  135. package/dist/es5/geometries/cone-geometry.js.map +0 -1
  136. package/dist/es5/geometries/cube-geometry.d.ts +0 -5
  137. package/dist/es5/geometries/cube-geometry.js +0 -75
  138. package/dist/es5/geometries/cube-geometry.js.map +0 -1
  139. package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
  140. package/dist/es5/geometries/cylinder-geometry.js +0 -55
  141. package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
  142. package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
  143. package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
  144. package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
  145. package/dist/es5/geometries/index.d.ts +0 -7
  146. package/dist/es5/geometries/index.js +0 -64
  147. package/dist/es5/geometries/index.js.map +0 -1
  148. package/dist/es5/geometries/plane-geometry.d.ts +0 -5
  149. package/dist/es5/geometries/plane-geometry.js +0 -168
  150. package/dist/es5/geometries/plane-geometry.js.map +0 -1
  151. package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
  152. package/dist/es5/geometries/sphere-geometry.js +0 -152
  153. package/dist/es5/geometries/sphere-geometry.js.map +0 -1
  154. package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
  155. package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
  156. package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
  157. package/dist/es5/geometry/geometry-utils.d.ts +0 -1
  158. package/dist/es5/geometry/geometry-utils.js +0 -49
  159. package/dist/es5/geometry/geometry-utils.js.map +0 -1
  160. package/dist/es5/geometry/geometry.d.ts +0 -25
  161. package/dist/es5/geometry/geometry.js +0 -150
  162. package/dist/es5/geometry/geometry.js.map +0 -1
  163. package/dist/es5/index.d.ts +0 -19
  164. package/dist/es5/index.js +0 -128
  165. package/dist/es5/index.js.map +0 -1
  166. package/dist/es5/lib/animation-loop.d.ts +0 -158
  167. package/dist/es5/lib/animation-loop.js +0 -642
  168. package/dist/es5/lib/animation-loop.js.map +0 -1
  169. package/dist/es5/lib/model-utils.d.ts +0 -3
  170. package/dist/es5/lib/model-utils.js +0 -110
  171. package/dist/es5/lib/model-utils.js.map +0 -1
  172. package/dist/es5/lib/model.d.ts +0 -214
  173. package/dist/es5/lib/model.js +0 -584
  174. package/dist/es5/lib/model.js.map +0 -1
  175. package/dist/es5/lib/program-manager.d.ts +0 -79
  176. package/dist/es5/lib/program-manager.js +0 -238
  177. package/dist/es5/lib/program-manager.js.map +0 -1
  178. package/dist/es5/transform/buffer-transform.d.ts +0 -13
  179. package/dist/es5/transform/buffer-transform.js +0 -294
  180. package/dist/es5/transform/buffer-transform.js.map +0 -1
  181. package/dist/es5/transform/resource-transform.d.ts +0 -16
  182. package/dist/es5/transform/texture-transform.d.ts +0 -16
  183. package/dist/es5/transform/texture-transform.js +0 -405
  184. package/dist/es5/transform/texture-transform.js.map +0 -1
  185. package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
  186. package/dist/es5/transform/transform-shader-utils.js +0 -160
  187. package/dist/es5/transform/transform-shader-utils.js.map +0 -1
  188. package/dist/es5/transform/transform.d.ts +0 -33
  189. package/dist/es5/transform/transform.js +0 -274
  190. package/dist/es5/transform/transform.js.map +0 -1
  191. package/dist/es5/utils/clip-space.d.ts +0 -5
  192. package/dist/es5/utils/clip-space.js +0 -72
  193. package/dist/es5/utils/clip-space.js.map +0 -1
  194. package/dist/esm/animation/key-frames.d.ts +0 -19
  195. package/dist/esm/animation/key-frames.js.map +0 -1
  196. package/dist/esm/animation/timeline.d.ts +0 -39
  197. package/dist/esm/animation/timeline.js.map +0 -1
  198. package/dist/esm/bundle.js +0 -7
  199. package/dist/esm/bundle.js.map +0 -1
  200. package/dist/esm/geometries/cone-geometry.d.ts +0 -5
  201. package/dist/esm/geometries/cone-geometry.js.map +0 -1
  202. package/dist/esm/geometries/cube-geometry.d.ts +0 -5
  203. package/dist/esm/geometries/cube-geometry.js.map +0 -1
  204. package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
  205. package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
  206. package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
  207. package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
  208. package/dist/esm/geometries/index.d.ts +0 -7
  209. package/dist/esm/geometries/index.js +0 -8
  210. package/dist/esm/geometries/index.js.map +0 -1
  211. package/dist/esm/geometries/plane-geometry.d.ts +0 -5
  212. package/dist/esm/geometries/plane-geometry.js.map +0 -1
  213. package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
  214. package/dist/esm/geometries/sphere-geometry.js.map +0 -1
  215. package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
  216. package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
  217. package/dist/esm/geometry/geometry-utils.d.ts +0 -1
  218. package/dist/esm/geometry/geometry-utils.js.map +0 -1
  219. package/dist/esm/geometry/geometry.d.ts +0 -25
  220. package/dist/esm/geometry/geometry.js.map +0 -1
  221. package/dist/esm/index.d.ts +0 -19
  222. package/dist/esm/index.js +0 -16
  223. package/dist/esm/index.js.map +0 -1
  224. package/dist/esm/lib/animation-loop.d.ts +0 -158
  225. package/dist/esm/lib/animation-loop.js.map +0 -1
  226. package/dist/esm/lib/model-utils.d.ts +0 -3
  227. package/dist/esm/lib/model-utils.js.map +0 -1
  228. package/dist/esm/lib/model.d.ts +0 -214
  229. package/dist/esm/lib/model.js.map +0 -1
  230. package/dist/esm/lib/program-manager.d.ts +0 -79
  231. package/dist/esm/lib/program-manager.js.map +0 -1
  232. package/dist/esm/transform/buffer-transform.d.ts +0 -13
  233. package/dist/esm/transform/buffer-transform.js.map +0 -1
  234. package/dist/esm/transform/resource-transform.d.ts +0 -16
  235. package/dist/esm/transform/texture-transform.d.ts +0 -16
  236. package/dist/esm/transform/texture-transform.js.map +0 -1
  237. package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
  238. package/dist/esm/transform/transform-shader-utils.js.map +0 -1
  239. package/dist/esm/transform/transform.d.ts +0 -33
  240. package/dist/esm/transform/transform.js.map +0 -1
  241. package/dist/esm/utils/clip-space.d.ts +0 -5
  242. package/dist/esm/utils/clip-space.js.map +0 -1
  243. package/src/animation/key-frames.d.ts +0 -19
  244. package/src/animation/timeline.d.ts +0 -39
  245. package/src/bundle.js +0 -7
  246. package/src/geometries/cone-geometry.d.ts +0 -5
  247. package/src/geometries/cube-geometry.d.ts +0 -5
  248. package/src/geometries/cylinder-geometry.d.ts +0 -5
  249. package/src/geometries/cylinder-geometry.js +0 -14
  250. package/src/geometries/ico-sphere-geometry.d.ts +0 -5
  251. package/src/geometries/index.d.ts +0 -7
  252. package/src/geometries/index.js +0 -7
  253. package/src/geometries/plane-geometry.d.ts +0 -5
  254. package/src/geometries/sphere-geometry.d.ts +0 -5
  255. package/src/geometries/truncated-cone-geometry.d.ts +0 -5
  256. package/src/geometry/geometry-utils.d.ts +0 -1
  257. package/src/geometry/geometry.d.ts +0 -25
  258. package/src/index.d.ts +0 -19
  259. package/src/index.js +0 -22
  260. package/src/lib/animation-loop.d.ts +0 -158
  261. package/src/lib/animation-loop.js +0 -601
  262. package/src/lib/model-utils.d.ts +0 -3
  263. package/src/lib/model.d.ts +0 -214
  264. package/src/lib/program-manager.d.ts +0 -79
  265. package/src/transform/buffer-transform.d.ts +0 -13
  266. package/src/transform/resource-transform.d.ts +0 -16
  267. package/src/transform/texture-transform.d.ts +0 -16
  268. package/src/transform/transform-shader-utils.d.ts +0 -31
  269. package/src/transform/transform.d.ts +0 -33
  270. package/src/transform/transform.js +0 -177
  271. 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';