@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,534 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.AnimationLoop = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
|
+
var _api = require("@luma.gl/api");
|
|
15
|
+
var _stats = require("@probe.gl/stats");
|
|
16
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
|
+
var statIdCounter = 0;
|
|
19
|
+
var DEFAULT_ANIMATION_LOOP_PROPS = {
|
|
20
|
+
device: null,
|
|
21
|
+
onAddHTML: function onAddHTML() {
|
|
22
|
+
return '';
|
|
23
|
+
},
|
|
24
|
+
onInitialize: function () {
|
|
25
|
+
var _onInitialize = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
26
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
27
|
+
while (1) switch (_context.prev = _context.next) {
|
|
28
|
+
case 0:
|
|
29
|
+
return _context.abrupt("return", null);
|
|
30
|
+
case 1:
|
|
31
|
+
case "end":
|
|
32
|
+
return _context.stop();
|
|
33
|
+
}
|
|
34
|
+
}, _callee);
|
|
35
|
+
}));
|
|
36
|
+
function onInitialize() {
|
|
37
|
+
return _onInitialize.apply(this, arguments);
|
|
38
|
+
}
|
|
39
|
+
return onInitialize;
|
|
40
|
+
}(),
|
|
41
|
+
onRender: function onRender() {},
|
|
42
|
+
onFinalize: function onFinalize() {},
|
|
43
|
+
onError: function onError(error) {
|
|
44
|
+
return console.error(error);
|
|
45
|
+
},
|
|
46
|
+
stats: _api.luma.stats.get("animation-loop-".concat(statIdCounter++)),
|
|
47
|
+
useDevicePixels: true,
|
|
48
|
+
autoResizeViewport: false,
|
|
49
|
+
autoResizeDrawingBuffer: false
|
|
50
|
+
};
|
|
51
|
+
var AnimationLoop = function () {
|
|
52
|
+
function AnimationLoop(props) {
|
|
53
|
+
(0, _classCallCheck2.default)(this, AnimationLoop);
|
|
54
|
+
(0, _defineProperty2.default)(this, "device", null);
|
|
55
|
+
(0, _defineProperty2.default)(this, "canvas", null);
|
|
56
|
+
(0, _defineProperty2.default)(this, "props", void 0);
|
|
57
|
+
(0, _defineProperty2.default)(this, "animationProps", null);
|
|
58
|
+
(0, _defineProperty2.default)(this, "timeline", null);
|
|
59
|
+
(0, _defineProperty2.default)(this, "stats", void 0);
|
|
60
|
+
(0, _defineProperty2.default)(this, "cpuTime", void 0);
|
|
61
|
+
(0, _defineProperty2.default)(this, "gpuTime", void 0);
|
|
62
|
+
(0, _defineProperty2.default)(this, "frameRate", void 0);
|
|
63
|
+
(0, _defineProperty2.default)(this, "display", void 0);
|
|
64
|
+
(0, _defineProperty2.default)(this, "needsRedraw", 'initialized');
|
|
65
|
+
(0, _defineProperty2.default)(this, "_initialized", false);
|
|
66
|
+
(0, _defineProperty2.default)(this, "_running", false);
|
|
67
|
+
(0, _defineProperty2.default)(this, "_animationFrameId", null);
|
|
68
|
+
(0, _defineProperty2.default)(this, "_nextFramePromise", null);
|
|
69
|
+
(0, _defineProperty2.default)(this, "_resolveNextFrame", null);
|
|
70
|
+
(0, _defineProperty2.default)(this, "_cpuStartTime", 0);
|
|
71
|
+
this.props = _objectSpread(_objectSpread({}, DEFAULT_ANIMATION_LOOP_PROPS), props);
|
|
72
|
+
props = this.props;
|
|
73
|
+
if (!props.device) {
|
|
74
|
+
throw new Error('No device provided');
|
|
75
|
+
}
|
|
76
|
+
var _this$props$useDevice = this.props.useDevicePixels,
|
|
77
|
+
useDevicePixels = _this$props$useDevice === void 0 ? true : _this$props$useDevice;
|
|
78
|
+
this.stats = props.stats || new _stats.Stats({
|
|
79
|
+
id: 'animation-loop-stats'
|
|
80
|
+
});
|
|
81
|
+
this.cpuTime = this.stats.get('CPU Time');
|
|
82
|
+
this.gpuTime = this.stats.get('GPU Time');
|
|
83
|
+
this.frameRate = this.stats.get('Frame Rate');
|
|
84
|
+
this.setProps({
|
|
85
|
+
autoResizeViewport: props.autoResizeViewport,
|
|
86
|
+
autoResizeDrawingBuffer: props.autoResizeDrawingBuffer,
|
|
87
|
+
useDevicePixels: useDevicePixels
|
|
88
|
+
});
|
|
89
|
+
this.start = this.start.bind(this);
|
|
90
|
+
this.stop = this.stop.bind(this);
|
|
91
|
+
this._onMousemove = this._onMousemove.bind(this);
|
|
92
|
+
this._onMouseleave = this._onMouseleave.bind(this);
|
|
93
|
+
}
|
|
94
|
+
(0, _createClass2.default)(AnimationLoop, [{
|
|
95
|
+
key: "destroy",
|
|
96
|
+
value: function destroy() {
|
|
97
|
+
this.stop();
|
|
98
|
+
this._setDisplay(null);
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "delete",
|
|
102
|
+
value: function _delete() {
|
|
103
|
+
this.destroy();
|
|
104
|
+
}
|
|
105
|
+
}, {
|
|
106
|
+
key: "setNeedsRedraw",
|
|
107
|
+
value: function setNeedsRedraw(reason) {
|
|
108
|
+
this.needsRedraw = this.needsRedraw || reason;
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
}, {
|
|
112
|
+
key: "setProps",
|
|
113
|
+
value: function setProps(props) {
|
|
114
|
+
if ('autoResizeViewport' in props) {
|
|
115
|
+
this.props.autoResizeViewport = props.autoResizeViewport || false;
|
|
116
|
+
}
|
|
117
|
+
if ('autoResizeDrawingBuffer' in props) {
|
|
118
|
+
this.props.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer || false;
|
|
119
|
+
}
|
|
120
|
+
if ('useDevicePixels' in props) {
|
|
121
|
+
this.props.useDevicePixels = props.useDevicePixels || false;
|
|
122
|
+
}
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
}, {
|
|
126
|
+
key: "start",
|
|
127
|
+
value: function () {
|
|
128
|
+
var _start = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2() {
|
|
129
|
+
var appContext, error;
|
|
130
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
131
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
132
|
+
case 0:
|
|
133
|
+
if (!this._running) {
|
|
134
|
+
_context2.next = 2;
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
return _context2.abrupt("return", this);
|
|
138
|
+
case 2:
|
|
139
|
+
this._running = true;
|
|
140
|
+
_context2.prev = 3;
|
|
141
|
+
if (this._running) {
|
|
142
|
+
_context2.next = 6;
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
return _context2.abrupt("return", null);
|
|
146
|
+
case 6:
|
|
147
|
+
if (this._initialized) {
|
|
148
|
+
_context2.next = 13;
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
this._initialized = true;
|
|
152
|
+
_context2.next = 10;
|
|
153
|
+
return this._initDevice();
|
|
154
|
+
case 10:
|
|
155
|
+
this._initialize();
|
|
156
|
+
_context2.next = 13;
|
|
157
|
+
return this.props.onInitialize(this._getAnimationProps());
|
|
158
|
+
case 13:
|
|
159
|
+
if (this._running) {
|
|
160
|
+
_context2.next = 15;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
return _context2.abrupt("return", null);
|
|
164
|
+
case 15:
|
|
165
|
+
if (appContext !== false) {
|
|
166
|
+
this._cancelAnimationFrame();
|
|
167
|
+
this._requestAnimationFrame();
|
|
168
|
+
}
|
|
169
|
+
return _context2.abrupt("return", this);
|
|
170
|
+
case 19:
|
|
171
|
+
_context2.prev = 19;
|
|
172
|
+
_context2.t0 = _context2["catch"](3);
|
|
173
|
+
error = _context2.t0 instanceof Error ? _context2.t0 : new Error('Unknown error');
|
|
174
|
+
this.props.onError(error);
|
|
175
|
+
throw error;
|
|
176
|
+
case 24:
|
|
177
|
+
case "end":
|
|
178
|
+
return _context2.stop();
|
|
179
|
+
}
|
|
180
|
+
}, _callee2, this, [[3, 19]]);
|
|
181
|
+
}));
|
|
182
|
+
function start() {
|
|
183
|
+
return _start.apply(this, arguments);
|
|
184
|
+
}
|
|
185
|
+
return start;
|
|
186
|
+
}()
|
|
187
|
+
}, {
|
|
188
|
+
key: "redraw",
|
|
189
|
+
value: function redraw() {
|
|
190
|
+
var _this$device;
|
|
191
|
+
if ((_this$device = this.device) !== null && _this$device !== void 0 && _this$device.isLost) {
|
|
192
|
+
return this;
|
|
193
|
+
}
|
|
194
|
+
this._beginTimers();
|
|
195
|
+
this._setupFrame();
|
|
196
|
+
this._updateAnimationProps();
|
|
197
|
+
this._renderFrame(this._getAnimationProps());
|
|
198
|
+
this._clearNeedsRedraw();
|
|
199
|
+
if (this._resolveNextFrame) {
|
|
200
|
+
this._resolveNextFrame(this);
|
|
201
|
+
this._nextFramePromise = null;
|
|
202
|
+
this._resolveNextFrame = null;
|
|
203
|
+
}
|
|
204
|
+
this._endTimers();
|
|
205
|
+
return this;
|
|
206
|
+
}
|
|
207
|
+
}, {
|
|
208
|
+
key: "stop",
|
|
209
|
+
value: function stop() {
|
|
210
|
+
if (this._running) {
|
|
211
|
+
if (this.animationProps) {
|
|
212
|
+
this.props.onFinalize(this.animationProps);
|
|
213
|
+
}
|
|
214
|
+
this._cancelAnimationFrame();
|
|
215
|
+
this._nextFramePromise = null;
|
|
216
|
+
this._resolveNextFrame = null;
|
|
217
|
+
this._running = false;
|
|
218
|
+
}
|
|
219
|
+
return this;
|
|
220
|
+
}
|
|
221
|
+
}, {
|
|
222
|
+
key: "attachTimeline",
|
|
223
|
+
value: function attachTimeline(timeline) {
|
|
224
|
+
this.timeline = timeline;
|
|
225
|
+
return this.timeline;
|
|
226
|
+
}
|
|
227
|
+
}, {
|
|
228
|
+
key: "detachTimeline",
|
|
229
|
+
value: function detachTimeline() {
|
|
230
|
+
this.timeline = null;
|
|
231
|
+
}
|
|
232
|
+
}, {
|
|
233
|
+
key: "waitForRender",
|
|
234
|
+
value: function waitForRender() {
|
|
235
|
+
var _this = this;
|
|
236
|
+
this.setNeedsRedraw('waitForRender');
|
|
237
|
+
if (!this._nextFramePromise) {
|
|
238
|
+
this._nextFramePromise = new Promise(function (resolve) {
|
|
239
|
+
_this._resolveNextFrame = resolve;
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
return this._nextFramePromise;
|
|
243
|
+
}
|
|
244
|
+
}, {
|
|
245
|
+
key: "toDataURL",
|
|
246
|
+
value: function () {
|
|
247
|
+
var _toDataURL = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee3() {
|
|
248
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
249
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
250
|
+
case 0:
|
|
251
|
+
this.setNeedsRedraw('toDataURL');
|
|
252
|
+
_context3.next = 3;
|
|
253
|
+
return this.waitForRender();
|
|
254
|
+
case 3:
|
|
255
|
+
if (!(this.canvas instanceof HTMLCanvasElement)) {
|
|
256
|
+
_context3.next = 5;
|
|
257
|
+
break;
|
|
258
|
+
}
|
|
259
|
+
return _context3.abrupt("return", this.canvas.toDataURL());
|
|
260
|
+
case 5:
|
|
261
|
+
throw new Error('OffscreenCanvas');
|
|
262
|
+
case 6:
|
|
263
|
+
case "end":
|
|
264
|
+
return _context3.stop();
|
|
265
|
+
}
|
|
266
|
+
}, _callee3, this);
|
|
267
|
+
}));
|
|
268
|
+
function toDataURL() {
|
|
269
|
+
return _toDataURL.apply(this, arguments);
|
|
270
|
+
}
|
|
271
|
+
return toDataURL;
|
|
272
|
+
}()
|
|
273
|
+
}, {
|
|
274
|
+
key: "_initialize",
|
|
275
|
+
value: function _initialize() {
|
|
276
|
+
this._startEventHandling();
|
|
277
|
+
this._initializeAnimationProps();
|
|
278
|
+
this._updateAnimationProps();
|
|
279
|
+
this._resizeCanvasDrawingBuffer();
|
|
280
|
+
this._resizeViewport();
|
|
281
|
+
}
|
|
282
|
+
}, {
|
|
283
|
+
key: "_setDisplay",
|
|
284
|
+
value: function _setDisplay(display) {
|
|
285
|
+
if (this.display) {
|
|
286
|
+
this.display.delete();
|
|
287
|
+
this.display.animationLoop = null;
|
|
288
|
+
}
|
|
289
|
+
if (display) {
|
|
290
|
+
display.animationLoop = this;
|
|
291
|
+
}
|
|
292
|
+
this.display = display;
|
|
293
|
+
}
|
|
294
|
+
}, {
|
|
295
|
+
key: "_requestAnimationFrame",
|
|
296
|
+
value: function _requestAnimationFrame() {
|
|
297
|
+
if (!this._running) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
this._animationFrameId = (0, _api.requestAnimationFrame)(this._animationFrame.bind(this));
|
|
301
|
+
}
|
|
302
|
+
}, {
|
|
303
|
+
key: "_cancelAnimationFrame",
|
|
304
|
+
value: function _cancelAnimationFrame() {
|
|
305
|
+
if (this._animationFrameId !== null) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
(0, _api.cancelAnimationFrame)(this._animationFrameId);
|
|
309
|
+
this._animationFrameId = null;
|
|
310
|
+
}
|
|
311
|
+
}, {
|
|
312
|
+
key: "_animationFrame",
|
|
313
|
+
value: function _animationFrame() {
|
|
314
|
+
if (!this._running) {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
this.redraw();
|
|
318
|
+
this._requestAnimationFrame();
|
|
319
|
+
}
|
|
320
|
+
}, {
|
|
321
|
+
key: "_renderFrame",
|
|
322
|
+
value: function _renderFrame(animationProps) {
|
|
323
|
+
if (this.display) {
|
|
324
|
+
this.display._renderFrame(animationProps);
|
|
325
|
+
return;
|
|
326
|
+
}
|
|
327
|
+
this.props.onRender(this._getAnimationProps());
|
|
328
|
+
}
|
|
329
|
+
}, {
|
|
330
|
+
key: "_clearNeedsRedraw",
|
|
331
|
+
value: function _clearNeedsRedraw() {
|
|
332
|
+
this.needsRedraw = false;
|
|
333
|
+
}
|
|
334
|
+
}, {
|
|
335
|
+
key: "_setupFrame",
|
|
336
|
+
value: function _setupFrame() {
|
|
337
|
+
this._resizeCanvasDrawingBuffer();
|
|
338
|
+
this._resizeViewport();
|
|
339
|
+
}
|
|
340
|
+
}, {
|
|
341
|
+
key: "_initializeAnimationProps",
|
|
342
|
+
value: function _initializeAnimationProps() {
|
|
343
|
+
var _this$device2, _this$device2$canvasC;
|
|
344
|
+
if (!this.device) {
|
|
345
|
+
throw new Error('loop');
|
|
346
|
+
}
|
|
347
|
+
this.animationProps = {
|
|
348
|
+
animationLoop: this,
|
|
349
|
+
device: this.device,
|
|
350
|
+
canvas: (_this$device2 = this.device) === null || _this$device2 === void 0 ? void 0 : (_this$device2$canvasC = _this$device2.canvasContext) === null || _this$device2$canvasC === void 0 ? void 0 : _this$device2$canvasC.canvas,
|
|
351
|
+
timeline: this.timeline,
|
|
352
|
+
useDevicePixels: this.props.useDevicePixels,
|
|
353
|
+
needsRedraw: false,
|
|
354
|
+
width: 1,
|
|
355
|
+
height: 1,
|
|
356
|
+
aspect: 1,
|
|
357
|
+
time: 0,
|
|
358
|
+
startTime: Date.now(),
|
|
359
|
+
engineTime: 0,
|
|
360
|
+
tick: 0,
|
|
361
|
+
tock: 0,
|
|
362
|
+
_mousePosition: null
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
}, {
|
|
366
|
+
key: "_getAnimationProps",
|
|
367
|
+
value: function _getAnimationProps() {
|
|
368
|
+
if (!this.animationProps) {
|
|
369
|
+
throw new Error('animationProps');
|
|
370
|
+
}
|
|
371
|
+
return this.animationProps;
|
|
372
|
+
}
|
|
373
|
+
}, {
|
|
374
|
+
key: "_updateAnimationProps",
|
|
375
|
+
value: function _updateAnimationProps() {
|
|
376
|
+
if (!this.animationProps) {
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
var _this$_getSizeAndAspe = this._getSizeAndAspect(),
|
|
380
|
+
width = _this$_getSizeAndAspe.width,
|
|
381
|
+
height = _this$_getSizeAndAspe.height,
|
|
382
|
+
aspect = _this$_getSizeAndAspe.aspect;
|
|
383
|
+
if (width !== this.animationProps.width || height !== this.animationProps.height) {
|
|
384
|
+
this.setNeedsRedraw('drawing buffer resized');
|
|
385
|
+
}
|
|
386
|
+
if (aspect !== this.animationProps.aspect) {
|
|
387
|
+
this.setNeedsRedraw('drawing buffer aspect changed');
|
|
388
|
+
}
|
|
389
|
+
this.animationProps.width = width;
|
|
390
|
+
this.animationProps.height = height;
|
|
391
|
+
this.animationProps.aspect = aspect;
|
|
392
|
+
this.animationProps.needsRedraw = this.needsRedraw;
|
|
393
|
+
this.animationProps.engineTime = Date.now() - this.animationProps.startTime;
|
|
394
|
+
if (this.timeline) {
|
|
395
|
+
this.timeline.update(this.animationProps.engineTime);
|
|
396
|
+
}
|
|
397
|
+
this.animationProps.tick = Math.floor(this.animationProps.time / 1000 * 60);
|
|
398
|
+
this.animationProps.tock++;
|
|
399
|
+
this.animationProps.time = this.timeline ? this.timeline.getTime() : this.animationProps.engineTime;
|
|
400
|
+
}
|
|
401
|
+
}, {
|
|
402
|
+
key: "_initDevice",
|
|
403
|
+
value: function () {
|
|
404
|
+
var _initDevice2 = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee4() {
|
|
405
|
+
var _this$device$canvasCo;
|
|
406
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
407
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
408
|
+
case 0:
|
|
409
|
+
_context4.next = 2;
|
|
410
|
+
return this.props.device;
|
|
411
|
+
case 2:
|
|
412
|
+
this.device = _context4.sent;
|
|
413
|
+
if (this.device) {
|
|
414
|
+
_context4.next = 5;
|
|
415
|
+
break;
|
|
416
|
+
}
|
|
417
|
+
throw new Error('No device provided');
|
|
418
|
+
case 5:
|
|
419
|
+
this.canvas = ((_this$device$canvasCo = this.device.canvasContext) === null || _this$device$canvasCo === void 0 ? void 0 : _this$device$canvasCo.canvas) || null;
|
|
420
|
+
case 6:
|
|
421
|
+
case "end":
|
|
422
|
+
return _context4.stop();
|
|
423
|
+
}
|
|
424
|
+
}, _callee4, this);
|
|
425
|
+
}));
|
|
426
|
+
function _initDevice() {
|
|
427
|
+
return _initDevice2.apply(this, arguments);
|
|
428
|
+
}
|
|
429
|
+
return _initDevice;
|
|
430
|
+
}()
|
|
431
|
+
}, {
|
|
432
|
+
key: "_createInfoDiv",
|
|
433
|
+
value: function _createInfoDiv() {
|
|
434
|
+
if (this.canvas && this.props.onAddHTML) {
|
|
435
|
+
var wrapperDiv = document.createElement('div');
|
|
436
|
+
document.body.appendChild(wrapperDiv);
|
|
437
|
+
wrapperDiv.style.position = 'relative';
|
|
438
|
+
var _div = document.createElement('div');
|
|
439
|
+
_div.style.position = 'absolute';
|
|
440
|
+
_div.style.left = '10px';
|
|
441
|
+
_div.style.bottom = '10px';
|
|
442
|
+
_div.style.width = '300px';
|
|
443
|
+
_div.style.background = 'white';
|
|
444
|
+
if (this.canvas instanceof HTMLCanvasElement) {
|
|
445
|
+
wrapperDiv.appendChild(this.canvas);
|
|
446
|
+
}
|
|
447
|
+
wrapperDiv.appendChild(_div);
|
|
448
|
+
var html = this.props.onAddHTML(_div);
|
|
449
|
+
if (html) {
|
|
450
|
+
_div.innerHTML = html;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
}, {
|
|
455
|
+
key: "_getSizeAndAspect",
|
|
456
|
+
value: function _getSizeAndAspect() {
|
|
457
|
+
var _this$device3, _this$device3$canvasC, _this$device4, _this$device4$canvasC;
|
|
458
|
+
if (!this.device) {
|
|
459
|
+
return {
|
|
460
|
+
width: 1,
|
|
461
|
+
height: 1,
|
|
462
|
+
aspect: 1
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
var _ref = ((_this$device3 = this.device) === null || _this$device3 === void 0 ? void 0 : (_this$device3$canvasC = _this$device3.canvasContext) === null || _this$device3$canvasC === void 0 ? void 0 : _this$device3$canvasC.getPixelSize()) || [1, 1],
|
|
466
|
+
_ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
467
|
+
width = _ref2[0],
|
|
468
|
+
height = _ref2[1];
|
|
469
|
+
var aspect = 1;
|
|
470
|
+
var canvas = (_this$device4 = this.device) === null || _this$device4 === void 0 ? void 0 : (_this$device4$canvasC = _this$device4.canvasContext) === null || _this$device4$canvasC === void 0 ? void 0 : _this$device4$canvasC.canvas;
|
|
471
|
+
if (canvas && canvas.clientHeight) {
|
|
472
|
+
aspect = canvas.clientWidth / canvas.clientHeight;
|
|
473
|
+
} else if (width > 0 && height > 0) {
|
|
474
|
+
aspect = width / height;
|
|
475
|
+
}
|
|
476
|
+
return {
|
|
477
|
+
width: width,
|
|
478
|
+
height: height,
|
|
479
|
+
aspect: aspect
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
}, {
|
|
483
|
+
key: "_resizeViewport",
|
|
484
|
+
value: function _resizeViewport() {
|
|
485
|
+
if (this.props.autoResizeViewport && this.device.gl) {
|
|
486
|
+
this.device.gl.viewport(0, 0, this.device.gl.drawingBufferWidth, this.device.gl.drawingBufferHeight);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
}, {
|
|
490
|
+
key: "_resizeCanvasDrawingBuffer",
|
|
491
|
+
value: function _resizeCanvasDrawingBuffer() {
|
|
492
|
+
if (this.props.autoResizeDrawingBuffer) {
|
|
493
|
+
var _this$device5, _this$device5$canvasC;
|
|
494
|
+
(_this$device5 = this.device) === null || _this$device5 === void 0 ? void 0 : (_this$device5$canvasC = _this$device5.canvasContext) === null || _this$device5$canvasC === void 0 ? void 0 : _this$device5$canvasC.resize({
|
|
495
|
+
useDevicePixels: this.props.useDevicePixels
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
}, {
|
|
500
|
+
key: "_beginTimers",
|
|
501
|
+
value: function _beginTimers() {
|
|
502
|
+
this.frameRate.timeEnd();
|
|
503
|
+
this.frameRate.timeStart();
|
|
504
|
+
}
|
|
505
|
+
}, {
|
|
506
|
+
key: "_endTimers",
|
|
507
|
+
value: function _endTimers() {
|
|
508
|
+
this.cpuTime.timeEnd();
|
|
509
|
+
}
|
|
510
|
+
}, {
|
|
511
|
+
key: "_startEventHandling",
|
|
512
|
+
value: function _startEventHandling() {
|
|
513
|
+
if (this.canvas) {
|
|
514
|
+
this.canvas.addEventListener('mousemove', this._onMousemove);
|
|
515
|
+
this.canvas.addEventListener('mouseleave', this._onMouseleave);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}, {
|
|
519
|
+
key: "_onMousemove",
|
|
520
|
+
value: function _onMousemove(event) {
|
|
521
|
+
if (event instanceof MouseEvent) {
|
|
522
|
+
this._getAnimationProps()._mousePosition = [event.offsetX, event.offsetY];
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}, {
|
|
526
|
+
key: "_onMouseleave",
|
|
527
|
+
value: function _onMouseleave(event) {
|
|
528
|
+
this._getAnimationProps()._mousePosition = null;
|
|
529
|
+
}
|
|
530
|
+
}]);
|
|
531
|
+
return AnimationLoop;
|
|
532
|
+
}();
|
|
533
|
+
exports.AnimationLoop = AnimationLoop;
|
|
534
|
+
//# sourceMappingURL=animation-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-loop.js","names":["_api","require","_stats","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","statIdCounter","DEFAULT_ANIMATION_LOOP_PROPS","device","onAddHTML","onInitialize","_onInitialize","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","stop","onRender","onFinalize","onError","error","console","stats","luma","get","concat","useDevicePixels","autoResizeViewport","autoResizeDrawingBuffer","AnimationLoop","props","_classCallCheck2","Error","_this$props$useDevice","Stats","id","cpuTime","gpuTime","frameRate","setProps","start","bind","_onMousemove","_onMouseleave","_createClass2","value","destroy","_setDisplay","_delete","setNeedsRedraw","reason","needsRedraw","_start","_callee2","appContext","_callee2$","_context2","_running","_initialized","_initDevice","_initialize","_getAnimationProps","_cancelAnimationFrame","_requestAnimationFrame","t0","redraw","_this$device","isLost","_beginTimers","_setupFrame","_updateAnimationProps","_renderFrame","_clearNeedsRedraw","_resolveNextFrame","_nextFramePromise","_endTimers","animationProps","attachTimeline","timeline","detachTimeline","waitForRender","_this","Promise","resolve","_toDataURL","_callee3","_callee3$","_context3","canvas","HTMLCanvasElement","toDataURL","_startEventHandling","_initializeAnimationProps","_resizeCanvasDrawingBuffer","_resizeViewport","display","delete","animationLoop","_animationFrameId","requestAnimationFrame","_animationFrame","cancelAnimationFrame","_this$device2","_this$device2$canvasC","canvasContext","width","height","aspect","time","startTime","Date","now","engineTime","tick","tock","_mousePosition","_this$_getSizeAndAspe","_getSizeAndAspect","update","Math","floor","getTime","_initDevice2","_callee4","_this$device$canvasCo","_callee4$","_context4","sent","_createInfoDiv","wrapperDiv","document","createElement","body","appendChild","style","position","div","left","bottom","background","html","innerHTML","_this$device3","_this$device3$canvasC","_this$device4","_this$device4$canvasC","_ref","getPixelSize","_ref2","_slicedToArray2","clientHeight","clientWidth","gl","viewport","drawingBufferWidth","drawingBufferHeight","_this$device5","_this$device5$canvasC","resize","timeEnd","timeStart","addEventListener","event","MouseEvent","offsetX","offsetY","exports"],"sources":["../../../src/animation-loop/animation-loop.ts"],"sourcesContent":["// luma.gl, MIT license\n\nimport {luma, Device} from '@luma.gl/api';\nimport {requestAnimationFrame, cancelAnimationFrame} from '@luma.gl/api';\nimport {Timeline} from '../animation/timeline';\nimport {AnimationProps} from './animation-props';\nimport {Stats, Stat} from '@probe.gl/stats';\n\nlet statIdCounter = 0;\n\n/** AnimationLoop properties */\nexport type AnimationLoopProps = {\n device: Device | Promise<Device>;\n\n onAddHTML?: (div: HTMLDivElement) => string; // innerHTML\n onInitialize?: (animationProps: AnimationProps) => Promise<unknown>;\n onRender?: (animationProps: AnimationProps) => unknown;\n onFinalize?: (animationProps: AnimationProps) => void;\n onError?: (reason: Error) => void;\n\n stats?: Stats;\n\n // view parameters - TODO move to CanvasContext?\n autoResizeViewport?: boolean;\n autoResizeDrawingBuffer?: boolean;\n useDevicePixels?: number | boolean;\n};\n\nexport type MutableAnimationLoopProps = {\n // view parameters\n autoResizeViewport?: boolean;\n autoResizeDrawingBuffer?: boolean;\n useDevicePixels?: number | boolean;\n}\n\n\nconst DEFAULT_ANIMATION_LOOP_PROPS: Required<AnimationLoopProps> = {\n device: null!,\n\n onAddHTML: () => '',\n onInitialize: async () => { return null; },\n onRender: () => {},\n onFinalize: () => {},\n onError: (error) => console.error(error), // eslint-disable-line no-console\n\n stats: luma.stats.get(`animation-loop-${statIdCounter++}`),\n\n // view parameters\n useDevicePixels: true,\n autoResizeViewport: false,\n autoResizeDrawingBuffer: false,\n};\n\n/** Convenient animation loop */\nexport class AnimationLoop {\n device: Device | null = null;\n canvas: HTMLCanvasElement | OffscreenCanvas | null = null;\n\n props: Required<AnimationLoopProps>;\n animationProps: AnimationProps | null = null;\n timeline: Timeline | null = null;\n stats: Stats;\n cpuTime: Stat;\n gpuTime: Stat;\n frameRate: Stat;\n\n display: any;\n\n needsRedraw: string | false = 'initialized';\n\n _initialized: boolean = false;\n _running: boolean = false;\n _animationFrameId: any = null;\n _nextFramePromise: Promise<AnimationLoop> | null = null;\n _resolveNextFrame: ((animationLoop: AnimationLoop) => void) | null = null;\n _cpuStartTime: number = 0;\n\n // _gpuTimeQuery: Query | null = null;\n\n /*\n * @param {HTMLCanvasElement} canvas - if provided, width and height will be passed to context\n */\n constructor(props: AnimationLoopProps) {\n this.props = {...DEFAULT_ANIMATION_LOOP_PROPS, ...props};\n props = this.props;\n\n if (!props.device) {\n throw new Error('No device provided');\n }\n\n let {useDevicePixels = true} = this.props;\n\n // state\n this.stats = props.stats || new Stats({id: 'animation-loop-stats'});\n this.cpuTime = this.stats.get('CPU Time');\n this.gpuTime = this.stats.get('GPU Time');\n this.frameRate = this.stats.get('Frame Rate');\n\n this.setProps({\n autoResizeViewport: props.autoResizeViewport,\n autoResizeDrawingBuffer: props.autoResizeDrawingBuffer,\n useDevicePixels\n });\n\n // Bind methods\n this.start = this.start.bind(this);\n this.stop = this.stop.bind(this);\n\n this._onMousemove = this._onMousemove.bind(this);\n this._onMouseleave = this._onMouseleave.bind(this);\n }\n\n destroy(): void {\n this.stop();\n this._setDisplay(null);\n }\n\n /** @deprecated Use .destroy() */\n delete(): void {\n this.destroy();\n }\n\n setNeedsRedraw(reason: string): this {\n this.needsRedraw = this.needsRedraw || reason;\n return this;\n }\n\n // TODO - move to CanvasContext\n setProps(props: MutableAnimationLoopProps): this {\n if ('autoResizeViewport' in props) {\n this.props.autoResizeViewport = props.autoResizeViewport || false;\n }\n if ('autoResizeDrawingBuffer' in props) {\n this.props.autoResizeDrawingBuffer = props.autoResizeDrawingBuffer || false;\n }\n if ('useDevicePixels' in props) {\n this.props.useDevicePixels = props.useDevicePixels || false;\n }\n return this;\n }\n\n /** Starts a render loop if not already running */\n async start() {\n if (this._running) {\n return this;\n }\n this._running = true;\n\n try {\n // check that we haven't been stopped\n if (!this._running) {\n return null;\n }\n\n let appContext;\n if (!this._initialized) {\n this._initialized = true;\n // Create the WebGL context\n await this._initDevice();\n this._initialize();\n\n // Note: onIntialize can return a promise (e.g. in case app needs to load resources)\n await this.props.onInitialize(this._getAnimationProps());\n }\n\n // check that we haven't been stopped\n if (!this._running) {\n return null;\n }\n\n // Start the loop\n if (appContext !== false) {\n // cancel any pending renders to ensure only one loop can ever run\n this._cancelAnimationFrame();\n this._requestAnimationFrame();\n }\n\n return this;\n } catch (err: unknown) {\n const error = err instanceof Error ? err : new Error('Unknown error')\n this.props.onError(error);\n // this._running = false; // TODO\n throw error;\n }\n }\n\n /** Explicitly draw a frame */\n redraw(): this {\n if (this.device?.isLost) {\n return this;\n }\n\n this._beginTimers();\n\n this._setupFrame();\n this._updateAnimationProps();\n\n this._renderFrame(this._getAnimationProps());\n\n // clear needsRedraw flag\n this._clearNeedsRedraw();\n\n if (this._resolveNextFrame) {\n this._resolveNextFrame(this);\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n }\n\n this._endTimers();\n\n return this;\n }\n\n // Stops a render loop if already running, finalizing\n stop() {\n // console.debug(`Stopping ${this.constructor.name}`);\n if (this._running) {\n // call callback\n // If stop is called immediately, we can end up in a state where props haven't been initialized...\n if (this.animationProps) {\n this.props.onFinalize(this.animationProps);\n }\n\n this._cancelAnimationFrame();\n this._nextFramePromise = null;\n this._resolveNextFrame = null;\n this._running = false;\n }\n return this;\n }\n\n attachTimeline(timeline: Timeline): Timeline {\n this.timeline = timeline;\n return this.timeline;\n }\n\n detachTimeline(): void {\n this.timeline = null;\n }\n\n waitForRender(): Promise<AnimationLoop> {\n this.setNeedsRedraw('waitForRender');\n\n if (!this._nextFramePromise) {\n this._nextFramePromise = new Promise((resolve) => {\n this._resolveNextFrame = resolve;\n });\n }\n return this._nextFramePromise;\n }\n\n async toDataURL(): Promise<string> {\n this.setNeedsRedraw('toDataURL');\n await this.waitForRender();\n if (this.canvas instanceof HTMLCanvasElement) {\n return this.canvas.toDataURL();\n }\n throw new Error('OffscreenCanvas');\n }\n\n // PRIVATE METHODS\n\n _initialize() {\n this._startEventHandling();\n\n // Initialize the callback data\n this._initializeAnimationProps();\n this._updateAnimationProps();\n\n // Default viewport setup, in case onInitialize wants to render\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n\n // this._gpuTimeQuery = Query.isSupported(this.gl, ['timers']) ? new Query(this.gl) : null;\n }\n\n _setDisplay(display: any) {\n if (this.display) {\n this.display.delete();\n this.display.animationLoop = null;\n }\n\n // store animation loop on the display\n if (display) {\n display.animationLoop = this;\n }\n\n this.display = display;\n }\n\n _requestAnimationFrame() {\n if (!this._running) {\n return;\n }\n\n // VR display has a separate animation frame to sync with headset\n // TODO WebVR API discontinued, replaced by WebXR: https://immersive-web.github.io/webxr/\n // See https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/requestAnimationFrame\n // if (this.display && this.display.requestAnimationFrame) {\n // this._animationFrameId = this.display.requestAnimationFrame(this._animationFrame.bind(this));\n // }\n this._animationFrameId = requestAnimationFrame(this._animationFrame.bind(this));\n }\n\n _cancelAnimationFrame() {\n if (this._animationFrameId !== null) {\n return;\n }\n\n // VR display has a separate animation frame to sync with headset\n // TODO WebVR API discontinued, replaced by WebXR: https://immersive-web.github.io/webxr/\n // See https://developer.mozilla.org/en-US/docs/Web/API/VRDisplay/requestAnimationFrame\n // if (this.display && this.display.cancelAnimationFrame) {\n // this.display.cancelAnimationFrame(this._animationFrameId);\n // }\n cancelAnimationFrame(this._animationFrameId);\n this._animationFrameId = null;\n }\n\n _animationFrame() {\n if (!this._running) {\n return;\n }\n this.redraw();\n this._requestAnimationFrame();\n }\n\n // Called on each frame, can be overridden to call onRender multiple times\n // to support e.g. stereoscopic rendering\n _renderFrame(animationProps: AnimationProps) {\n // Allow e.g. VR display to render multiple frames.\n if (this.display) {\n this.display._renderFrame(animationProps);\n return;\n }\n\n // call callback\n this.props.onRender(this._getAnimationProps());\n // end callback\n }\n\n _clearNeedsRedraw() {\n this.needsRedraw = false;\n }\n\n _setupFrame() {\n this._resizeCanvasDrawingBuffer();\n this._resizeViewport();\n }\n\n // Initialize the object that will be passed to app callbacks\n _initializeAnimationProps() {\n if (!this.device) {\n throw new Error('loop');\n }\n this.animationProps = {\n animationLoop: this,\n device: this.device,\n canvas: this.device?.canvasContext?.canvas!,\n timeline: this.timeline,\n\n // Initial values\n useDevicePixels: this.props.useDevicePixels,\n needsRedraw: false,\n\n // Placeholders\n width: 1,\n height: 1,\n aspect: 1,\n\n // Animation props\n time: 0,\n startTime: Date.now(),\n engineTime: 0,\n tick: 0,\n tock: 0,\n\n // Experimental\n _mousePosition: null // Event props\n };\n }\n\n _getAnimationProps(): AnimationProps {\n if (!this.animationProps) {\n throw new Error('animationProps');\n }\n return this.animationProps;\n }\n\n // Update the context object that will be passed to app callbacks\n _updateAnimationProps(): void {\n if (!this.animationProps) {\n return;\n }\n\n const {width, height, aspect} = this._getSizeAndAspect();\n if (width !== this.animationProps.width || height !== this.animationProps.height) {\n this.setNeedsRedraw('drawing buffer resized');\n }\n if (aspect !== this.animationProps.aspect) {\n this.setNeedsRedraw('drawing buffer aspect changed');\n }\n\n this.animationProps.width = width;\n this.animationProps.height = height;\n this.animationProps.aspect = aspect;\n\n this.animationProps.needsRedraw = this.needsRedraw;\n\n // Update time properties\n this.animationProps.engineTime = Date.now() - this.animationProps.startTime;\n\n if (this.timeline) {\n this.timeline.update(this.animationProps.engineTime);\n }\n\n this.animationProps.tick = Math.floor((this.animationProps.time / 1000) * 60);\n this.animationProps.tock++;\n\n // For back compatibility\n this.animationProps.time = this.timeline\n ? this.timeline.getTime()\n : this.animationProps.engineTime;\n }\n\n /** Wait for supplied device */\n async _initDevice() {\n this.device = await this.props.device;\n if (!this.device) {\n throw new Error('No device provided');\n }\n this.canvas = this.device.canvasContext?.canvas || null;\n // this._createInfoDiv();\n }\n\n _createInfoDiv() {\n if (this.canvas && this.props.onAddHTML) {\n const wrapperDiv = document.createElement('div');\n document.body.appendChild(wrapperDiv);\n wrapperDiv.style.position = 'relative';\n const div = document.createElement('div');\n div.style.position = 'absolute';\n div.style.left = '10px';\n div.style.bottom = '10px';\n div.style.width = '300px';\n div.style.background = 'white';\n if (this.canvas instanceof HTMLCanvasElement) {\n wrapperDiv.appendChild(this.canvas);\n }\n wrapperDiv.appendChild(div);\n const html = this.props.onAddHTML(div);\n if (html) {\n div.innerHTML = html;\n }\n }\n }\n\n _getSizeAndAspect(): {width: number; height: number; aspect: number} {\n if (!this.device) {\n return {width: 1, height: 1, aspect: 1};\n }\n // https://webglfundamentals.org/webgl/lessons/webgl-resizing-the-canvas.html\n const [width, height] = this.device?.canvasContext?.getPixelSize() || [1, 1];\n\n // https://webglfundamentals.org/webgl/lessons/webgl-anti-patterns.html\n let aspect = 1;\n const canvas = this.device?.canvasContext?.canvas;\n\n // @ts-expect-error\n if (canvas && canvas.clientHeight) {\n // @ts-expect-error\n aspect = canvas.clientWidth / canvas.clientHeight;\n } else if (width > 0 && height > 0) {\n aspect = width / height;\n }\n\n return {width, height, aspect};\n }\n\n /** Default viewport setup */\n _resizeViewport() {\n // @ts-expect-error Expose on canvasContext\n if (this.props.autoResizeViewport && this.device.gl) {\n // @ts-expect-error Expose canvasContext\n this.device.gl.viewport(0, 0, this.device.gl.drawingBufferWidth, this.device.gl.drawingBufferHeight);\n }\n }\n\n /**\n * Resize the render buffer of the canvas to match canvas client size\n * Optionally multiplying with devicePixel ratio\n */\n _resizeCanvasDrawingBuffer() {\n if (this.props.autoResizeDrawingBuffer) {\n this.device?.canvasContext?.resize({useDevicePixels: this.props.useDevicePixels});\n }\n }\n\n _beginTimers() {\n this.frameRate.timeEnd();\n this.frameRate.timeStart();\n\n // Check if timer for last frame has completed.\n // GPU timer results are never available in the same\n // frame they are captured.\n // if (\n // this._gpuTimeQuery &&\n // this._gpuTimeQuery.isResultAvailable() &&\n // !this._gpuTimeQuery.isTimerDisjoint()\n // ) {\n // this.stats.get('GPU Time').addTime(this._gpuTimeQuery.getTimerMilliseconds());\n // }\n\n // if (this._gpuTimeQuery) {\n // // GPU time query start\n // this._gpuTimeQuery.beginTimeElapsedQuery();\n // }\n\n // this.cpuTime.timeStart();\n }\n\n _endTimers() {\n this.cpuTime.timeEnd();\n\n // if (this._gpuTimeQuery) {\n // // GPU time query end. Results will be available on next frame.\n // this._gpuTimeQuery.end();\n // }\n }\n\n // Event handling\n\n _startEventHandling() {\n if (this.canvas) {\n this.canvas.addEventListener('mousemove', this._onMousemove);\n this.canvas.addEventListener('mouseleave', this._onMouseleave);\n }\n }\n\n _onMousemove(event: Event) {\n if (event instanceof MouseEvent) {\n this._getAnimationProps()._mousePosition = [event.offsetX, event.offsetY];\n }\n }\n\n _onMouseleave(event: Event) {\n this._getAnimationProps()._mousePosition = null;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animation-props.js","names":[],"sources":["../../../src/animation-loop/animation-props.ts"],"sourcesContent":["import {Device} from '@luma.gl/api';\nimport {Timeline} from '../animation/timeline'\nimport type {AnimationLoop} from './animation-loop';\n\n/** Properties passed to every render frame */\nexport type AnimationProps = {\n device: Device;\n animationLoop: AnimationLoop;\n\n /** @todo Should be canvasContext */\n canvas: HTMLCanvasElement | OffscreenCanvas;\n useDevicePixels: number | boolean;\n width: number;\n height: number;\n aspect: number;\n\n // Animation props\n time: number;\n startTime: number;\n engineTime: number;\n tick: number;\n tock: number;\n\n // Initial values\n needsRedraw?: string | false;\n\n timeline: Timeline | null;\n\n // Experimental\n _mousePosition?: [number, number] | null; // [offsetX, offsetY],\n};\n"],"mappings":""}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.makeAnimationLoop = makeAnimationLoop;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _api = require("@luma.gl/api");
|
|
12
|
+
var _animationLoop = require("./animation-loop");
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
14
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
15
|
+
function makeAnimationLoop(AnimationLoopTemplateCtor, props) {
|
|
16
|
+
var _this = this;
|
|
17
|
+
var renderLoop = null;
|
|
18
|
+
var device = (props === null || props === void 0 ? void 0 : props.device) || _api.luma.createDevice();
|
|
19
|
+
var animationLoop = new _animationLoop.AnimationLoop(_objectSpread(_objectSpread({}, props), {}, {
|
|
20
|
+
device: device,
|
|
21
|
+
onInitialize: function onInitialize(animationProps) {
|
|
22
|
+
return (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee() {
|
|
23
|
+
var _renderLoop;
|
|
24
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
25
|
+
while (1) switch (_context.prev = _context.next) {
|
|
26
|
+
case 0:
|
|
27
|
+
renderLoop = new AnimationLoopTemplateCtor(animationProps);
|
|
28
|
+
_context.next = 3;
|
|
29
|
+
return (_renderLoop = renderLoop) === null || _renderLoop === void 0 ? void 0 : _renderLoop.onInitialize(animationProps);
|
|
30
|
+
case 3:
|
|
31
|
+
return _context.abrupt("return", _context.sent);
|
|
32
|
+
case 4:
|
|
33
|
+
case "end":
|
|
34
|
+
return _context.stop();
|
|
35
|
+
}
|
|
36
|
+
}, _callee);
|
|
37
|
+
}))();
|
|
38
|
+
},
|
|
39
|
+
onRender: function onRender(animationProps) {
|
|
40
|
+
var _renderLoop2;
|
|
41
|
+
return (_renderLoop2 = renderLoop) === null || _renderLoop2 === void 0 ? void 0 : _renderLoop2.onRender(animationProps);
|
|
42
|
+
},
|
|
43
|
+
onFinalize: function onFinalize(animationProps) {
|
|
44
|
+
var _renderLoop3;
|
|
45
|
+
return (_renderLoop3 = renderLoop) === null || _renderLoop3 === void 0 ? void 0 : _renderLoop3.onFinalize(animationProps);
|
|
46
|
+
}
|
|
47
|
+
}));
|
|
48
|
+
animationLoop.getInfo = function () {
|
|
49
|
+
return _this.AnimationLoopTemplateCtor.info;
|
|
50
|
+
};
|
|
51
|
+
return animationLoop;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=make-animation-loop.js.map
|