@luma.gl/engine 9.0.0-alpha.15 → 9.0.0-alpha.16

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 (172) hide show
  1. package/dist/animation/key-frames.d.ts +1 -1
  2. package/dist/animation/key-frames.d.ts.map +1 -1
  3. package/dist/animation/key-frames.js +51 -72
  4. package/dist/animation/timeline.d.ts +4 -4
  5. package/dist/animation/timeline.d.ts.map +1 -1
  6. package/dist/animation/timeline.js +94 -131
  7. package/dist/animation-loop/animation-loop.d.ts +2 -3
  8. package/dist/animation-loop/animation-loop.d.ts.map +1 -1
  9. package/dist/animation-loop/animation-loop.js +414 -473
  10. package/dist/animation-loop/animation-props.d.ts +1 -2
  11. package/dist/animation-loop/animation-props.d.ts.map +1 -1
  12. package/dist/animation-loop/animation-props.js +0 -1
  13. package/dist/animation-loop/make-animation-loop.d.ts +1 -1
  14. package/dist/animation-loop/make-animation-loop.d.ts.map +1 -1
  15. package/dist/animation-loop/make-animation-loop.js +26 -31
  16. package/dist/animation-loop/render-loop.js +17 -7
  17. package/dist/bundle.js +2 -2
  18. package/dist/dist.min.js +31 -0
  19. package/dist/es5/animation/key-frames.js +84 -0
  20. package/dist/es5/animation/key-frames.js.map +1 -0
  21. package/dist/es5/animation/timeline.js +183 -0
  22. package/dist/es5/animation/timeline.js.map +1 -0
  23. package/dist/es5/animation-loop/animation-loop.js +534 -0
  24. package/dist/es5/animation-loop/animation-loop.js.map +1 -0
  25. package/dist/es5/animation-loop/animation-props.js +2 -0
  26. package/dist/es5/animation-loop/animation-props.js.map +1 -0
  27. package/dist/es5/animation-loop/make-animation-loop.js +53 -0
  28. package/dist/es5/animation-loop/make-animation-loop.js.map +1 -0
  29. package/dist/es5/animation-loop/render-loop.js +39 -0
  30. package/dist/es5/animation-loop/render-loop.js.map +1 -0
  31. package/dist/es5/bundle.js +6 -0
  32. package/dist/es5/bundle.js.map +1 -0
  33. package/dist/es5/geometries/cone-geometry.js +43 -0
  34. package/dist/es5/geometries/cone-geometry.js.map +1 -0
  35. package/dist/es5/geometries/cube-geometry.js +84 -0
  36. package/dist/es5/geometries/cube-geometry.js.map +1 -0
  37. package/dist/es5/geometries/cylinder-geometry.js +39 -0
  38. package/dist/es5/geometries/cylinder-geometry.js.map +1 -0
  39. package/dist/es5/geometries/ico-sphere-geometry.js +185 -0
  40. package/dist/es5/geometries/ico-sphere-geometry.js.map +1 -0
  41. package/dist/es5/geometries/plane-geometry.js +137 -0
  42. package/dist/es5/geometries/plane-geometry.js.map +1 -0
  43. package/dist/es5/geometries/sphere-geometry.js +120 -0
  44. package/dist/es5/geometries/sphere-geometry.js.map +1 -0
  45. package/dist/es5/geometries/truncated-cone-geometry.js +160 -0
  46. package/dist/es5/geometries/truncated-cone-geometry.js.map +1 -0
  47. package/dist/es5/geometry/geometry-table.js +2 -0
  48. package/dist/es5/geometry/geometry-table.js.map +1 -0
  49. package/dist/es5/geometry/geometry-utils.js +39 -0
  50. package/dist/es5/geometry/geometry-utils.js.map +1 -0
  51. package/dist/es5/geometry/geometry.js +150 -0
  52. package/dist/es5/geometry/geometry.js.map +1 -0
  53. package/dist/es5/geometry/primitive-utils.js +2 -0
  54. package/dist/es5/geometry/primitive-utils.js.map +1 -0
  55. package/dist/es5/index.js +112 -0
  56. package/dist/es5/index.js.map +1 -0
  57. package/dist/es5/lib/clip-space.js +2 -0
  58. package/dist/es5/lib/clip-space.js.map +1 -0
  59. package/dist/es5/lib/model-utils.js +52 -0
  60. package/dist/es5/lib/model-utils.js.map +1 -0
  61. package/dist/es5/lib/model.js +173 -0
  62. package/dist/es5/lib/model.js.map +1 -0
  63. package/dist/es5/lib/pipeline-factory.js +244 -0
  64. package/dist/es5/lib/pipeline-factory.js.map +1 -0
  65. package/dist/esm/animation/key-frames.js +57 -0
  66. package/dist/esm/animation/key-frames.js.map +1 -0
  67. package/dist/esm/animation/timeline.js +113 -0
  68. package/dist/esm/animation/timeline.js.map +1 -0
  69. package/dist/esm/animation-loop/animation-loop.js +367 -0
  70. package/dist/esm/animation-loop/animation-loop.js.map +1 -0
  71. package/dist/esm/animation-loop/animation-props.js +2 -0
  72. package/dist/esm/animation-loop/animation-props.js.map +1 -0
  73. package/dist/esm/animation-loop/make-animation-loop.js +28 -0
  74. package/dist/esm/animation-loop/make-animation-loop.js.map +1 -0
  75. package/dist/esm/animation-loop/render-loop.js +7 -0
  76. package/dist/esm/animation-loop/render-loop.js.map +1 -0
  77. package/dist/esm/bundle.js +4 -0
  78. package/dist/esm/bundle.js.map +1 -0
  79. package/dist/esm/geometries/cone-geometry.js +21 -0
  80. package/dist/esm/geometries/cone-geometry.js.map +1 -0
  81. package/dist/esm/geometries/cube-geometry.js +67 -0
  82. package/dist/esm/geometries/cube-geometry.js.map +1 -0
  83. package/dist/esm/geometries/cylinder-geometry.js +18 -0
  84. package/dist/esm/geometries/cylinder-geometry.js.map +1 -0
  85. package/dist/esm/geometries/ico-sphere-geometry.js +170 -0
  86. package/dist/esm/geometries/ico-sphere-geometry.js.map +1 -0
  87. package/dist/esm/geometries/plane-geometry.js +119 -0
  88. package/dist/esm/geometries/plane-geometry.js.map +1 -0
  89. package/dist/esm/geometries/sphere-geometry.js +102 -0
  90. package/dist/esm/geometries/sphere-geometry.js.map +1 -0
  91. package/dist/esm/geometries/truncated-cone-geometry.js +136 -0
  92. package/dist/esm/geometries/truncated-cone-geometry.js.map +1 -0
  93. package/dist/esm/geometry/geometry-table.js +2 -0
  94. package/dist/esm/geometry/geometry-table.js.map +1 -0
  95. package/dist/esm/geometry/geometry-utils.js +37 -0
  96. package/dist/esm/geometry/geometry-utils.js.map +1 -0
  97. package/dist/esm/geometry/geometry.js +119 -0
  98. package/dist/esm/geometry/geometry.js.map +1 -0
  99. package/dist/esm/geometry/primitive-utils.js +2 -0
  100. package/dist/esm/geometry/primitive-utils.js.map +1 -0
  101. package/dist/esm/index.js +16 -0
  102. package/dist/esm/index.js.map +1 -0
  103. package/dist/esm/lib/clip-space.js +2 -0
  104. package/dist/esm/lib/clip-space.js.map +1 -0
  105. package/dist/esm/lib/model-utils.js +40 -0
  106. package/dist/esm/lib/model-utils.js.map +1 -0
  107. package/dist/esm/lib/model.js +146 -0
  108. package/dist/esm/lib/model.js.map +1 -0
  109. package/dist/esm/lib/pipeline-factory.js +180 -0
  110. package/dist/esm/lib/pipeline-factory.js.map +1 -0
  111. package/dist/geometries/cone-geometry.d.ts +1 -1
  112. package/dist/geometries/cone-geometry.d.ts.map +1 -1
  113. package/dist/geometries/cone-geometry.js +12 -17
  114. package/dist/geometries/cube-geometry.d.ts +1 -1
  115. package/dist/geometries/cube-geometry.d.ts.map +1 -1
  116. package/dist/geometries/cube-geometry.js +187 -56
  117. package/dist/geometries/cylinder-geometry.d.ts +1 -1
  118. package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
  119. package/dist/geometries/cylinder-geometry.js +10 -14
  120. package/dist/geometries/ico-sphere-geometry.d.ts +1 -1
  121. package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
  122. package/dist/geometries/ico-sphere-geometry.js +141 -170
  123. package/dist/geometries/plane-geometry.d.ts +1 -1
  124. package/dist/geometries/plane-geometry.d.ts.map +1 -1
  125. package/dist/geometries/plane-geometry.js +93 -121
  126. package/dist/geometries/sphere-geometry.d.ts +1 -1
  127. package/dist/geometries/sphere-geometry.d.ts.map +1 -1
  128. package/dist/geometries/sphere-geometry.js +76 -100
  129. package/dist/geometries/truncated-cone-geometry.d.ts +1 -1
  130. package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
  131. package/dist/geometries/truncated-cone-geometry.js +104 -131
  132. package/dist/geometry/geometry-table.d.ts +1 -1
  133. package/dist/geometry/geometry-table.d.ts.map +1 -1
  134. package/dist/geometry/geometry-table.js +0 -1
  135. package/dist/geometry/geometry-utils.js +22 -41
  136. package/dist/geometry/geometry.d.ts +4 -4
  137. package/dist/geometry/geometry.d.ts.map +1 -1
  138. package/dist/geometry/geometry.js +96 -142
  139. package/dist/geometry/primitive-utils.js +30 -1
  140. package/dist/index.js +20 -16
  141. package/dist/lib/clip-space.js +50 -1
  142. package/dist/lib/model-utils.js +97 -29
  143. package/dist/lib/model.d.ts +1 -1
  144. package/dist/lib/model.d.ts.map +1 -1
  145. package/dist/lib/model.js +122 -166
  146. package/dist/lib/pipeline-factory.d.ts +3 -3
  147. package/dist/lib/pipeline-factory.d.ts.map +1 -1
  148. package/dist/lib/pipeline-factory.js +136 -204
  149. package/package.json +11 -10
  150. package/dist/animation/key-frames.js.map +0 -1
  151. package/dist/animation/timeline.js.map +0 -1
  152. package/dist/animation-loop/animation-loop.js.map +0 -1
  153. package/dist/animation-loop/animation-props.js.map +0 -1
  154. package/dist/animation-loop/make-animation-loop.js.map +0 -1
  155. package/dist/animation-loop/render-loop.js.map +0 -1
  156. package/dist/bundle.js.map +0 -1
  157. package/dist/geometries/cone-geometry.js.map +0 -1
  158. package/dist/geometries/cube-geometry.js.map +0 -1
  159. package/dist/geometries/cylinder-geometry.js.map +0 -1
  160. package/dist/geometries/ico-sphere-geometry.js.map +0 -1
  161. package/dist/geometries/plane-geometry.js.map +0 -1
  162. package/dist/geometries/sphere-geometry.js.map +0 -1
  163. package/dist/geometries/truncated-cone-geometry.js.map +0 -1
  164. package/dist/geometry/geometry-table.js.map +0 -1
  165. package/dist/geometry/geometry-utils.js.map +0 -1
  166. package/dist/geometry/geometry.js.map +0 -1
  167. package/dist/geometry/primitive-utils.js.map +0 -1
  168. package/dist/index.js.map +0 -1
  169. package/dist/lib/clip-space.js.map +0 -1
  170. package/dist/lib/model-utils.js.map +0 -1
  171. package/dist/lib/model.js.map +0 -1
  172. package/dist/lib/pipeline-factory.js.map +0 -1
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.KeyFrames = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var KeyFrames = function () {
12
+ function KeyFrames(keyFrames) {
13
+ (0, _classCallCheck2.default)(this, KeyFrames);
14
+ (0, _defineProperty2.default)(this, "startIndex", -1);
15
+ (0, _defineProperty2.default)(this, "endIndex", -1);
16
+ (0, _defineProperty2.default)(this, "factor", 0);
17
+ (0, _defineProperty2.default)(this, "times", []);
18
+ (0, _defineProperty2.default)(this, "values", []);
19
+ (0, _defineProperty2.default)(this, "_lastTime", -1);
20
+ this.setKeyFrames(keyFrames);
21
+ this.setTime(0);
22
+ }
23
+ (0, _createClass2.default)(KeyFrames, [{
24
+ key: "setKeyFrames",
25
+ value: function setKeyFrames(keyFrames) {
26
+ var numKeys = keyFrames.length;
27
+ this.times.length = numKeys;
28
+ this.values.length = numKeys;
29
+ for (var i = 0; i < numKeys; ++i) {
30
+ this.times[i] = keyFrames[i][0];
31
+ this.values[i] = keyFrames[i][1];
32
+ }
33
+ this._calculateKeys(this._lastTime);
34
+ }
35
+ }, {
36
+ key: "setTime",
37
+ value: function setTime(time) {
38
+ time = Math.max(0, time);
39
+ if (time !== this._lastTime) {
40
+ this._calculateKeys(time);
41
+ this._lastTime = time;
42
+ }
43
+ }
44
+ }, {
45
+ key: "getStartTime",
46
+ value: function getStartTime() {
47
+ return this.times[this.startIndex];
48
+ }
49
+ }, {
50
+ key: "getEndTime",
51
+ value: function getEndTime() {
52
+ return this.times[this.endIndex];
53
+ }
54
+ }, {
55
+ key: "getStartData",
56
+ value: function getStartData() {
57
+ return this.values[this.startIndex];
58
+ }
59
+ }, {
60
+ key: "getEndData",
61
+ value: function getEndData() {
62
+ return this.values[this.endIndex];
63
+ }
64
+ }, {
65
+ key: "_calculateKeys",
66
+ value: function _calculateKeys(time) {
67
+ var index = 0;
68
+ var numKeys = this.times.length;
69
+ for (index = 0; index < numKeys - 2; ++index) {
70
+ if (this.times[index + 1] > time) {
71
+ break;
72
+ }
73
+ }
74
+ this.startIndex = index;
75
+ this.endIndex = index + 1;
76
+ var startTime = this.times[this.startIndex];
77
+ var endTime = this.times[this.endIndex];
78
+ this.factor = Math.min(Math.max(0, (time - startTime) / (endTime - startTime)), 1);
79
+ }
80
+ }]);
81
+ return KeyFrames;
82
+ }();
83
+ exports.KeyFrames = KeyFrames;
84
+ //# sourceMappingURL=key-frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"key-frames.js","names":["KeyFrames","keyFrames","_classCallCheck2","default","_defineProperty2","setKeyFrames","setTime","_createClass2","key","value","numKeys","length","times","values","i","_calculateKeys","_lastTime","time","Math","max","getStartTime","startIndex","getEndTime","endIndex","getStartData","getEndData","index","startTime","endTime","factor","min","exports"],"sources":["../../../src/animation/key-frames.ts"],"sourcesContent":["// keyframes\nexport type KeyFrame<T> = [number, T];\n\n/** Holds a list of key frames (timestamped values) */\nexport class KeyFrames<T = number> {\n startIndex: number = -1;\n endIndex: number = -1;\n factor: number = 0;\n times: number[] = [];\n values: T[] = [];\n private _lastTime = -1;\n\n constructor(keyFrames: KeyFrame<T>[]) {\n this.setKeyFrames(keyFrames);\n this.setTime(0);\n }\n\n setKeyFrames(keyFrames: KeyFrame<T>[]): void {\n const numKeys = keyFrames.length;\n this.times.length = numKeys;\n this.values.length = numKeys;\n\n for (let i = 0; i < numKeys; ++i) {\n this.times[i] = keyFrames[i][0];\n this.values[i] = keyFrames[i][1];\n }\n\n this._calculateKeys(this._lastTime);\n }\n\n setTime(time: number): void {\n time = Math.max(0, time);\n\n if (time !== this._lastTime) {\n this._calculateKeys(time);\n this._lastTime = time;\n }\n }\n\n getStartTime(): number {\n return this.times[this.startIndex];\n }\n\n getEndTime(): number {\n return this.times[this.endIndex];\n }\n\n getStartData(): T {\n return this.values[this.startIndex];\n }\n\n getEndData(): T {\n return this.values[this.endIndex];\n }\n\n _calculateKeys(time: number): void {\n let index = 0;\n const numKeys = this.times.length;\n\n for (index = 0; index < numKeys - 2; ++index) {\n if (this.times[index + 1] > time) {\n break;\n }\n }\n\n this.startIndex = index;\n this.endIndex = index + 1;\n\n const startTime = this.times[this.startIndex];\n const endTime = this.times[this.endIndex];\n this.factor = Math.min(Math.max(0, (time - startTime) / (endTime - startTime)), 1);\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Timeline = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
13
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
+ var channelHandles = 1;
16
+ var animationHandles = 1;
17
+ var Timeline = function () {
18
+ function Timeline() {
19
+ (0, _classCallCheck2.default)(this, Timeline);
20
+ (0, _defineProperty2.default)(this, "time", 0);
21
+ (0, _defineProperty2.default)(this, "channels", new Map());
22
+ (0, _defineProperty2.default)(this, "animations", new Map());
23
+ (0, _defineProperty2.default)(this, "playing", false);
24
+ (0, _defineProperty2.default)(this, "lastEngineTime", -1);
25
+ }
26
+ (0, _createClass2.default)(Timeline, [{
27
+ key: "addChannel",
28
+ value: function addChannel(props) {
29
+ var _props$delay = props.delay,
30
+ delay = _props$delay === void 0 ? 0 : _props$delay,
31
+ _props$duration = props.duration,
32
+ duration = _props$duration === void 0 ? Number.POSITIVE_INFINITY : _props$duration,
33
+ _props$rate = props.rate,
34
+ rate = _props$rate === void 0 ? 1 : _props$rate,
35
+ _props$repeat = props.repeat,
36
+ repeat = _props$repeat === void 0 ? 1 : _props$repeat;
37
+ var handle = channelHandles++;
38
+ var channel = {
39
+ time: 0,
40
+ delay: delay,
41
+ duration: duration,
42
+ rate: rate,
43
+ repeat: repeat
44
+ };
45
+ this._setChannelTime(channel, this.time);
46
+ this.channels.set(handle, channel);
47
+ return handle;
48
+ }
49
+ }, {
50
+ key: "removeChannel",
51
+ value: function removeChannel(handle) {
52
+ this.channels.delete(handle);
53
+ var _iterator = _createForOfIteratorHelper(this.animations),
54
+ _step;
55
+ try {
56
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
57
+ var _step$value = (0, _slicedToArray2.default)(_step.value, 2),
58
+ animationHandle = _step$value[0],
59
+ animation = _step$value[1];
60
+ if (animation.channel === handle) {
61
+ this.detachAnimation(animationHandle);
62
+ }
63
+ }
64
+ } catch (err) {
65
+ _iterator.e(err);
66
+ } finally {
67
+ _iterator.f();
68
+ }
69
+ }
70
+ }, {
71
+ key: "isFinished",
72
+ value: function isFinished(handle) {
73
+ var channel = this.channels.get(handle);
74
+ if (channel === undefined) {
75
+ return false;
76
+ }
77
+ return this.time >= channel.delay + channel.duration * channel.repeat;
78
+ }
79
+ }, {
80
+ key: "getTime",
81
+ value: function getTime(handle) {
82
+ if (handle === undefined) {
83
+ return this.time;
84
+ }
85
+ var channel = this.channels.get(handle);
86
+ if (channel === undefined) {
87
+ return -1;
88
+ }
89
+ return channel.time;
90
+ }
91
+ }, {
92
+ key: "setTime",
93
+ value: function setTime(time) {
94
+ this.time = Math.max(0, time);
95
+ var channels = this.channels.values();
96
+ var _iterator2 = _createForOfIteratorHelper(channels),
97
+ _step2;
98
+ try {
99
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
100
+ var channel = _step2.value;
101
+ this._setChannelTime(channel, this.time);
102
+ }
103
+ } catch (err) {
104
+ _iterator2.e(err);
105
+ } finally {
106
+ _iterator2.f();
107
+ }
108
+ var animations = this.animations.values();
109
+ var _iterator3 = _createForOfIteratorHelper(animations),
110
+ _step3;
111
+ try {
112
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
113
+ var animationData = _step3.value;
114
+ var animation = animationData.animation,
115
+ _channel = animationData.channel;
116
+ animation.setTime(this.getTime(_channel));
117
+ }
118
+ } catch (err) {
119
+ _iterator3.e(err);
120
+ } finally {
121
+ _iterator3.f();
122
+ }
123
+ }
124
+ }, {
125
+ key: "play",
126
+ value: function play() {
127
+ this.playing = true;
128
+ }
129
+ }, {
130
+ key: "pause",
131
+ value: function pause() {
132
+ this.playing = false;
133
+ this.lastEngineTime = -1;
134
+ }
135
+ }, {
136
+ key: "reset",
137
+ value: function reset() {
138
+ this.setTime(0);
139
+ }
140
+ }, {
141
+ key: "attachAnimation",
142
+ value: function attachAnimation(animation, channelHandle) {
143
+ var animationHandle = animationHandles++;
144
+ this.animations.set(animationHandle, {
145
+ animation: animation,
146
+ channel: channelHandle
147
+ });
148
+ animation.setTime(this.getTime(channelHandle));
149
+ return animationHandle;
150
+ }
151
+ }, {
152
+ key: "detachAnimation",
153
+ value: function detachAnimation(handle) {
154
+ this.animations.delete(handle);
155
+ }
156
+ }, {
157
+ key: "update",
158
+ value: function update(engineTime) {
159
+ if (this.playing) {
160
+ if (this.lastEngineTime === -1) {
161
+ this.lastEngineTime = engineTime;
162
+ }
163
+ this.setTime(this.time + (engineTime - this.lastEngineTime));
164
+ this.lastEngineTime = engineTime;
165
+ }
166
+ }
167
+ }, {
168
+ key: "_setChannelTime",
169
+ value: function _setChannelTime(channel, time) {
170
+ var offsetTime = time - channel.delay;
171
+ var totalDuration = channel.duration * channel.repeat;
172
+ if (offsetTime >= totalDuration) {
173
+ channel.time = channel.duration * channel.rate;
174
+ } else {
175
+ channel.time = Math.max(0, offsetTime) % channel.duration;
176
+ channel.time *= channel.rate;
177
+ }
178
+ }
179
+ }]);
180
+ return Timeline;
181
+ }();
182
+ exports.Timeline = Timeline;
183
+ //# sourceMappingURL=timeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeline.js","names":["channelHandles","animationHandles","Timeline","_classCallCheck2","default","_defineProperty2","Map","_createClass2","key","value","addChannel","props","_props$delay","delay","_props$duration","duration","Number","POSITIVE_INFINITY","_props$rate","rate","_props$repeat","repeat","handle","channel","time","_setChannelTime","channels","set","removeChannel","delete","_iterator","_createForOfIteratorHelper","animations","_step","s","n","done","_step$value","_slicedToArray2","animationHandle","animation","detachAnimation","err","e","f","isFinished","get","undefined","getTime","setTime","Math","max","values","_iterator2","_step2","_iterator3","_step3","animationData","play","playing","pause","lastEngineTime","reset","attachAnimation","channelHandle","update","engineTime","offsetTime","totalDuration","exports"],"sources":["../../../src/animation/timeline.ts"],"sourcesContent":["// luma.gl, MIT license\n\n/**\n * Timeline channel properties\n * @param delay = 0;\n * @param duration = Number.POSITIVE_INFINITY;\n * @param rate = 1\n * @param repeat = 1\n */\n export type ChannelOptions = {\n delay?: number\n duration?: number\n rate?: number\n repeat?: number\n}\n\nexport type AnimationOptions = {\n setTime: (time: number) => void\n}\n\n type Channel = {\n time: number\n delay: number\n duration: number\n rate: number\n repeat: number\n}\n\ntype Animation = {\n channel?: number;\n animation: {\n setTime: (time: number) => void\n }\n}\n\nlet channelHandles = 1;\nlet animationHandles = 1;\n\nexport class Timeline {\n time: number = 0;\n channels = new Map<number, Channel>();\n animations = new Map<number, Animation>();\n playing: boolean = false;\n lastEngineTime: number = -1;\n\n constructor() {\n }\n\n addChannel(props: ChannelOptions): number {\n const {delay = 0, duration = Number.POSITIVE_INFINITY, rate = 1, repeat = 1} = props;\n\n const handle = channelHandles++;\n const channel: Channel = {\n time: 0,\n delay,\n duration,\n rate,\n repeat\n };\n this._setChannelTime(channel, this.time);\n this.channels.set(handle, channel);\n\n return handle;\n }\n\n removeChannel(handle: number): void {\n this.channels.delete(handle);\n\n for (const [animationHandle, animation] of this.animations) {\n if (animation.channel === handle) {\n this.detachAnimation(animationHandle);\n }\n }\n }\n\n isFinished(handle: number): boolean {\n const channel = this.channels.get(handle);\n if (channel === undefined) {\n return false;\n }\n\n return this.time >= channel.delay + channel.duration * channel.repeat;\n }\n\n getTime(handle?: number): number {\n if (handle === undefined) {\n return this.time;\n }\n\n const channel = this.channels.get(handle);\n\n if (channel === undefined) {\n return -1;\n }\n\n return channel.time;\n }\n\n setTime(time: number): void {\n this.time = Math.max(0, time);\n\n const channels = this.channels.values();\n for (const channel of channels) {\n this._setChannelTime(channel, this.time);\n }\n\n const animations = this.animations.values();\n for (const animationData of animations) {\n const {animation, channel} = animationData;\n animation.setTime(this.getTime(channel));\n }\n }\n\n play(): void {\n this.playing = true;\n }\n\n pause(): void {\n this.playing = false;\n this.lastEngineTime = -1;\n }\n\n reset(): void {\n this.setTime(0);\n }\n\n attachAnimation(animation: AnimationOptions, channelHandle?: number): number {\n const animationHandle = animationHandles++;\n\n this.animations.set(animationHandle, {\n animation,\n channel: channelHandle\n });\n\n animation.setTime(this.getTime(channelHandle));\n\n return animationHandle;\n }\n\n detachAnimation(handle: number): void {\n this.animations.delete(handle);\n }\n\n update(engineTime: number): void {\n if (this.playing) {\n if (this.lastEngineTime === -1) {\n this.lastEngineTime = engineTime;\n }\n this.setTime(this.time + (engineTime - this.lastEngineTime));\n this.lastEngineTime = engineTime;\n }\n }\n\n _setChannelTime(channel: Channel, time: number): void {\n const offsetTime = time - channel.delay;\n const totalDuration = channel.duration * channel.repeat;\n // Note(Tarek): Don't loop on final repeat.\n if (offsetTime >= totalDuration) {\n channel.time = channel.duration * channel.rate;\n } else {\n channel.time = Math.max(0, offsetTime) % channel.duration;\n channel.time *= channel.rate;\n }\n }\n}\n"],"mappings":"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"}