hzengine-core 0.1.2-dev → 0.1.3

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.
@@ -1,162 +1,150 @@
1
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
- var _, done = false;
7
- for (var i = decorators.length - 1; i >= 0; i--) {
8
- var context = {};
9
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
- if (kind === "accessor") {
14
- if (result === void 0) continue;
15
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
- if (_ = accept(result.get)) descriptor.get = _;
17
- if (_ = accept(result.set)) descriptor.set = _;
18
- if (_ = accept(result.init)) initializers.unshift(_);
19
- }
20
- else if (_ = accept(result)) {
21
- if (kind === "field") initializers.unshift(_);
22
- else descriptor[key] = _;
23
- }
24
- }
25
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
- done = true;
27
- };
28
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
- var useValue = arguments.length > 2;
30
- for (var i = 0; i < initializers.length; i++) {
31
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
- }
33
- return useValue ? value : void 0;
34
- };
35
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
36
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
37
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
38
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
39
- };
40
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
41
- if (kind === "m") throw new TypeError("Private method is not writable");
42
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
43
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
44
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
45
- };
46
- import { Save } from "../storage/decorator.js";
47
- // import { Time } from "@zos/sensor";
48
- let Async = (() => {
49
- var _a, _Async__nextTimerId_accessor_storage, _Async__delayTasks_accessor_storage;
50
- let __nextTimerId_decorators;
51
- let __nextTimerId_initializers = [];
52
- let __nextTimerId_extraInitializers = [];
53
- let __delayTasks_decorators;
54
- let __delayTasks_initializers = [];
55
- let __delayTasks_extraInitializers = [];
56
- return _a = class Async {
57
- static nextTick(callback) {
58
- this._nextTickCallbacks.push(callback);
59
- if (this._nextTickTimerId == null) {
60
- this._nextTickTimerId = setTimeout(() => {
61
- this._nextTickTimerCallback();
62
- }, 30);
63
- }
64
- }
65
- static _nextTickTimerCallback() {
66
- this._nextTickTimerId = null;
67
- const callbacks = this._nextTickCallbacks;
68
- this._nextTickCallbacks = [];
69
- callbacks.forEach((cb) => {
70
- cb();
71
- });
72
- }
73
- constructor(_core) {
74
- this._core = _core;
75
- _Async__nextTimerId_accessor_storage.set(this, __runInitializers(this, __nextTimerId_initializers, 50));
76
- _Async__delayTasks_accessor_storage.set(this, (__runInitializers(this, __nextTimerId_extraInitializers), __runInitializers(this, __delayTasks_initializers, {})));
77
- __runInitializers(this, __delayTasks_extraInitializers);
78
- this._core = _core;
79
- // console.log("async init");
80
- // let timer = new ZeppTimer(() => {
81
- // // console.log(`async timer cb`);
82
- // this._scheduleTask();
83
- // }, ~~(1000 / this._fps));
84
- // timer.start();
85
- this._lastTime = this._core.platform.getTime();
86
- // setInterval(() => {
87
- // this._scheduleTask();
88
- // }, ~~(1000 / this._fps));
89
- _core.platform.setFrameInterval(() => {
90
- this._scheduleTask();
91
- });
92
- }
93
- _scheduleTask() {
94
- // TODO 沒有充分考慮存檔時產生的問題(this._delayTasks引用變化),及其它問題
95
- let now = this._core.platform.getTime();
96
- let deltaTime = now - this._lastTime;
97
- this._lastTime = now;
98
- // console.log(`async timer cb d=${deltaTime}`);
99
- for (let id in this._delayTasks) {
100
- let task = this._delayTasks[id];
101
- task.next -= deltaTime;
102
- if (task.next <= 0) {
103
- this._core.emit(task.event, ...task.args);
104
- if (task.repeat >= 0) {
105
- // interval
106
- task.next += task.repeat;
107
- }
108
- else {
109
- delete this._delayTasks[id];
110
- }
111
- }
112
- }
113
- }
114
- get _nextTimerId() { return __classPrivateFieldGet(this, _Async__nextTimerId_accessor_storage, "f"); }
115
- set _nextTimerId(value) { __classPrivateFieldSet(this, _Async__nextTimerId_accessor_storage, value, "f"); }
116
- // tasks
117
- get _delayTasks() { return __classPrivateFieldGet(this, _Async__delayTasks_accessor_storage, "f"); }
118
- set _delayTasks(value) { __classPrivateFieldSet(this, _Async__delayTasks_accessor_storage, value, "f"); }
119
- // 注意在task執行中立即創建一個新的task,會在同一個js task中執行
120
- // 注意周期實際為1個frame的時間的整數倍
121
- addDelayTask(event, args, delayMs) {
122
- let task = {
123
- event,
124
- args,
125
- next: delayMs,
126
- repeat: -1,
127
- };
128
- let id = this._nextTimerId++;
129
- this._delayTasks[id] = task;
130
- return id;
131
- }
132
- addRepeatTask(event, args, intervalMs, delayMs) {
133
- intervalMs = intervalMs >= 0 ? intervalMs : 0;
134
- let task = {
135
- event,
136
- args,
137
- next: delayMs !== null && delayMs !== void 0 ? delayMs : intervalMs,
138
- repeat: intervalMs,
139
- };
140
- let id = this._nextTimerId++;
141
- this._delayTasks[id] = task;
142
- return id;
143
- }
144
- removeTask(id) {
145
- delete this._delayTasks[id];
146
- }
147
- },
148
- _Async__nextTimerId_accessor_storage = new WeakMap(),
149
- _Async__delayTasks_accessor_storage = new WeakMap(),
150
- (() => {
151
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
152
- __nextTimerId_decorators = [Save("async.nextTimerId")];
153
- __delayTasks_decorators = [Save("async.delayTasks")];
154
- __esDecorate(_a, null, __nextTimerId_decorators, { kind: "accessor", name: "_nextTimerId", static: false, private: false, access: { has: obj => "_nextTimerId" in obj, get: obj => obj._nextTimerId, set: (obj, value) => { obj._nextTimerId = value; } }, metadata: _metadata }, __nextTimerId_initializers, __nextTimerId_extraInitializers);
155
- __esDecorate(_a, null, __delayTasks_decorators, { kind: "accessor", name: "_delayTasks", static: false, private: false, access: { has: obj => "_delayTasks" in obj, get: obj => obj._delayTasks, set: (obj, value) => { obj._delayTasks = value; } }, metadata: _metadata }, __delayTasks_initializers, __delayTasks_extraInitializers);
156
- if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
157
- })(),
158
- _a._nextTickCallbacks = [],
159
- _a._nextTickTimerId = null,
160
- _a;
161
- })();
162
- export { Async };
1
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
2
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
3
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
4
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
5
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
6
+ var _, done = false;
7
+ for (var i = decorators.length - 1; i >= 0; i--) {
8
+ var context = {};
9
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
10
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
11
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
12
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
13
+ if (kind === "accessor") {
14
+ if (result === void 0) continue;
15
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
16
+ if (_ = accept(result.get)) descriptor.get = _;
17
+ if (_ = accept(result.set)) descriptor.set = _;
18
+ if (_ = accept(result.init)) initializers.unshift(_);
19
+ }
20
+ else if (_ = accept(result)) {
21
+ if (kind === "field") initializers.unshift(_);
22
+ else descriptor[key] = _;
23
+ }
24
+ }
25
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
26
+ done = true;
27
+ };
28
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
29
+ var useValue = arguments.length > 2;
30
+ for (var i = 0; i < initializers.length; i++) {
31
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
32
+ }
33
+ return useValue ? value : void 0;
34
+ };
35
+ import { Save } from "../storage/decorator.js";
36
+ // import { Time } from "@zos/sensor";
37
+ let Async = (() => {
38
+ let __nextTimerId_decorators;
39
+ let __nextTimerId_initializers = [];
40
+ let __nextTimerId_extraInitializers = [];
41
+ let __delayTasks_decorators;
42
+ let __delayTasks_initializers = [];
43
+ let __delayTasks_extraInitializers = [];
44
+ return class Async {
45
+ static {
46
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
47
+ __nextTimerId_decorators = [Save("async.nextTimerId")];
48
+ __delayTasks_decorators = [Save("async.delayTasks")];
49
+ __esDecorate(this, null, __nextTimerId_decorators, { kind: "accessor", name: "_nextTimerId", static: false, private: false, access: { has: obj => "_nextTimerId" in obj, get: obj => obj._nextTimerId, set: (obj, value) => { obj._nextTimerId = value; } }, metadata: _metadata }, __nextTimerId_initializers, __nextTimerId_extraInitializers);
50
+ __esDecorate(this, null, __delayTasks_decorators, { kind: "accessor", name: "_delayTasks", static: false, private: false, access: { has: obj => "_delayTasks" in obj, get: obj => obj._delayTasks, set: (obj, value) => { obj._delayTasks = value; } }, metadata: _metadata }, __delayTasks_initializers, __delayTasks_extraInitializers);
51
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
52
+ }
53
+ _core;
54
+ static _nextTickCallbacks = [];
55
+ static _nextTickTimerId = null;
56
+ static nextTick(callback) {
57
+ this._nextTickCallbacks.push(callback);
58
+ if (this._nextTickTimerId == null) {
59
+ this._nextTickTimerId = setTimeout(() => {
60
+ this._nextTickTimerCallback();
61
+ }, 30);
62
+ }
63
+ }
64
+ static _nextTickTimerCallback() {
65
+ this._nextTickTimerId = null;
66
+ const callbacks = this._nextTickCallbacks;
67
+ this._nextTickCallbacks = [];
68
+ callbacks.forEach((cb) => {
69
+ cb();
70
+ });
71
+ }
72
+ // private _fps = 45;
73
+ // private _hmTime = new Time();
74
+ _lastTime;
75
+ constructor(_core) {
76
+ __runInitializers(this, __delayTasks_extraInitializers);
77
+ this._core = _core;
78
+ // console.log("async init");
79
+ // let timer = new ZeppTimer(() => {
80
+ // // console.log(`async timer cb`);
81
+ // this._scheduleTask();
82
+ // }, ~~(1000 / this._fps));
83
+ // timer.start();
84
+ this._lastTime = this._core.platform.getTime();
85
+ // setInterval(() => {
86
+ // this._scheduleTask();
87
+ // }, ~~(1000 / this._fps));
88
+ _core.platform.setFrameInterval(() => {
89
+ this._scheduleTask();
90
+ });
91
+ }
92
+ _scheduleTask() {
93
+ // TODO 沒有充分考慮存檔時產生的問題(this._delayTasks引用變化),及其它問題
94
+ let now = this._core.platform.getTime();
95
+ let deltaTime = now - this._lastTime;
96
+ this._lastTime = now;
97
+ // console.log(`async timer cb d=${deltaTime}`);
98
+ for (let id in this._delayTasks) {
99
+ let task = this._delayTasks[id];
100
+ task.next -= deltaTime;
101
+ if (task.next <= 0) {
102
+ this._core.emit(task.event, ...task.args);
103
+ if (task.repeat >= 0) {
104
+ // interval
105
+ task.next += task.repeat;
106
+ }
107
+ else {
108
+ delete this._delayTasks[id];
109
+ }
110
+ }
111
+ }
112
+ }
113
+ #_nextTimerId_accessor_storage = __runInitializers(this, __nextTimerId_initializers, 50);
114
+ get _nextTimerId() { return this.#_nextTimerId_accessor_storage; }
115
+ set _nextTimerId(value) { this.#_nextTimerId_accessor_storage = value; }
116
+ #_delayTasks_accessor_storage = (__runInitializers(this, __nextTimerId_extraInitializers), __runInitializers(this, __delayTasks_initializers, {}));
117
+ // tasks
118
+ get _delayTasks() { return this.#_delayTasks_accessor_storage; }
119
+ set _delayTasks(value) { this.#_delayTasks_accessor_storage = value; }
120
+ // 注意在task執行中立即創建一個新的task,會在同一個js task中執行
121
+ // 注意周期實際為1個frame的時間的整數倍
122
+ addDelayTask(event, args, delayMs) {
123
+ let task = {
124
+ event,
125
+ args,
126
+ next: delayMs,
127
+ repeat: -1,
128
+ };
129
+ let id = this._nextTimerId++;
130
+ this._delayTasks[id] = task;
131
+ return id;
132
+ }
133
+ addRepeatTask(event, args, intervalMs, delayMs) {
134
+ intervalMs = intervalMs >= 0 ? intervalMs : 0;
135
+ let task = {
136
+ event,
137
+ args,
138
+ next: delayMs ?? intervalMs,
139
+ repeat: intervalMs,
140
+ };
141
+ let id = this._nextTimerId++;
142
+ this._delayTasks[id] = task;
143
+ return id;
144
+ }
145
+ removeTask(id) {
146
+ delete this._delayTasks[id];
147
+ }
148
+ };
149
+ })();
150
+ export { Async };