@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.
- package/dist/animation/key-frames.d.ts +1 -1
- package/dist/animation/key-frames.d.ts.map +1 -1
- package/dist/animation/key-frames.js +51 -72
- package/dist/animation/timeline.d.ts +4 -4
- package/dist/animation/timeline.d.ts.map +1 -1
- package/dist/animation/timeline.js +94 -131
- package/dist/animation-loop/animation-loop.d.ts +2 -3
- package/dist/animation-loop/animation-loop.d.ts.map +1 -1
- package/dist/animation-loop/animation-loop.js +414 -473
- package/dist/animation-loop/animation-props.d.ts +1 -2
- package/dist/animation-loop/animation-props.d.ts.map +1 -1
- package/dist/animation-loop/animation-props.js +0 -1
- package/dist/animation-loop/make-animation-loop.d.ts +1 -1
- package/dist/animation-loop/make-animation-loop.d.ts.map +1 -1
- package/dist/animation-loop/make-animation-loop.js +26 -31
- package/dist/animation-loop/render-loop.js +17 -7
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +31 -0
- package/dist/es5/animation/key-frames.js +84 -0
- package/dist/es5/animation/key-frames.js.map +1 -0
- package/dist/es5/animation/timeline.js +183 -0
- package/dist/es5/animation/timeline.js.map +1 -0
- package/dist/es5/animation-loop/animation-loop.js +534 -0
- package/dist/es5/animation-loop/animation-loop.js.map +1 -0
- package/dist/es5/animation-loop/animation-props.js +2 -0
- package/dist/es5/animation-loop/animation-props.js.map +1 -0
- package/dist/es5/animation-loop/make-animation-loop.js +53 -0
- package/dist/es5/animation-loop/make-animation-loop.js.map +1 -0
- package/dist/es5/animation-loop/render-loop.js +39 -0
- package/dist/es5/animation-loop/render-loop.js.map +1 -0
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/geometries/cone-geometry.js +43 -0
- package/dist/es5/geometries/cone-geometry.js.map +1 -0
- package/dist/es5/geometries/cube-geometry.js +84 -0
- package/dist/es5/geometries/cube-geometry.js.map +1 -0
- package/dist/es5/geometries/cylinder-geometry.js +39 -0
- package/dist/es5/geometries/cylinder-geometry.js.map +1 -0
- package/dist/es5/geometries/ico-sphere-geometry.js +185 -0
- package/dist/es5/geometries/ico-sphere-geometry.js.map +1 -0
- package/dist/es5/geometries/plane-geometry.js +137 -0
- package/dist/es5/geometries/plane-geometry.js.map +1 -0
- package/dist/es5/geometries/sphere-geometry.js +120 -0
- package/dist/es5/geometries/sphere-geometry.js.map +1 -0
- package/dist/es5/geometries/truncated-cone-geometry.js +160 -0
- package/dist/es5/geometries/truncated-cone-geometry.js.map +1 -0
- package/dist/es5/geometry/geometry-table.js +2 -0
- package/dist/es5/geometry/geometry-table.js.map +1 -0
- package/dist/es5/geometry/geometry-utils.js +39 -0
- package/dist/es5/geometry/geometry-utils.js.map +1 -0
- package/dist/es5/geometry/geometry.js +150 -0
- package/dist/es5/geometry/geometry.js.map +1 -0
- package/dist/es5/geometry/primitive-utils.js +2 -0
- package/dist/es5/geometry/primitive-utils.js.map +1 -0
- package/dist/es5/index.js +112 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/clip-space.js +2 -0
- package/dist/es5/lib/clip-space.js.map +1 -0
- package/dist/es5/lib/model-utils.js +52 -0
- package/dist/es5/lib/model-utils.js.map +1 -0
- package/dist/es5/lib/model.js +173 -0
- package/dist/es5/lib/model.js.map +1 -0
- package/dist/es5/lib/pipeline-factory.js +244 -0
- package/dist/es5/lib/pipeline-factory.js.map +1 -0
- package/dist/esm/animation/key-frames.js +57 -0
- package/dist/esm/animation/key-frames.js.map +1 -0
- package/dist/esm/animation/timeline.js +113 -0
- package/dist/esm/animation/timeline.js.map +1 -0
- package/dist/esm/animation-loop/animation-loop.js +367 -0
- package/dist/esm/animation-loop/animation-loop.js.map +1 -0
- package/dist/esm/animation-loop/animation-props.js +2 -0
- package/dist/esm/animation-loop/animation-props.js.map +1 -0
- package/dist/esm/animation-loop/make-animation-loop.js +28 -0
- package/dist/esm/animation-loop/make-animation-loop.js.map +1 -0
- package/dist/esm/animation-loop/render-loop.js +7 -0
- package/dist/esm/animation-loop/render-loop.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/geometries/cone-geometry.js +21 -0
- package/dist/esm/geometries/cone-geometry.js.map +1 -0
- package/dist/esm/geometries/cube-geometry.js +67 -0
- package/dist/esm/geometries/cube-geometry.js.map +1 -0
- package/dist/esm/geometries/cylinder-geometry.js +18 -0
- package/dist/esm/geometries/cylinder-geometry.js.map +1 -0
- package/dist/esm/geometries/ico-sphere-geometry.js +170 -0
- package/dist/esm/geometries/ico-sphere-geometry.js.map +1 -0
- package/dist/esm/geometries/plane-geometry.js +119 -0
- package/dist/esm/geometries/plane-geometry.js.map +1 -0
- package/dist/esm/geometries/sphere-geometry.js +102 -0
- package/dist/esm/geometries/sphere-geometry.js.map +1 -0
- package/dist/esm/geometries/truncated-cone-geometry.js +136 -0
- package/dist/esm/geometries/truncated-cone-geometry.js.map +1 -0
- package/dist/esm/geometry/geometry-table.js +2 -0
- package/dist/esm/geometry/geometry-table.js.map +1 -0
- package/dist/esm/geometry/geometry-utils.js +37 -0
- package/dist/esm/geometry/geometry-utils.js.map +1 -0
- package/dist/esm/geometry/geometry.js +119 -0
- package/dist/esm/geometry/geometry.js.map +1 -0
- package/dist/esm/geometry/primitive-utils.js +2 -0
- package/dist/esm/geometry/primitive-utils.js.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/clip-space.js +2 -0
- package/dist/esm/lib/clip-space.js.map +1 -0
- package/dist/esm/lib/model-utils.js +40 -0
- package/dist/esm/lib/model-utils.js.map +1 -0
- package/dist/esm/lib/model.js +146 -0
- package/dist/esm/lib/model.js.map +1 -0
- package/dist/esm/lib/pipeline-factory.js +180 -0
- package/dist/esm/lib/pipeline-factory.js.map +1 -0
- package/dist/geometries/cone-geometry.d.ts +1 -1
- package/dist/geometries/cone-geometry.d.ts.map +1 -1
- package/dist/geometries/cone-geometry.js +12 -17
- package/dist/geometries/cube-geometry.d.ts +1 -1
- package/dist/geometries/cube-geometry.d.ts.map +1 -1
- package/dist/geometries/cube-geometry.js +187 -56
- package/dist/geometries/cylinder-geometry.d.ts +1 -1
- package/dist/geometries/cylinder-geometry.d.ts.map +1 -1
- package/dist/geometries/cylinder-geometry.js +10 -14
- package/dist/geometries/ico-sphere-geometry.d.ts +1 -1
- package/dist/geometries/ico-sphere-geometry.d.ts.map +1 -1
- package/dist/geometries/ico-sphere-geometry.js +141 -170
- package/dist/geometries/plane-geometry.d.ts +1 -1
- package/dist/geometries/plane-geometry.d.ts.map +1 -1
- package/dist/geometries/plane-geometry.js +93 -121
- package/dist/geometries/sphere-geometry.d.ts +1 -1
- package/dist/geometries/sphere-geometry.d.ts.map +1 -1
- package/dist/geometries/sphere-geometry.js +76 -100
- package/dist/geometries/truncated-cone-geometry.d.ts +1 -1
- package/dist/geometries/truncated-cone-geometry.d.ts.map +1 -1
- package/dist/geometries/truncated-cone-geometry.js +104 -131
- package/dist/geometry/geometry-table.d.ts +1 -1
- package/dist/geometry/geometry-table.d.ts.map +1 -1
- package/dist/geometry/geometry-table.js +0 -1
- package/dist/geometry/geometry-utils.js +22 -41
- package/dist/geometry/geometry.d.ts +4 -4
- package/dist/geometry/geometry.d.ts.map +1 -1
- package/dist/geometry/geometry.js +96 -142
- package/dist/geometry/primitive-utils.js +30 -1
- package/dist/index.js +20 -16
- package/dist/lib/clip-space.js +50 -1
- package/dist/lib/model-utils.js +97 -29
- package/dist/lib/model.d.ts +1 -1
- package/dist/lib/model.d.ts.map +1 -1
- package/dist/lib/model.js +122 -166
- package/dist/lib/pipeline-factory.d.ts +3 -3
- package/dist/lib/pipeline-factory.d.ts.map +1 -1
- package/dist/lib/pipeline-factory.js +136 -204
- package/package.json +11 -10
- package/dist/animation/key-frames.js.map +0 -1
- package/dist/animation/timeline.js.map +0 -1
- package/dist/animation-loop/animation-loop.js.map +0 -1
- package/dist/animation-loop/animation-props.js.map +0 -1
- package/dist/animation-loop/make-animation-loop.js.map +0 -1
- package/dist/animation-loop/render-loop.js.map +0 -1
- package/dist/bundle.js.map +0 -1
- package/dist/geometries/cone-geometry.js.map +0 -1
- package/dist/geometries/cube-geometry.js.map +0 -1
- package/dist/geometries/cylinder-geometry.js.map +0 -1
- package/dist/geometries/ico-sphere-geometry.js.map +0 -1
- package/dist/geometries/plane-geometry.js.map +0 -1
- package/dist/geometries/sphere-geometry.js.map +0 -1
- package/dist/geometries/truncated-cone-geometry.js.map +0 -1
- package/dist/geometry/geometry-table.js.map +0 -1
- package/dist/geometry/geometry-utils.js.map +0 -1
- package/dist/geometry/geometry.js.map +0 -1
- package/dist/geometry/primitive-utils.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/clip-space.js.map +0 -1
- package/dist/lib/model-utils.js.map +0 -1
- package/dist/lib/model.js.map +0 -1
- 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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"}
|