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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/dist/animation/key-frames.d.ts +18 -0
  2. package/dist/animation/key-frames.d.ts.map +1 -0
  3. package/dist/{esm/animation → animation}/key-frames.js +13 -6
  4. package/dist/animation/key-frames.js.map +1 -0
  5. package/dist/animation/timeline.d.ts +51 -0
  6. package/dist/animation/timeline.d.ts.map +1 -0
  7. package/dist/{esm/animation → animation}/timeline.js +10 -5
  8. package/dist/animation/timeline.js.map +1 -0
  9. package/dist/bundle.d.ts +2 -0
  10. package/dist/bundle.d.ts.map +1 -0
  11. package/dist/bundle.js +5 -0
  12. package/dist/bundle.js.map +1 -0
  13. package/dist/geometries/cone-geometry.d.ts +10 -0
  14. package/dist/geometries/cone-geometry.d.ts.map +1 -0
  15. package/dist/{esm/geometries → geometries}/cone-geometry.js +2 -2
  16. package/dist/geometries/cone-geometry.js.map +1 -0
  17. package/dist/geometries/cube-geometry.d.ts +9 -0
  18. package/dist/geometries/cube-geometry.d.ts.map +1 -0
  19. package/dist/{esm/geometries → geometries}/cube-geometry.js +18 -18
  20. package/dist/geometries/cube-geometry.js.map +1 -0
  21. package/dist/geometries/cylinder-geometry.d.ts +10 -0
  22. package/dist/geometries/cylinder-geometry.d.ts.map +1 -0
  23. package/dist/{esm/geometries → geometries}/cylinder-geometry.js +2 -2
  24. package/dist/geometries/cylinder-geometry.js.map +1 -0
  25. package/dist/geometries/ico-sphere-geometry.d.ts +11 -0
  26. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -0
  27. package/dist/{esm/geometries → geometries}/ico-sphere-geometry.js +2 -2
  28. package/dist/geometries/ico-sphere-geometry.js.map +1 -0
  29. package/dist/geometries/plane-geometry.d.ts +10 -0
  30. package/dist/geometries/plane-geometry.d.ts.map +1 -0
  31. package/dist/{esm/geometries → geometries}/plane-geometry.js +5 -5
  32. package/dist/geometries/plane-geometry.js.map +1 -0
  33. package/dist/geometries/sphere-geometry.d.ts +12 -0
  34. package/dist/geometries/sphere-geometry.d.ts.map +1 -0
  35. package/dist/{esm/geometries → geometries}/sphere-geometry.js +2 -9
  36. package/dist/geometries/sphere-geometry.js.map +1 -0
  37. package/dist/geometries/truncated-cone-geometry.d.ts +13 -0
  38. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -0
  39. package/dist/{esm/geometries → geometries}/truncated-cone-geometry.js +1 -1
  40. package/dist/geometries/truncated-cone-geometry.js.map +1 -0
  41. package/dist/geometry/geometry-utils.d.ts +2 -0
  42. package/dist/geometry/geometry-utils.d.ts.map +1 -0
  43. package/dist/{esm/geometry → geometry}/geometry-utils.js +0 -0
  44. package/dist/geometry/geometry-utils.js.map +1 -0
  45. package/dist/geometry/geometry.d.ts +44 -0
  46. package/dist/geometry/geometry.d.ts.map +1 -0
  47. package/dist/{esm/geometry → geometry}/geometry.js +28 -19
  48. package/dist/geometry/geometry.js.map +1 -0
  49. package/dist/index.d.ts +26 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +17 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/lib/animation-loop.d.ts +149 -0
  54. package/dist/lib/animation-loop.d.ts.map +1 -0
  55. package/dist/{esm/lib → lib}/animation-loop.js +190 -143
  56. package/dist/lib/animation-loop.js.map +1 -0
  57. package/dist/lib/model-utils.d.ts +4 -0
  58. package/dist/lib/model-utils.d.ts.map +1 -0
  59. package/dist/{esm/lib → lib}/model-utils.js +3 -2
  60. package/dist/lib/model-utils.js.map +1 -0
  61. package/dist/lib/model.d.ts +109 -0
  62. package/dist/lib/model.d.ts.map +1 -0
  63. package/dist/{esm/lib → lib}/model.js +76 -20
  64. package/dist/lib/model.js.map +1 -0
  65. package/dist/lib/program-manager.d.ts +39 -0
  66. package/dist/lib/program-manager.d.ts.map +1 -0
  67. package/dist/{esm/lib → lib}/program-manager.js +29 -18
  68. package/dist/lib/program-manager.js.map +1 -0
  69. package/dist/lib/render-loop.d.ts +27 -0
  70. package/dist/lib/render-loop.d.ts.map +1 -0
  71. package/dist/lib/render-loop.js +56 -0
  72. package/dist/lib/render-loop.js.map +1 -0
  73. package/dist/transform/buffer-transform.d.ts +36 -0
  74. package/dist/transform/buffer-transform.d.ts.map +1 -0
  75. package/dist/{esm/transform → transform}/buffer-transform.js +15 -8
  76. package/dist/transform/buffer-transform.js.map +1 -0
  77. package/dist/transform/texture-transform.d.ts +57 -0
  78. package/dist/transform/texture-transform.d.ts.map +1 -0
  79. package/dist/{esm/transform → transform}/texture-transform.js +48 -16
  80. package/dist/transform/texture-transform.js.map +1 -0
  81. package/dist/transform/transform-shader-utils.d.ts +26 -0
  82. package/dist/transform/transform-shader-utils.d.ts.map +1 -0
  83. package/dist/{esm/transform → transform}/transform-shader-utils.js +38 -46
  84. package/dist/transform/transform-shader-utils.js.map +1 -0
  85. package/dist/transform/transform-types.d.ts +44 -0
  86. package/dist/transform/transform-types.d.ts.map +1 -0
  87. package/dist/transform/transform-types.js +2 -0
  88. package/dist/transform/transform-types.js.map +1 -0
  89. package/dist/transform/transform.d.ts +47 -0
  90. package/dist/transform/transform.d.ts.map +1 -0
  91. package/dist/{esm/transform → transform}/transform.js +63 -43
  92. package/dist/transform/transform.js.map +1 -0
  93. package/dist/utils/clip-space.d.ts +5 -0
  94. package/dist/utils/clip-space.d.ts.map +1 -0
  95. package/dist/{esm/utils → utils}/clip-space.js +3 -17
  96. package/dist/utils/clip-space.js.map +1 -0
  97. package/package.json +11 -11
  98. package/src/animation/{key-frames.js → key-frames.ts} +18 -16
  99. package/src/animation/{timeline.js → timeline.ts} +54 -18
  100. package/src/bundle.ts +4 -0
  101. package/src/geometries/{cone-geometry.js → cone-geometry.ts} +9 -3
  102. package/src/geometries/{cube-geometry.js → cube-geometry.ts} +17 -12
  103. package/src/geometries/cylinder-geometry.ts +20 -0
  104. package/src/geometries/{ico-sphere-geometry.js → ico-sphere-geometry.ts} +10 -3
  105. package/src/geometries/{plane-geometry.js → plane-geometry.ts} +11 -6
  106. package/src/geometries/{sphere-geometry.js → sphere-geometry.ts} +15 -11
  107. package/src/geometries/{truncated-cone-geometry.js → truncated-cone-geometry.ts} +14 -5
  108. package/src/geometry/{geometry-utils.js → geometry-utils.ts} +2 -0
  109. package/src/geometry/{geometry.js → geometry.ts} +47 -34
  110. package/src/index.ts +35 -0
  111. package/src/lib/animation-loop.ts +724 -0
  112. package/src/lib/{model-utils.js → model-utils.ts} +2 -2
  113. package/src/lib/{model.js → model.ts} +184 -66
  114. package/src/lib/{program-manager.js → program-manager.ts} +53 -34
  115. package/src/lib/render-loop.ts +56 -0
  116. package/src/transform/{buffer-transform.js → buffer-transform.ts} +42 -27
  117. package/src/transform/{texture-transform.js → texture-transform.ts} +35 -25
  118. package/src/transform/{transform-shader-utils.js → transform-shader-utils.ts} +55 -27
  119. package/src/transform/transform-types.ts +42 -0
  120. package/src/transform/transform.ts +189 -0
  121. package/src/utils/{clip-space.js → clip-space.ts} +4 -3
  122. package/dist/dist.js +0 -32403
  123. package/dist/dist.min.js +0 -1
  124. package/dist/es5/animation/key-frames.d.ts +0 -19
  125. package/dist/es5/animation/key-frames.js +0 -95
  126. package/dist/es5/animation/key-frames.js.map +0 -1
  127. package/dist/es5/animation/timeline.d.ts +0 -39
  128. package/dist/es5/animation/timeline.js +0 -211
  129. package/dist/es5/animation/timeline.js.map +0 -1
  130. package/dist/es5/bundle.js +0 -9
  131. package/dist/es5/bundle.js.map +0 -1
  132. package/dist/es5/geometries/cone-geometry.d.ts +0 -5
  133. package/dist/es5/geometries/cone-geometry.js +0 -59
  134. package/dist/es5/geometries/cone-geometry.js.map +0 -1
  135. package/dist/es5/geometries/cube-geometry.d.ts +0 -5
  136. package/dist/es5/geometries/cube-geometry.js +0 -75
  137. package/dist/es5/geometries/cube-geometry.js.map +0 -1
  138. package/dist/es5/geometries/cylinder-geometry.d.ts +0 -5
  139. package/dist/es5/geometries/cylinder-geometry.js +0 -55
  140. package/dist/es5/geometries/cylinder-geometry.js.map +0 -1
  141. package/dist/es5/geometries/ico-sphere-geometry.d.ts +0 -5
  142. package/dist/es5/geometries/ico-sphere-geometry.js +0 -217
  143. package/dist/es5/geometries/ico-sphere-geometry.js.map +0 -1
  144. package/dist/es5/geometries/index.d.ts +0 -7
  145. package/dist/es5/geometries/index.js +0 -64
  146. package/dist/es5/geometries/index.js.map +0 -1
  147. package/dist/es5/geometries/plane-geometry.d.ts +0 -5
  148. package/dist/es5/geometries/plane-geometry.js +0 -168
  149. package/dist/es5/geometries/plane-geometry.js.map +0 -1
  150. package/dist/es5/geometries/sphere-geometry.d.ts +0 -5
  151. package/dist/es5/geometries/sphere-geometry.js +0 -152
  152. package/dist/es5/geometries/sphere-geometry.js.map +0 -1
  153. package/dist/es5/geometries/truncated-cone-geometry.d.ts +0 -5
  154. package/dist/es5/geometries/truncated-cone-geometry.js +0 -171
  155. package/dist/es5/geometries/truncated-cone-geometry.js.map +0 -1
  156. package/dist/es5/geometry/geometry-utils.d.ts +0 -1
  157. package/dist/es5/geometry/geometry-utils.js +0 -49
  158. package/dist/es5/geometry/geometry-utils.js.map +0 -1
  159. package/dist/es5/geometry/geometry.d.ts +0 -25
  160. package/dist/es5/geometry/geometry.js +0 -150
  161. package/dist/es5/geometry/geometry.js.map +0 -1
  162. package/dist/es5/index.d.ts +0 -19
  163. package/dist/es5/index.js +0 -128
  164. package/dist/es5/index.js.map +0 -1
  165. package/dist/es5/lib/animation-loop.d.ts +0 -158
  166. package/dist/es5/lib/animation-loop.js +0 -642
  167. package/dist/es5/lib/animation-loop.js.map +0 -1
  168. package/dist/es5/lib/model-utils.d.ts +0 -3
  169. package/dist/es5/lib/model-utils.js +0 -110
  170. package/dist/es5/lib/model-utils.js.map +0 -1
  171. package/dist/es5/lib/model.d.ts +0 -214
  172. package/dist/es5/lib/model.js +0 -584
  173. package/dist/es5/lib/model.js.map +0 -1
  174. package/dist/es5/lib/program-manager.d.ts +0 -79
  175. package/dist/es5/lib/program-manager.js +0 -238
  176. package/dist/es5/lib/program-manager.js.map +0 -1
  177. package/dist/es5/transform/buffer-transform.d.ts +0 -13
  178. package/dist/es5/transform/buffer-transform.js +0 -294
  179. package/dist/es5/transform/buffer-transform.js.map +0 -1
  180. package/dist/es5/transform/resource-transform.d.ts +0 -16
  181. package/dist/es5/transform/texture-transform.d.ts +0 -16
  182. package/dist/es5/transform/texture-transform.js +0 -405
  183. package/dist/es5/transform/texture-transform.js.map +0 -1
  184. package/dist/es5/transform/transform-shader-utils.d.ts +0 -31
  185. package/dist/es5/transform/transform-shader-utils.js +0 -160
  186. package/dist/es5/transform/transform-shader-utils.js.map +0 -1
  187. package/dist/es5/transform/transform.d.ts +0 -33
  188. package/dist/es5/transform/transform.js +0 -274
  189. package/dist/es5/transform/transform.js.map +0 -1
  190. package/dist/es5/utils/clip-space.d.ts +0 -5
  191. package/dist/es5/utils/clip-space.js +0 -72
  192. package/dist/es5/utils/clip-space.js.map +0 -1
  193. package/dist/esm/animation/key-frames.d.ts +0 -19
  194. package/dist/esm/animation/key-frames.js.map +0 -1
  195. package/dist/esm/animation/timeline.d.ts +0 -39
  196. package/dist/esm/animation/timeline.js.map +0 -1
  197. package/dist/esm/bundle.js +0 -7
  198. package/dist/esm/bundle.js.map +0 -1
  199. package/dist/esm/geometries/cone-geometry.d.ts +0 -5
  200. package/dist/esm/geometries/cone-geometry.js.map +0 -1
  201. package/dist/esm/geometries/cube-geometry.d.ts +0 -5
  202. package/dist/esm/geometries/cube-geometry.js.map +0 -1
  203. package/dist/esm/geometries/cylinder-geometry.d.ts +0 -5
  204. package/dist/esm/geometries/cylinder-geometry.js.map +0 -1
  205. package/dist/esm/geometries/ico-sphere-geometry.d.ts +0 -5
  206. package/dist/esm/geometries/ico-sphere-geometry.js.map +0 -1
  207. package/dist/esm/geometries/index.d.ts +0 -7
  208. package/dist/esm/geometries/index.js +0 -8
  209. package/dist/esm/geometries/index.js.map +0 -1
  210. package/dist/esm/geometries/plane-geometry.d.ts +0 -5
  211. package/dist/esm/geometries/plane-geometry.js.map +0 -1
  212. package/dist/esm/geometries/sphere-geometry.d.ts +0 -5
  213. package/dist/esm/geometries/sphere-geometry.js.map +0 -1
  214. package/dist/esm/geometries/truncated-cone-geometry.d.ts +0 -5
  215. package/dist/esm/geometries/truncated-cone-geometry.js.map +0 -1
  216. package/dist/esm/geometry/geometry-utils.d.ts +0 -1
  217. package/dist/esm/geometry/geometry-utils.js.map +0 -1
  218. package/dist/esm/geometry/geometry.d.ts +0 -25
  219. package/dist/esm/geometry/geometry.js.map +0 -1
  220. package/dist/esm/index.d.ts +0 -19
  221. package/dist/esm/index.js +0 -16
  222. package/dist/esm/index.js.map +0 -1
  223. package/dist/esm/lib/animation-loop.d.ts +0 -158
  224. package/dist/esm/lib/animation-loop.js.map +0 -1
  225. package/dist/esm/lib/model-utils.d.ts +0 -3
  226. package/dist/esm/lib/model-utils.js.map +0 -1
  227. package/dist/esm/lib/model.d.ts +0 -214
  228. package/dist/esm/lib/model.js.map +0 -1
  229. package/dist/esm/lib/program-manager.d.ts +0 -79
  230. package/dist/esm/lib/program-manager.js.map +0 -1
  231. package/dist/esm/transform/buffer-transform.d.ts +0 -13
  232. package/dist/esm/transform/buffer-transform.js.map +0 -1
  233. package/dist/esm/transform/resource-transform.d.ts +0 -16
  234. package/dist/esm/transform/texture-transform.d.ts +0 -16
  235. package/dist/esm/transform/texture-transform.js.map +0 -1
  236. package/dist/esm/transform/transform-shader-utils.d.ts +0 -31
  237. package/dist/esm/transform/transform-shader-utils.js.map +0 -1
  238. package/dist/esm/transform/transform.d.ts +0 -33
  239. package/dist/esm/transform/transform.js.map +0 -1
  240. package/dist/esm/utils/clip-space.d.ts +0 -5
  241. package/dist/esm/utils/clip-space.js.map +0 -1
  242. package/src/animation/key-frames.d.ts +0 -19
  243. package/src/animation/timeline.d.ts +0 -39
  244. package/src/bundle.js +0 -7
  245. package/src/geometries/cone-geometry.d.ts +0 -5
  246. package/src/geometries/cube-geometry.d.ts +0 -5
  247. package/src/geometries/cylinder-geometry.d.ts +0 -5
  248. package/src/geometries/cylinder-geometry.js +0 -14
  249. package/src/geometries/ico-sphere-geometry.d.ts +0 -5
  250. package/src/geometries/index.d.ts +0 -7
  251. package/src/geometries/index.js +0 -7
  252. package/src/geometries/plane-geometry.d.ts +0 -5
  253. package/src/geometries/sphere-geometry.d.ts +0 -5
  254. package/src/geometries/truncated-cone-geometry.d.ts +0 -5
  255. package/src/geometry/geometry-utils.d.ts +0 -1
  256. package/src/geometry/geometry.d.ts +0 -25
  257. package/src/index.d.ts +0 -19
  258. package/src/index.js +0 -22
  259. package/src/lib/animation-loop.d.ts +0 -158
  260. package/src/lib/animation-loop.js +0 -601
  261. package/src/lib/model-utils.d.ts +0 -3
  262. package/src/lib/model.d.ts +0 -214
  263. package/src/lib/program-manager.d.ts +0 -79
  264. package/src/transform/buffer-transform.d.ts +0 -13
  265. package/src/transform/resource-transform.d.ts +0 -16
  266. package/src/transform/texture-transform.d.ts +0 -16
  267. package/src/transform/transform-shader-utils.d.ts +0 -31
  268. package/src/transform/transform.d.ts +0 -33
  269. package/src/transform/transform.js +0 -177
  270. package/src/utils/clip-space.d.ts +0 -5
@@ -1,642 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
11
-
12
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
-
14
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
-
16
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
-
18
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
-
20
- var _gltools = require("@luma.gl/gltools");
21
-
22
- var _webgl = require("@luma.gl/webgl");
23
-
24
- var _env = require("probe.gl/env");
25
-
26
- var isPage = (0, _env.isBrowser)() && typeof document !== 'undefined';
27
- var statIdCounter = 0;
28
-
29
- var AnimationLoop = function () {
30
- function AnimationLoop() {
31
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
32
- (0, _classCallCheck2.default)(this, AnimationLoop);
33
- var _props$onCreateContex = props.onCreateContext,
34
- onCreateContext = _props$onCreateContex === void 0 ? function (opts) {
35
- return (0, _gltools.createGLContext)(opts);
36
- } : _props$onCreateContex,
37
- _props$onAddHTML = props.onAddHTML,
38
- onAddHTML = _props$onAddHTML === void 0 ? null : _props$onAddHTML,
39
- _props$onInitialize = props.onInitialize,
40
- onInitialize = _props$onInitialize === void 0 ? function () {} : _props$onInitialize,
41
- _props$onRender = props.onRender,
42
- onRender = _props$onRender === void 0 ? function () {} : _props$onRender,
43
- _props$onFinalize = props.onFinalize,
44
- onFinalize = _props$onFinalize === void 0 ? function () {} : _props$onFinalize,
45
- onError = props.onError,
46
- _props$gl = props.gl,
47
- gl = _props$gl === void 0 ? null : _props$gl,
48
- _props$glOptions = props.glOptions,
49
- glOptions = _props$glOptions === void 0 ? {} : _props$glOptions,
50
- _props$debug = props.debug,
51
- debug = _props$debug === void 0 ? false : _props$debug,
52
- _props$createFramebuf = props.createFramebuffer,
53
- createFramebuffer = _props$createFramebuf === void 0 ? false : _props$createFramebuf,
54
- _props$autoResizeView = props.autoResizeViewport,
55
- autoResizeViewport = _props$autoResizeView === void 0 ? true : _props$autoResizeView,
56
- _props$autoResizeDraw = props.autoResizeDrawingBuffer,
57
- autoResizeDrawingBuffer = _props$autoResizeDraw === void 0 ? true : _props$autoResizeDraw,
58
- _props$stats = props.stats,
59
- stats = _props$stats === void 0 ? _webgl.lumaStats.get("animation-loop-".concat(statIdCounter++)) : _props$stats;
60
- var _props$useDevicePixel = props.useDevicePixels,
61
- useDevicePixels = _props$useDevicePixel === void 0 ? true : _props$useDevicePixel;
62
-
63
- if ('useDevicePixelRatio' in props) {
64
- _webgl.log.deprecated('useDevicePixelRatio', 'useDevicePixels')();
65
-
66
- useDevicePixels = props.useDevicePixelRatio;
67
- }
68
-
69
- this.props = {
70
- onCreateContext: onCreateContext,
71
- onAddHTML: onAddHTML,
72
- onInitialize: onInitialize,
73
- onRender: onRender,
74
- onFinalize: onFinalize,
75
- onError: onError,
76
- gl: gl,
77
- glOptions: glOptions,
78
- debug: debug,
79
- createFramebuffer: createFramebuffer
80
- };
81
- this.gl = gl;
82
- this.needsRedraw = null;
83
- this.timeline = null;
84
- this.stats = stats;
85
- this.cpuTime = this.stats.get('CPU Time');
86
- this.gpuTime = this.stats.get('GPU Time');
87
- this.frameRate = this.stats.get('Frame Rate');
88
- this._initialized = false;
89
- this._running = false;
90
- this._animationFrameId = null;
91
- this._nextFramePromise = null;
92
- this._resolveNextFrame = null;
93
- this._cpuStartTime = 0;
94
- this.setProps({
95
- autoResizeViewport: autoResizeViewport,
96
- autoResizeDrawingBuffer: autoResizeDrawingBuffer,
97
- useDevicePixels: useDevicePixels
98
- });
99
- this.start = this.start.bind(this);
100
- this.stop = this.stop.bind(this);
101
- this._pageLoadPromise = null;
102
- this._onMousemove = this._onMousemove.bind(this);
103
- this._onMouseleave = this._onMouseleave.bind(this);
104
- }
105
-
106
- (0, _createClass2.default)(AnimationLoop, [{
107
- key: "delete",
108
- value: function _delete() {
109
- this.stop();
110
-
111
- this._setDisplay(null);
112
- }
113
- }, {
114
- key: "setNeedsRedraw",
115
- value: function setNeedsRedraw(reason) {
116
- (0, _webgl.assert)(typeof reason === 'string');
117
- this.needsRedraw = this.needsRedraw || reason;
118
- return this;
119
- }
120
- }, {
121
- key: "setProps",
122
- value: function setProps(props) {
123
- if ('autoResizeViewport' in props) {
124
- this.autoResizeViewport = props.autoResizeViewport;
125
- }
126
-
127
- if ('autoResizeDrawingBuffer' in props) {
128
- this.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer;
129
- }
130
-
131
- if ('useDevicePixels' in props) {
132
- this.useDevicePixels = props.useDevicePixels;
133
- }
134
-
135
- return this;
136
- }
137
- }, {
138
- key: "start",
139
- value: function start() {
140
- var _this = this;
141
-
142
- var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
143
-
144
- if (this._running) {
145
- return this;
146
- }
147
-
148
- this._running = true;
149
-
150
- var startPromise = this._getPageLoadPromise().then(function () {
151
- if (!_this._running || _this._initialized) {
152
- return null;
153
- }
154
-
155
- _this._createWebGLContext(opts);
156
-
157
- _this._createFramebuffer();
158
-
159
- _this._startEventHandling();
160
-
161
- _this._initializeCallbackData();
162
-
163
- _this._updateCallbackData();
164
-
165
- _this._resizeCanvasDrawingBuffer();
166
-
167
- _this._resizeViewport();
168
-
169
- _this._gpuTimeQuery = _webgl.Query.isSupported(_this.gl, ['timers']) ? new _webgl.Query(_this.gl) : null;
170
- _this._initialized = true;
171
- return _this.onInitialize(_this.animationProps);
172
- }).then(function (appContext) {
173
- if (_this._running) {
174
- _this._addCallbackData(appContext || {});
175
-
176
- if (appContext !== false) {
177
- _this._startLoop();
178
- }
179
- }
180
- });
181
-
182
- if (this.props.onError) {
183
- startPromise.catch(this.props.onError);
184
- }
185
-
186
- return this;
187
- }
188
- }, {
189
- key: "redraw",
190
- value: function redraw() {
191
- if (this.isContextLost()) {
192
- return this;
193
- }
194
-
195
- this._beginTimers();
196
-
197
- this._setupFrame();
198
-
199
- this._updateCallbackData();
200
-
201
- this._renderFrame(this.animationProps);
202
-
203
- this._clearNeedsRedraw();
204
-
205
- if (this.offScreen && this.gl.commit) {
206
- this.gl.commit();
207
- }
208
-
209
- if (this._resolveNextFrame) {
210
- this._resolveNextFrame(this);
211
-
212
- this._nextFramePromise = null;
213
- this._resolveNextFrame = null;
214
- }
215
-
216
- this._endTimers();
217
-
218
- return this;
219
- }
220
- }, {
221
- key: "stop",
222
- value: function stop() {
223
- if (this._running) {
224
- this._finalizeCallbackData();
225
-
226
- this._cancelAnimationFrame(this._animationFrameId);
227
-
228
- this._nextFramePromise = null;
229
- this._resolveNextFrame = null;
230
- this._animationFrameId = null;
231
- this._running = false;
232
- }
233
-
234
- return this;
235
- }
236
- }, {
237
- key: "attachTimeline",
238
- value: function attachTimeline(timeline) {
239
- this.timeline = timeline;
240
- return this.timeline;
241
- }
242
- }, {
243
- key: "detachTimeline",
244
- value: function detachTimeline() {
245
- this.timeline = null;
246
- }
247
- }, {
248
- key: "waitForRender",
249
- value: function waitForRender() {
250
- var _this2 = this;
251
-
252
- this.setNeedsRedraw('waitForRender');
253
-
254
- if (!this._nextFramePromise) {
255
- this._nextFramePromise = new Promise(function (resolve) {
256
- _this2._resolveNextFrame = resolve;
257
- });
258
- }
259
-
260
- return this._nextFramePromise;
261
- }
262
- }, {
263
- key: "toDataURL",
264
- value: function () {
265
- var _toDataURL = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
266
- return _regenerator.default.wrap(function _callee$(_context) {
267
- while (1) {
268
- switch (_context.prev = _context.next) {
269
- case 0:
270
- this.setNeedsRedraw('toDataURL');
271
- _context.next = 3;
272
- return this.waitForRender();
273
-
274
- case 3:
275
- return _context.abrupt("return", this.gl.canvas.toDataURL());
276
-
277
- case 4:
278
- case "end":
279
- return _context.stop();
280
- }
281
- }
282
- }, _callee, this);
283
- }));
284
-
285
- function toDataURL() {
286
- return _toDataURL.apply(this, arguments);
287
- }
288
-
289
- return toDataURL;
290
- }()
291
- }, {
292
- key: "isContextLost",
293
- value: function isContextLost() {
294
- return this.gl.isContextLost();
295
- }
296
- }, {
297
- key: "onCreateContext",
298
- value: function onCreateContext() {
299
- var _this$props;
300
-
301
- return (_this$props = this.props).onCreateContext.apply(_this$props, arguments);
302
- }
303
- }, {
304
- key: "onInitialize",
305
- value: function onInitialize() {
306
- var _this$props2;
307
-
308
- return (_this$props2 = this.props).onInitialize.apply(_this$props2, arguments);
309
- }
310
- }, {
311
- key: "onRender",
312
- value: function onRender() {
313
- var _this$props3;
314
-
315
- return (_this$props3 = this.props).onRender.apply(_this$props3, arguments);
316
- }
317
- }, {
318
- key: "onFinalize",
319
- value: function onFinalize() {
320
- var _this$props4;
321
-
322
- return (_this$props4 = this.props).onFinalize.apply(_this$props4, arguments);
323
- }
324
- }, {
325
- key: "getHTMLControlValue",
326
- value: function getHTMLControlValue(id) {
327
- var defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
328
- var element = document.getElementById(id);
329
- return element ? Number(element.value) : defaultValue;
330
- }
331
- }, {
332
- key: "setViewParameters",
333
- value: function setViewParameters() {
334
- _webgl.log.removed('AnimationLoop.setViewParameters', 'AnimationLoop.setProps')();
335
-
336
- return this;
337
- }
338
- }, {
339
- key: "_startLoop",
340
- value: function _startLoop() {
341
- var _this3 = this;
342
-
343
- var renderFrame = function renderFrame() {
344
- if (!_this3._running) {
345
- return;
346
- }
347
-
348
- _this3.redraw();
349
-
350
- _this3._animationFrameId = _this3._requestAnimationFrame(renderFrame);
351
- };
352
-
353
- this._cancelAnimationFrame(this._animationFrameId);
354
-
355
- this._animationFrameId = this._requestAnimationFrame(renderFrame);
356
- }
357
- }, {
358
- key: "_getPageLoadPromise",
359
- value: function _getPageLoadPromise() {
360
- if (!this._pageLoadPromise) {
361
- this._pageLoadPromise = isPage ? new Promise(function (resolve, reject) {
362
- if (isPage && document.readyState === 'complete') {
363
- resolve(document);
364
- return;
365
- }
366
-
367
- window.addEventListener('load', function () {
368
- resolve(document);
369
- });
370
- }) : Promise.resolve({});
371
- }
372
-
373
- return this._pageLoadPromise;
374
- }
375
- }, {
376
- key: "_setDisplay",
377
- value: function _setDisplay(display) {
378
- if (this.display) {
379
- this.display.delete();
380
- this.display.animationLoop = null;
381
- }
382
-
383
- if (display) {
384
- display.animationLoop = this;
385
- }
386
-
387
- this.display = display;
388
- }
389
- }, {
390
- key: "_cancelAnimationFrame",
391
- value: function _cancelAnimationFrame(animationFrameId) {
392
- if (this.display && this.display.cancelAnimationFrame) {
393
- return this.display.cancelAnimationFrame(animationFrameId);
394
- }
395
-
396
- return (0, _webgl.cancelAnimationFrame)(animationFrameId);
397
- }
398
- }, {
399
- key: "_requestAnimationFrame",
400
- value: function _requestAnimationFrame(renderFrameCallback) {
401
- if (this._running) {
402
- if (this.display && this.display.requestAnimationFrame) {
403
- return this.display.requestAnimationFrame(renderFrameCallback);
404
- }
405
-
406
- return (0, _webgl.requestAnimationFrame)(renderFrameCallback);
407
- }
408
-
409
- return undefined;
410
- }
411
- }, {
412
- key: "_renderFrame",
413
- value: function _renderFrame() {
414
- if (this.display) {
415
- var _this$display;
416
-
417
- (_this$display = this.display)._renderFrame.apply(_this$display, arguments);
418
-
419
- return;
420
- }
421
-
422
- this.onRender.apply(this, arguments);
423
- }
424
- }, {
425
- key: "_clearNeedsRedraw",
426
- value: function _clearNeedsRedraw() {
427
- this.needsRedraw = null;
428
- }
429
- }, {
430
- key: "_setupFrame",
431
- value: function _setupFrame() {
432
- this._resizeCanvasDrawingBuffer();
433
-
434
- this._resizeViewport();
435
-
436
- this._resizeFramebuffer();
437
- }
438
- }, {
439
- key: "_initializeCallbackData",
440
- value: function _initializeCallbackData() {
441
- this.animationProps = {
442
- gl: this.gl,
443
- stop: this.stop,
444
- canvas: this.gl.canvas,
445
- framebuffer: this.framebuffer,
446
- useDevicePixels: this.useDevicePixels,
447
- needsRedraw: null,
448
- startTime: Date.now(),
449
- engineTime: 0,
450
- tick: 0,
451
- tock: 0,
452
- time: 0,
453
- _timeline: this.timeline,
454
- _loop: this,
455
- _animationLoop: this,
456
- _mousePosition: null
457
- };
458
- }
459
- }, {
460
- key: "_updateCallbackData",
461
- value: function _updateCallbackData() {
462
- var _this$_getSizeAndAspe = this._getSizeAndAspect(),
463
- width = _this$_getSizeAndAspe.width,
464
- height = _this$_getSizeAndAspe.height,
465
- aspect = _this$_getSizeAndAspe.aspect;
466
-
467
- if (width !== this.animationProps.width || height !== this.animationProps.height) {
468
- this.setNeedsRedraw('drawing buffer resized');
469
- }
470
-
471
- if (aspect !== this.animationProps.aspect) {
472
- this.setNeedsRedraw('drawing buffer aspect changed');
473
- }
474
-
475
- this.animationProps.width = width;
476
- this.animationProps.height = height;
477
- this.animationProps.aspect = aspect;
478
- this.animationProps.needsRedraw = this.needsRedraw;
479
- this.animationProps.engineTime = Date.now() - this.animationProps.startTime;
480
-
481
- if (this.timeline) {
482
- this.timeline.update(this.animationProps.engineTime);
483
- }
484
-
485
- this.animationProps.tick = Math.floor(this.animationProps.time / 1000 * 60);
486
- this.animationProps.tock++;
487
- this.animationProps.time = this.timeline ? this.timeline.getTime() : this.animationProps.engineTime;
488
- this.animationProps._offScreen = this.offScreen;
489
- }
490
- }, {
491
- key: "_finalizeCallbackData",
492
- value: function _finalizeCallbackData() {
493
- this.onFinalize(this.animationProps);
494
- }
495
- }, {
496
- key: "_addCallbackData",
497
- value: function _addCallbackData(appContext) {
498
- if ((0, _typeof2.default)(appContext) === 'object' && appContext !== null) {
499
- this.animationProps = Object.assign({}, this.animationProps, appContext);
500
- }
501
- }
502
- }, {
503
- key: "_createWebGLContext",
504
- value: function _createWebGLContext(opts) {
505
- this.offScreen = opts.canvas && typeof OffscreenCanvas !== 'undefined' && opts.canvas instanceof OffscreenCanvas;
506
- opts = Object.assign({}, opts, this.props.glOptions);
507
- this.gl = this.props.gl ? (0, _gltools.instrumentGLContext)(this.props.gl, opts) : this.onCreateContext(opts);
508
-
509
- if (!(0, _gltools.isWebGL)(this.gl)) {
510
- throw new Error('AnimationLoop.onCreateContext - illegal context returned');
511
- }
512
-
513
- (0, _gltools.resetParameters)(this.gl);
514
-
515
- this._createInfoDiv();
516
- }
517
- }, {
518
- key: "_createInfoDiv",
519
- value: function _createInfoDiv() {
520
- if (this.gl.canvas && this.props.onAddHTML) {
521
- var wrapperDiv = document.createElement('div');
522
- document.body.appendChild(wrapperDiv);
523
- wrapperDiv.style.position = 'relative';
524
- var div = document.createElement('div');
525
- div.style.position = 'absolute';
526
- div.style.left = '10px';
527
- div.style.bottom = '10px';
528
- div.style.width = '300px';
529
- div.style.background = 'white';
530
- wrapperDiv.appendChild(this.gl.canvas);
531
- wrapperDiv.appendChild(div);
532
- var html = this.props.onAddHTML(div);
533
-
534
- if (html) {
535
- div.innerHTML = html;
536
- }
537
- }
538
- }
539
- }, {
540
- key: "_getSizeAndAspect",
541
- value: function _getSizeAndAspect() {
542
- var width = this.gl.drawingBufferWidth;
543
- var height = this.gl.drawingBufferHeight;
544
- var aspect = 1;
545
- var canvas = this.gl.canvas;
546
-
547
- if (canvas && canvas.clientHeight) {
548
- aspect = canvas.clientWidth / canvas.clientHeight;
549
- } else if (width > 0 && height > 0) {
550
- aspect = width / height;
551
- }
552
-
553
- return {
554
- width: width,
555
- height: height,
556
- aspect: aspect
557
- };
558
- }
559
- }, {
560
- key: "_resizeViewport",
561
- value: function _resizeViewport() {
562
- if (this.autoResizeViewport) {
563
- this.gl.viewport(0, 0, this.gl.drawingBufferWidth, this.gl.drawingBufferHeight);
564
- }
565
- }
566
- }, {
567
- key: "_resizeCanvasDrawingBuffer",
568
- value: function _resizeCanvasDrawingBuffer() {
569
- if (this.autoResizeDrawingBuffer) {
570
- (0, _gltools.resizeGLContext)(this.gl, {
571
- useDevicePixels: this.useDevicePixels
572
- });
573
- }
574
- }
575
- }, {
576
- key: "_createFramebuffer",
577
- value: function _createFramebuffer() {
578
- if (this.props.createFramebuffer) {
579
- this.framebuffer = new _webgl.Framebuffer(this.gl);
580
- }
581
- }
582
- }, {
583
- key: "_resizeFramebuffer",
584
- value: function _resizeFramebuffer() {
585
- if (this.framebuffer) {
586
- this.framebuffer.resize({
587
- width: this.gl.drawingBufferWidth,
588
- height: this.gl.drawingBufferHeight
589
- });
590
- }
591
- }
592
- }, {
593
- key: "_beginTimers",
594
- value: function _beginTimers() {
595
- this.frameRate.timeEnd();
596
- this.frameRate.timeStart();
597
-
598
- if (this._gpuTimeQuery && this._gpuTimeQuery.isResultAvailable() && !this._gpuTimeQuery.isTimerDisjoint()) {
599
- this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());
600
- }
601
-
602
- if (this._gpuTimeQuery) {
603
- this._gpuTimeQuery.beginTimeElapsedQuery();
604
- }
605
-
606
- this.cpuTime.timeStart();
607
- }
608
- }, {
609
- key: "_endTimers",
610
- value: function _endTimers() {
611
- this.cpuTime.timeEnd();
612
-
613
- if (this._gpuTimeQuery) {
614
- this._gpuTimeQuery.end();
615
- }
616
- }
617
- }, {
618
- key: "_startEventHandling",
619
- value: function _startEventHandling() {
620
- var canvas = this.gl.canvas;
621
-
622
- if (canvas) {
623
- canvas.addEventListener('mousemove', this._onMousemove);
624
- canvas.addEventListener('mouseleave', this._onMouseleave);
625
- }
626
- }
627
- }, {
628
- key: "_onMousemove",
629
- value: function _onMousemove(e) {
630
- this.animationProps._mousePosition = [e.offsetX, e.offsetY];
631
- }
632
- }, {
633
- key: "_onMouseleave",
634
- value: function _onMouseleave(e) {
635
- this.animationProps._mousePosition = null;
636
- }
637
- }]);
638
- return AnimationLoop;
639
- }();
640
-
641
- exports.default = AnimationLoop;
642
- //# sourceMappingURL=animation-loop.js.map