@cjhd/cj-ecs 1.0.0 → 1.0.1
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/assets/common/component/MoveComponent.d.ts +141 -0
- package/assets/common/component/NodeComponent.d.ts +98 -0
- package/assets/common/system/MoveSystem.d.ts +17 -0
- package/assets/ecs/EcsComponent.d.ts +89 -0
- package/assets/ecs/{EcsDirty.ts → EcsDirty.d.ts} +340 -459
- package/assets/ecs/EcsEntity.d.ts +148 -0
- package/assets/ecs/EcsSingleton.d.ts +3 -0
- package/assets/ecs/EcsSystem.d.ts +96 -0
- package/assets/ecs.d.ts +126 -0
- package/assets/lib/EcsCache.d.ts +24 -0
- package/assets/lib/EcsFilter.d.ts +57 -0
- package/assets/lib/EcsManager.d.ts +251 -0
- package/assets/lib/{EcsObject.ts → EcsObject.d.ts} +360 -422
- package/assets/lib/EcsTimer.d.ts +119 -0
- package/assets/lib/EcsTween.d.ts +168 -0
- package/assets/lib/EcsUtils.d.ts +82 -0
- package/dist/cocos/assets/common/component/MoveComponent.js +4 -0
- package/dist/cocos/assets/common/component/NodeComponent.js +4 -0
- package/dist/cocos/assets/common/system/MoveSystem.js +2 -0
- package/dist/cocos/assets/ecs/EcsComponent.js +4 -0
- package/dist/cocos/assets/ecs/EcsDirty.js +4 -0
- package/dist/cocos/assets/ecs/EcsEntity.js +4 -0
- package/dist/cocos/assets/ecs/EcsSingleton.js +4 -0
- package/dist/cocos/assets/ecs/EcsSystem.js +2 -0
- package/dist/cocos/assets/ecs.js +2 -0
- package/dist/cocos/assets/lib/EcsCache.js +2 -0
- package/dist/cocos/assets/lib/EcsFilter.js +2 -0
- package/dist/cocos/assets/lib/EcsManager.js +4 -0
- package/dist/cocos/assets/lib/EcsObject.js +4 -0
- package/dist/cocos/assets/lib/EcsTimer.js +4 -0
- package/dist/cocos/assets/lib/EcsTween.js +4 -0
- package/dist/cocos/assets/lib/EcsUtils.js +2 -0
- package/dist/cocos/index.js +4 -0
- package/{index.ts → index.d.ts} +14 -33
- package/package.json +27 -7
- package/assets/common/component/MoveComponent.ts +0 -292
- package/assets/common/component/MoveComponent.ts.meta +0 -9
- package/assets/common/component/NodeComponent.ts +0 -315
- package/assets/common/component/NodeComponent.ts.meta +0 -9
- package/assets/common/component.meta +0 -12
- package/assets/common/system/MoveSystem.ts +0 -108
- package/assets/common/system/MoveSystem.ts.meta +0 -9
- package/assets/common/system.meta +0 -12
- package/assets/common.meta +0 -12
- package/assets/ecs/EcsComponent.ts +0 -244
- package/assets/ecs/EcsComponent.ts.meta +0 -9
- package/assets/ecs/EcsDirty.ts.meta +0 -9
- package/assets/ecs/EcsEntity.ts +0 -430
- package/assets/ecs/EcsEntity.ts.meta +0 -9
- package/assets/ecs/EcsSingleton.ts +0 -6
- package/assets/ecs/EcsSingleton.ts.meta +0 -9
- package/assets/ecs/EcsSystem.ts +0 -191
- package/assets/ecs/EcsSystem.ts.meta +0 -9
- package/assets/ecs.meta +0 -12
- package/assets/ecs.ts +0 -339
- package/assets/ecs.ts.meta +0 -9
- package/assets/lib/EcsCache.ts +0 -43
- package/assets/lib/EcsCache.ts.meta +0 -9
- package/assets/lib/EcsFilter.ts +0 -210
- package/assets/lib/EcsFilter.ts.meta +0 -9
- package/assets/lib/EcsManager.ts +0 -502
- package/assets/lib/EcsManager.ts.meta +0 -9
- package/assets/lib/EcsObject.ts.meta +0 -9
- package/assets/lib/EcsTimer.ts +0 -239
- package/assets/lib/EcsTimer.ts.meta +0 -9
- package/assets/lib/EcsTween.ts +0 -486
- package/assets/lib/EcsTween.ts.meta +0 -9
- package/assets/lib/EcsUtils.ts +0 -352
- package/assets/lib/EcsUtils.ts.meta +0 -9
- package/assets/lib.meta +0 -12
- package/assets.meta +0 -9
- package/index.ts.meta +0 -9
- package/package.json.meta +0 -11
- /package/{.cj-ecs.md → README.md} +0 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { EcsBase } from './EcsObject';
|
|
2
|
+
interface ICallback {
|
|
3
|
+
(...args: any[]): any;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 定时器
|
|
7
|
+
*/
|
|
8
|
+
export declare class Timer {
|
|
9
|
+
static step(timer: Timer, dt: number): boolean;
|
|
10
|
+
private _id;
|
|
11
|
+
get id(): number;
|
|
12
|
+
/**是否执行过 */
|
|
13
|
+
private first;
|
|
14
|
+
/**执行计时 */
|
|
15
|
+
private time;
|
|
16
|
+
/**回调函数 */
|
|
17
|
+
private callback;
|
|
18
|
+
private _target;
|
|
19
|
+
get target(): EcsBase | null;
|
|
20
|
+
/**首次执行的延迟时间 */
|
|
21
|
+
private _delay;
|
|
22
|
+
/**重复执行的间隔时间 */
|
|
23
|
+
private _interval;
|
|
24
|
+
/**重复执行次数(<0为无限次) */
|
|
25
|
+
private _repeat;
|
|
26
|
+
constructor(callback: ICallback, target?: EcsBase | null);
|
|
27
|
+
/**
|
|
28
|
+
* 首次执行延迟时间
|
|
29
|
+
* @param value
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
delay(value: number): this;
|
|
33
|
+
/**
|
|
34
|
+
* 重复执行间隔时间
|
|
35
|
+
* @param value
|
|
36
|
+
* @returns
|
|
37
|
+
*/
|
|
38
|
+
interval(value: number): this;
|
|
39
|
+
/**
|
|
40
|
+
* 重复执行次数(<0为无限次)
|
|
41
|
+
* - 初始值为-1
|
|
42
|
+
* - 实际执行次数为repeat + 1
|
|
43
|
+
* @param value
|
|
44
|
+
* @returns
|
|
45
|
+
*/
|
|
46
|
+
repeat(value: number): this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 创建一个定时器
|
|
50
|
+
*/
|
|
51
|
+
export declare function timer(callback: ICallback, target?: EcsBase | null): Timer;
|
|
52
|
+
/**
|
|
53
|
+
* 定时器管理器
|
|
54
|
+
*/
|
|
55
|
+
export declare class TimerManager {
|
|
56
|
+
private map;
|
|
57
|
+
private pausing;
|
|
58
|
+
/**
|
|
59
|
+
* 添加定时器
|
|
60
|
+
* @param timer
|
|
61
|
+
* @returns id 永远大于0
|
|
62
|
+
*/
|
|
63
|
+
add(timer: Timer): number;
|
|
64
|
+
/**
|
|
65
|
+
* 移除指定的定时器
|
|
66
|
+
* @param id
|
|
67
|
+
*/
|
|
68
|
+
remove(id: number): void;
|
|
69
|
+
/**
|
|
70
|
+
* 移除指定的定时器
|
|
71
|
+
* @param timer
|
|
72
|
+
*/
|
|
73
|
+
remove(timer: Timer): void;
|
|
74
|
+
/**
|
|
75
|
+
* 移除指定的定时器
|
|
76
|
+
* @param target
|
|
77
|
+
*/
|
|
78
|
+
remove(target: EcsBase): void;
|
|
79
|
+
/**
|
|
80
|
+
* 暂停指定的定时器
|
|
81
|
+
* @param id
|
|
82
|
+
*/
|
|
83
|
+
pause(id: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* 暂停指定的定时器
|
|
86
|
+
* @param timer
|
|
87
|
+
*/
|
|
88
|
+
pause(timer: Timer): void;
|
|
89
|
+
/**
|
|
90
|
+
* 暂停指定的定时器
|
|
91
|
+
* @param target
|
|
92
|
+
*/
|
|
93
|
+
pause(target: EcsBase): void;
|
|
94
|
+
/**
|
|
95
|
+
* 恢复指定的定时器
|
|
96
|
+
* @param id
|
|
97
|
+
*/
|
|
98
|
+
resume(id: number): void;
|
|
99
|
+
/**
|
|
100
|
+
* 恢复指定的定时器
|
|
101
|
+
* @param timer
|
|
102
|
+
*/
|
|
103
|
+
resume(timer: Timer): void;
|
|
104
|
+
/**
|
|
105
|
+
* 恢复指定的定时器
|
|
106
|
+
* @param target
|
|
107
|
+
*/
|
|
108
|
+
resume(target: EcsBase): void;
|
|
109
|
+
/**
|
|
110
|
+
* 迭代一次
|
|
111
|
+
*/
|
|
112
|
+
step(dt: number): void;
|
|
113
|
+
get size(): number;
|
|
114
|
+
/**
|
|
115
|
+
* 清空
|
|
116
|
+
*/
|
|
117
|
+
clear(): void;
|
|
118
|
+
}
|
|
119
|
+
export {};
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { EcsComponent } from '../ecs/EcsComponent';
|
|
2
|
+
type KeyofFilterType<Base, ExcludedType> = {
|
|
3
|
+
[key in keyof Base]: Base[key] extends ExcludedType ? never : key;
|
|
4
|
+
}[keyof Base];
|
|
5
|
+
type KeyofFilterKey<Base, ExcludedKey> = {
|
|
6
|
+
[key in keyof Base]: key extends ExcludedKey ? never : key;
|
|
7
|
+
}[keyof Base];
|
|
8
|
+
type ExcludedKey = keyof EcsComponent;
|
|
9
|
+
type PropType<Base> = Partial<Pick<Base, KeyofFilterType<Pick<Base, KeyofFilterKey<Base, ExcludedKey>>, Function | string | object>>>;
|
|
10
|
+
interface ITweenOption {
|
|
11
|
+
/**
|
|
12
|
+
* @en
|
|
13
|
+
* Easing function, you can pass in a string or custom function.
|
|
14
|
+
* @zh
|
|
15
|
+
* 缓动函数,可以使用已有的,也可以传入自定义的函数。
|
|
16
|
+
*/
|
|
17
|
+
easing?: ((k: number) => number);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 缓动
|
|
21
|
+
*/
|
|
22
|
+
export declare class Tween<T extends EcsComponent> {
|
|
23
|
+
static step(tween: Tween<EcsComponent>, dt: number): boolean;
|
|
24
|
+
private _id;
|
|
25
|
+
get id(): number;
|
|
26
|
+
/**动作列表 */
|
|
27
|
+
private actions;
|
|
28
|
+
private _target;
|
|
29
|
+
get target(): T;
|
|
30
|
+
constructor(target: T);
|
|
31
|
+
/**
|
|
32
|
+
* 等待
|
|
33
|
+
* @param delay
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
delay(delay: number): this;
|
|
37
|
+
/**
|
|
38
|
+
* 执行
|
|
39
|
+
* @param callback
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
call(callback: Function): this;
|
|
43
|
+
/**
|
|
44
|
+
* 绝对缓动
|
|
45
|
+
* @param time 时间
|
|
46
|
+
* @param props 属性(只能是简单类型)
|
|
47
|
+
* @param opts 选项
|
|
48
|
+
* @returns
|
|
49
|
+
*/
|
|
50
|
+
to(time: number, props: PropType<T>, opts?: ITweenOption): this;
|
|
51
|
+
/**
|
|
52
|
+
* 相对缓动
|
|
53
|
+
* @param time 时间
|
|
54
|
+
* @param props 属性(只能是简单类型)
|
|
55
|
+
* @param opts 选项
|
|
56
|
+
* @returns
|
|
57
|
+
*/
|
|
58
|
+
by<T extends EcsComponent>(time: number, target: T, props: PropType<T>, opts?: ITweenOption): this;
|
|
59
|
+
/**
|
|
60
|
+
* 绝对贝塞尔缓动
|
|
61
|
+
* @param time 时间
|
|
62
|
+
* @param target 目标
|
|
63
|
+
* @param props 属性(只能是简单类型)
|
|
64
|
+
* @param control 控制值(影响曲线幅度)
|
|
65
|
+
* @param opts 选项
|
|
66
|
+
* @returns
|
|
67
|
+
*/
|
|
68
|
+
bezierTo<T extends EcsComponent, K extends PropType<T>>(time: number, target: T, props: K, control: Required<K>, opts?: ITweenOption): this;
|
|
69
|
+
/**
|
|
70
|
+
* 相对贝塞尔缓动
|
|
71
|
+
* @param time 时间
|
|
72
|
+
* @param target 目标
|
|
73
|
+
* @param props 属性(只能是简单类型)
|
|
74
|
+
* @param control 控制值(影响曲线幅度)
|
|
75
|
+
* @param opts 选项
|
|
76
|
+
*/
|
|
77
|
+
bezierBy<T extends EcsComponent, K extends PropType<T>>(time: number, target: T, props: K, control: Required<K>, opts?: ITweenOption): void;
|
|
78
|
+
/**
|
|
79
|
+
* 拷贝数值
|
|
80
|
+
*/
|
|
81
|
+
private static getCopyValue;
|
|
82
|
+
/**
|
|
83
|
+
* 获取目标值
|
|
84
|
+
* @param props 差值
|
|
85
|
+
* @param target 原始值
|
|
86
|
+
*/
|
|
87
|
+
private static getEndValue;
|
|
88
|
+
/**
|
|
89
|
+
* 获取初始值
|
|
90
|
+
* @param props 作为过滤使用
|
|
91
|
+
* @param target 原始值
|
|
92
|
+
*/
|
|
93
|
+
private static getStartValue;
|
|
94
|
+
private static lerp;
|
|
95
|
+
private static bezier;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 创建一个缓动
|
|
99
|
+
*/
|
|
100
|
+
export declare function tween<T extends EcsComponent>(target: T): Tween<T>;
|
|
101
|
+
/**
|
|
102
|
+
* 缓动管理器
|
|
103
|
+
*/
|
|
104
|
+
export declare class TweenManager {
|
|
105
|
+
private map;
|
|
106
|
+
private pausing;
|
|
107
|
+
/**
|
|
108
|
+
* 添加tween
|
|
109
|
+
* @param tween
|
|
110
|
+
* @returns id 永远大于0
|
|
111
|
+
*/
|
|
112
|
+
add(tween: Tween<EcsComponent>): number;
|
|
113
|
+
/**
|
|
114
|
+
* 移除指定的tween
|
|
115
|
+
* @param id
|
|
116
|
+
*/
|
|
117
|
+
remove(id: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* 移除指定的tween
|
|
120
|
+
* @param tween
|
|
121
|
+
*/
|
|
122
|
+
remove(tween: Tween<EcsComponent>): void;
|
|
123
|
+
/**
|
|
124
|
+
* 移除指定target的所有tween
|
|
125
|
+
* @param target
|
|
126
|
+
*/
|
|
127
|
+
remove(target: EcsComponent): void;
|
|
128
|
+
/**
|
|
129
|
+
* 暂停指定的tween
|
|
130
|
+
* @param id
|
|
131
|
+
*/
|
|
132
|
+
pause(id: number): void;
|
|
133
|
+
/**
|
|
134
|
+
* 暂停指定的tween
|
|
135
|
+
* @param tween
|
|
136
|
+
*/
|
|
137
|
+
pause(tween: Tween<EcsComponent>): void;
|
|
138
|
+
/**
|
|
139
|
+
* 暂停指定target的所有tween
|
|
140
|
+
* @param target
|
|
141
|
+
*/
|
|
142
|
+
pause(target: EcsComponent): void;
|
|
143
|
+
/**
|
|
144
|
+
* 恢复指定的tween
|
|
145
|
+
* @param id
|
|
146
|
+
*/
|
|
147
|
+
resume(id: number): void;
|
|
148
|
+
/**
|
|
149
|
+
* 恢复指定的tween
|
|
150
|
+
* @param tween
|
|
151
|
+
*/
|
|
152
|
+
resume(tween: Tween<EcsComponent>): void;
|
|
153
|
+
/**
|
|
154
|
+
* 恢复指定target的所有tween
|
|
155
|
+
* @param target
|
|
156
|
+
*/
|
|
157
|
+
resume(target: EcsComponent): void;
|
|
158
|
+
/**
|
|
159
|
+
* 迭代一次
|
|
160
|
+
*/
|
|
161
|
+
step(dt: number): void;
|
|
162
|
+
get size(): number;
|
|
163
|
+
/**
|
|
164
|
+
* 清空
|
|
165
|
+
*/
|
|
166
|
+
clear(): void;
|
|
167
|
+
}
|
|
168
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
export declare class CustomList<T> {
|
|
2
|
+
private head;
|
|
3
|
+
private tail;
|
|
4
|
+
private count;
|
|
5
|
+
get size(): number;
|
|
6
|
+
values(out: T[]): T[];
|
|
7
|
+
has(value: T): boolean;
|
|
8
|
+
add(value: T): number;
|
|
9
|
+
remove(value: T): boolean;
|
|
10
|
+
forEach(callbackfn: (value: T) => void, thisArg?: any): void;
|
|
11
|
+
clear(): void;
|
|
12
|
+
}
|
|
13
|
+
export declare class CustomArray<T> {
|
|
14
|
+
private array;
|
|
15
|
+
get size(): number;
|
|
16
|
+
values(out: T[]): T[];
|
|
17
|
+
get(index: number): T;
|
|
18
|
+
has(value: T): boolean;
|
|
19
|
+
add(value: T): void;
|
|
20
|
+
remove(value: T): boolean;
|
|
21
|
+
forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;
|
|
22
|
+
find(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): T;
|
|
23
|
+
findIndex(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): number;
|
|
24
|
+
some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
|
|
25
|
+
every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): boolean;
|
|
26
|
+
clear(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare class CustomMap<K, V> {
|
|
29
|
+
private map;
|
|
30
|
+
get size(): number;
|
|
31
|
+
keys(out: K[]): K[];
|
|
32
|
+
values(out: V[]): V[];
|
|
33
|
+
forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
|
|
34
|
+
get(key: K): V;
|
|
35
|
+
has(key: K): boolean;
|
|
36
|
+
set(key: K, value: V): Map<K, V>;
|
|
37
|
+
delete(key: K): boolean;
|
|
38
|
+
clear(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare class NumberMap<K> extends CustomMap<K, number> {
|
|
41
|
+
add(key: K): number;
|
|
42
|
+
sub(key: K): number;
|
|
43
|
+
subDel(key: K): boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 数组Map
|
|
47
|
+
*/
|
|
48
|
+
export declare class ArrayMap<K, V> extends CustomMap<K, Array<V>> {
|
|
49
|
+
add(key: K, value: V): number;
|
|
50
|
+
sub(key: K, value: V): number;
|
|
51
|
+
subDel(key: K, value: V): boolean;
|
|
52
|
+
}
|
|
53
|
+
export declare class SetMap<K, V> extends CustomMap<K, Set<V>> {
|
|
54
|
+
add(key: K, value: V): number;
|
|
55
|
+
sub(key: K, value: V): number;
|
|
56
|
+
subDel(key: K, value: V): boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 唯一数组(同Set)Map
|
|
60
|
+
*/
|
|
61
|
+
export declare class UArrayMap<K, V> extends ArrayMap<K, V> {
|
|
62
|
+
add(key: K, value: V): number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* 唯一List(同Set)Map
|
|
66
|
+
*/
|
|
67
|
+
export declare class UListMap<K, V> extends CustomMap<K, CustomList<V>> {
|
|
68
|
+
add(key: K, value: V): number;
|
|
69
|
+
sub(key: K, value: V): number;
|
|
70
|
+
subDel(key: K, value: V): boolean;
|
|
71
|
+
}
|
|
72
|
+
export declare function createMap(forceDictMode: boolean): any;
|
|
73
|
+
/**
|
|
74
|
+
* 过滤原数组,性能高但是会改变原属组的顺序
|
|
75
|
+
*/
|
|
76
|
+
export declare function filterArray<T>(array: Array<T>, filter: (item: T) => boolean): void;
|
|
77
|
+
/**uuid生成器 */
|
|
78
|
+
export declare class UuidMaker {
|
|
79
|
+
private uuid;
|
|
80
|
+
create(): number;
|
|
81
|
+
clear(): void;
|
|
82
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_a714f0ef=["../../ecs/EcsComponent","LeftDown"];
|
|
4
|
+
var MoveComponent_1,__decorate=this&&this.__decorate||function(e,t,o,n){var s,i=arguments.length,r=i<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,o):n;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)r=Reflect.decorate(e,t,o,n);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(i<3?s(r):i>3?s(t,o,r):s(t,o))||r);return i>3&&r&&Object.defineProperty(t,o,r),r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.MoveComponent=exports.MoveTowardType=void 0;const cc_1=require("cc"),EcsComponent_1=require(__cj_sa_a714f0ef[0]),EcsManager_1=require("../../lib/EcsManager");var MoveTowardType;!function(e){e[e.Right=0]="Right",e[e.RightUp=45]="RightUp",e[e.Up=90]="Up",e[e.LeftUp=135]="LeftUp",e[e.Left=180]="Left",e[e.LeftDown=-135]=__cj_sa_a714f0ef[1],e[e.Down=-90]="Down",e[e.RightDown=-45]="RightDown"}(MoveTowardType=exports.MoveTowardType||(exports.MoveTowardType={}));let MoveComponent=MoveComponent_1=class extends EcsComponent_1.EcsComponent{constructor(){super(...arguments),this._options={rotate:!1,minSpeed:-1/0,maxSpeed:1/0,acceleratedVelocity:0,angleVelocity:0},this._distance=0,this._targetUUID=null,this._target=null,this._toward=null,this._angle=0,this._speed=0}onRemove(){this.reset()}reset(){this._target=null,this._toward=null,this._targetUUID=null,this._angle=null,this._speed=0,this._distance=0,this._options.rotate=!1,this._options.minSpeed=-1/0,this._options.maxSpeed=1/0,this._options.acceleratedVelocity=0,this._options.angleVelocity=0}get options(){return this._options}set options(e){this._options=e}get distance(){return this._distance}set distance(e){this._distance=e}get target(){return this._target&&this._target.uuid!==this._targetUUID&&(this._target=null),this._target}set target(e){this._target=e&&e.isValid?e:null,this._target?this._targetUUID=this._target.uuid:this._targetUUID=null}get toward(){return this._toward}set toward(e){this._toward=MoveComponent_1.getAngleFromNeg180to180(e)}get angle(){return this._angle}set angle(e){this._angle=MoveComponent_1.getAngleFromNeg180to180(e)}get speed(){return this._speed<this.options.minSpeed?this._speed=this.options.minSpeed:this._speed>this.options.maxSpeed&&(this._speed=this.options.maxSpeed),this._speed}set speed(e){e<this.options.minSpeed?e=this.options.minSpeed:e>this.options.maxSpeed&&(e=this.options.maxSpeed),this._speed=e}static getTowardAngle(e,t){return e&&t?cc_1.math.toDegree(Math.atan2(t.y-e.y,t.x-e.x)):0}static getAngleFromNeg180to180(e){return(e>=360||e<=-360)&&(e%=360),e>180?e-=360:e<=-180&&(e+=360),e}static getAngleFrom0To360(e){return(e>=360||e<=-360)&&(e%=360),e<0&&(e+=360),e}static getAngleFromNeg360To0(e){return(e>=360||e<=-360)&&(e%=360),e>0&&(e-=360),e}static getTowardByVelocity(e){return 0===e.y?e.x>=0?MoveTowardType.Right:MoveTowardType.Left:0===e.x?e.y>=0?MoveTowardType.Up:MoveTowardType.Down:e.x===e.y?e.x>=0?MoveTowardType.RightDown:MoveTowardType.LeftDown:e.x===-e.y?e.x>=0?MoveTowardType.RightUp:MoveTowardType.LeftUp:cc_1.Vec2.UNIT_X.signAngle(e)}};MoveComponent.allowRecycling=!0,MoveComponent=MoveComponent_1=__decorate([(0,EcsManager_1.ecsclass)("EcsMoveComponent")],MoveComponent),exports.MoveComponent=MoveComponent;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_b7c02ac1=["function"];
|
|
4
|
+
var __decorate=this&&this.__decorate||function(t,i,e,o){var n,s=arguments.length,r=s<3?i:null===o?o=Object.getOwnPropertyDescriptor(i,e):o;if("object"==typeof Reflect&&__cj_sa_b7c02ac1[0]==typeof Reflect.decorate)r=Reflect.decorate(t,i,e,o);else for(var h=t.length-1;h>=0;h--)(n=t[h])&&(r=(s<3?n(r):s>3?n(i,e,r):n(i,e))||r);return s>3&&r&&Object.defineProperty(i,e,r),r};Object.defineProperty(exports,"__esModule",{value:!0}),exports.NodeComponent=void 0;const cc_1=require("cc"),EcsComponent_1=require("../../ecs/EcsComponent"),EcsManager_1=require("../../lib/EcsManager"),_matrix=new cc_1.Mat4;let NodeComponent=class extends EcsComponent_1.EcsComponent{constructor(){super(...arguments),this.isBoundingBoxDirty=!0,this.$position=(0,cc_1.v3)(),this.$scale=(0,cc_1.v3)(1,1,1),this.$anchorPoint=(0,cc_1.v2)(.5,.5),this.$contentSize=(0,cc_1.size)(),this.$lrot=new cc_1.Quat,this.$euler=(0,cc_1.v3)(),this._boundingBox=new cc_1.Rect,this._boundingBoxOut=new cc_1.Rect}onRemove(){this.reset()}reset(){this.$position.set(0,0,0),this.$scale.set(1,1,1),this.$anchorPoint.set(.5,.5),this.$contentSize.set(0,0),this.$lrot=new cc_1.Quat,this.$euler.set(0,0,0)}get position(){return this.$position}get x(){return this.$position.x}set x(t){var i,e;this.$position.x=t,this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setPosition(this.$position)}get y(){return this.$position.y}set y(t){var i,e;this.$position.y=t,this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setPosition(this.$position)}get z(){return this.$position.z}set z(t){var i,e;this.$position.z=t,this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setPosition(this.$position)}get scale(){return this.$scale}get scaleX(){return this.$scale.x}set scaleX(t){var i,e;this.$scale.x=t,this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setScale(this.$scale)}get scaleY(){return this.$scale.y}set scaleY(t){var i,e;this.$scale.y=t,this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setScale(this.$scale)}get scaleZ(){return this.$scale.z}set scaleZ(t){var i,e;this.$scale.z=t,this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setScale(this.$scale)}get anchorPoint(){return this.$anchorPoint}get anchorX(){return this.$anchorPoint.x}set anchorX(t){var i,e,o;this.$anchorPoint.x=t,this.isBoundingBoxDirty=!0,null===(o=null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e?void 0:e.getComponent(cc_1.UITransform))||void 0===o||o.setAnchorPoint(this.$anchorPoint)}get anchorY(){return this.$anchorPoint.y}set anchorY(t){var i,e,o;this.$anchorPoint.y=t,this.isBoundingBoxDirty=!0,null===(o=null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e?void 0:e.getComponent(cc_1.UITransform))||void 0===o||o.setAnchorPoint(this.$anchorPoint)}get contentSize(){return this.$contentSize}get width(){return this.$contentSize.width}set width(t){var i,e,o;this.$contentSize.width=t,this.isBoundingBoxDirty=!0,null===(o=null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e?void 0:e.getComponent(cc_1.UITransform))||void 0===o||o.setContentSize(this.$contentSize)}get height(){return this.$contentSize.height}set height(t){var i,e,o;this.$contentSize.height=t,this.isBoundingBoxDirty=!0,null===(o=null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e?void 0:e.getComponent(cc_1.UITransform))||void 0===o||o.setContentSize(this.$contentSize)}get rotation(){return this.$lrot}set rotation(t){var i,e;cc_1.Quat.copy(this.$lrot,t),cc_1.Quat.toEuler(this.$euler,this.$lrot),this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setRotation(this.$lrot)}get eulerAngles(){return this.$euler}set eulerAngles(t){var i,e;cc_1.Vec3.copy(this.$euler,t),cc_1.Quat.fromEuler(this.$lrot,t.x,t.y,t.z),this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setRotation(this.$lrot)}get angle(){return this.$euler.z}set angle(t){var i,e;this.$euler.z=t,cc_1.Quat.fromAngleZ(this.$lrot,t),this.isBoundingBoxDirty=!0,null===(e=null===(i=this.entity)||void 0===i?void 0:i.node)||void 0===e||e.setRotation(this.$lrot)}get boundingBox(){return this._updateBoundingBox(),this._boundingBoxOut.set(this._boundingBox)}_updateBoundingBox(){this.isBoundingBoxDirty&&(this.isBoundingBoxDirty=!1,this._boundingBox.set(-this.anchorPoint.x*this.width,-this.anchorPoint.y*this.height,this.width,this.height),cc_1.Mat4.fromSRT?cc_1.Mat4.fromSRT(_matrix,this.rotation,this.position,this.scale):cc_1.Mat4.fromRTS(_matrix,this.rotation,this.position,this.scale),this._boundingBox.transformMat4(_matrix))}get minX(){return this._updateBoundingBox(),this._boundingBox.xMin}get minY(){return this._updateBoundingBox(),this._boundingBox.yMin}get maxX(){return this._updateBoundingBox(),this._boundingBox.xMax}get maxY(){return this._updateBoundingBox(),this._boundingBox.yMax}setPosition(t,i,e=this.z){return this.x=t,this.y=i,this.z=e,this}addPosition(t,i,e=0){return this.x+=t,this.y+=i,this.z+=e,this}setScale(t,i,e=this.scaleZ){return this.scaleX=t,this.scaleY=i,this.scaleZ=e,this}addScale(t,i,e=0){return this.scaleX+=t,this.scaleY+=i,this.scaleZ+=e,this}setAngle(t){return this.angle=t,this}addAngle(t){return this.angle+=t,this}setContentSize(t,i){return this.width=t,this.height=i,this}setAnchorPoints(t,i){return this.anchorX=t,this.anchorY=i,this}};NodeComponent.allowRecycling=!0,NodeComponent=__decorate([(0,EcsManager_1.ecsclass)("EcsNodeComponent")],NodeComponent),exports.NodeComponent=NodeComponent;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MoveSystem=void 0;const cc_1=require("cc"),EcsSystem_1=require("../../ecs/EcsSystem"),EcsFilter_1=require("../../lib/EcsFilter"),MoveComponent_1=require("../component/MoveComponent"),NodeComponent_1=require("../component/NodeComponent");function getAbsoluteValue(e,o){return o<0&&(o=-o),e>0?e>o?o:e:e<0&&e<-o?-o:e}class MoveSystem extends EcsSystem_1.EcsSystem{constructor(){super(...arguments),this.filter=EcsFilter_1.filter.all(MoveComponent_1.MoveComponent,NodeComponent_1.NodeComponent)}execute(e){this.query(this.filter,MoveComponent_1.MoveComponent).forEach(o=>{this.handle(o,o.entity,e)})}handle(e,o,t){e.target&&(e.toward=MoveComponent_1.MoveComponent.getTowardAngle(o.getComponent(NodeComponent_1.NodeComponent),e.target)),this.rotate(e,o,t);const n=e.speed;e.speed+=e.options.acceleratedVelocity*t,e.speed<e.options.minSpeed&&(e.speed=e.options.minSpeed),e.speed>e.options.maxSpeed&&(e.speed=e.options.maxSpeed);const p=(n+e.speed)/2;this.run(e,o,t,p)}run(e,o,t,n){const p=n*t;if(e.angle===MoveComponent_1.MoveTowardType.Right)o.getComponent(NodeComponent_1.NodeComponent).addPosition(p,0);else if(e.angle===MoveComponent_1.MoveTowardType.Left)o.getComponent(NodeComponent_1.NodeComponent).addPosition(-p,0);else if(e.angle===MoveComponent_1.MoveTowardType.Up)o.getComponent(NodeComponent_1.NodeComponent).addPosition(0,p);else if(e.angle===MoveComponent_1.MoveTowardType.Down)o.getComponent(NodeComponent_1.NodeComponent).addPosition(0,-p);else{const t=cc_1.math.toRadian(e.angle),n=Math.cos(t)*p,s=Math.sin(t)*p;o.getComponent(NodeComponent_1.NodeComponent).addPosition(n,s)}e.distance+=p}rotate(e,o,t){let n=0;if(e.toward!==e.angle){const p=MoveComponent_1.MoveComponent.getAngleFromNeg180to180(e.toward-e.angle);n=0===e.options.angleVelocity?p:getAbsoluteValue(p,e.options.angleVelocity*t),e.angle+=n,e.options.rotate&&o.getComponent(NodeComponent_1.NodeComponent).setAngle(e.angle)}return n}}exports.MoveSystem=MoveSystem;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_cd3ebd57=["function","../lib/EcsManager","EcsComponent"];
|
|
4
|
+
var __decorate=this&&this.__decorate||function(t,e,i,n){var s,r=arguments.length,o=r<3?e:null===n?n=Object.getOwnPropertyDescriptor(e,i):n;if("object"==typeof Reflect&&__cj_sa_cd3ebd57[0]==typeof Reflect.decorate)o=Reflect.decorate(t,e,i,n);else for(var a=t.length-1;a>=0;a--)(s=t[a])&&(o=(r<3?s(o):r>3?s(e,i,o):s(e,i))||o);return r>3&&o&&Object.defineProperty(e,i,o),o};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EcsComponent=void 0;const EcsManager_1=require(__cj_sa_cd3ebd57[1]),EcsObject_1=require("../lib/EcsObject");let EcsComponent=class extends EcsObject_1.EcsBaseComponent{constructor(){super(...arguments),this._initing=!1,this._removing=!1,this._dirtyMask=0,this._dirtyVersion=0,this._dirtySink=null,this._isValid=!1,this._enabled=!1,this._entity=null,this.__enabled=!1}static updateEnable(t){t.updateEnable()}static bindDirtySink(t,e){t._dirtySink=e}static beforeRemove(t){return t.innerBeforeRemove()}static onAdd(t,e){return t.innerAdd(e)}static onRemove(t){return t.innerRemove()}get isValid(){return this._isValid}set isValid(t){this._isValid=t}get isStrictValid(){return this._isValid&&!this._removing}get enabled(){return this._enabled}set enabled(t){this._enabled!==t&&(this._enabled=t,this._initing||this._removing||this.updateEnable())}get entity(){return this._entity}set entity(t){this._entity=t}get enabledInHierarchy(){return!!this._enabled&&!!this._entity&&!!this._entity.enabled}updateEnable(){const t=this.enabledInHierarchy;if(this.__enabled===t)return;this.__enabled=t,t?this.onEnable():this.onDisable();const e=this._dirtySink;e&&e.onComponentEnabledChanged&&e.onComponentEnabledChanged(this,t)}get dirty(){return 0!==this._dirtyMask}set dirty(t){t?this.markDirty(1):this.clearDirty(this._dirtyMask)}get dirtyMask(){return this._dirtyMask}get dirtyVersion(){return this._dirtyVersion}hasDirty(t){return 0!==(this._dirtyMask&t)}markDirty(t=1){if(0===t)return;const e=this._dirtyMask,i=e|t;if(e===i)return;this._dirtyMask=i,this._dirtyVersion++;const n=this._dirtySink;n&&this.isStrictValid&&this.entity&&n.onComponentDirty(this,t,e,i)}clearDirty(t=this._dirtyMask){if(0===t)return;const e=this._dirtyMask,i=e&~t;if(e===i)return;this._dirtyMask=i;const n=this._dirtySink;n&&this.isStrictValid&&this.entity&&n.onComponentClearDirty&&n.onComponentClearDirty(this,t,e,i)}clearDirtySilent(){this._dirtyMask=0}innerAdd(t){this._initing=!0,this._removing=!1,this._isValid=!0,this._enabled=!0,this.__enabled=!1,this._entity=t,this.onAdd(),this._initing=!1,this.__enabled=this.enabledInHierarchy,this.__enabled&&this.onEnable()}innerBeforeRemove(){this._removing=!0}innerRemove(){const t=this._dirtySink;t&&t.onComponentRemoved&&t.onComponentRemoved(this),this.__enabled&&this.onDisable(),this.onRemove(),this._removing=!1,this._isValid=!1,this._enabled=!1,this.__enabled=!1,this.clearDirtySilent(),this._dirtySink=null,this._entity=null}onAdd(){}onEnable(){}onDisable(){}onRemove(){}destroy(){return!!this.entity&&this.entity.remove(this)}log(...t){console.log(`[${this.ecsName}] [log]`,...t)}warn(...t){console.warn(`[${this.ecsName}] [warn]`,...t)}error(...t){console.error(`[${this.ecsName}] [error]`,...t)}};EcsComponent=__decorate([(0,EcsManager_1.ecsclass)(__cj_sa_cd3ebd57[2])],EcsComponent),exports.EcsComponent=EcsComponent;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_5a3cb555=["flagAny"];
|
|
4
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.EcsIndexedCondition=exports.EcsIndexedConditionType=exports.EcsIndexedFieldMode=exports.EcsComponentDirtyBitsBase=exports.EcsDirtyClear=void 0,exports.EcsDirtyClear={Matched:"matched",All:"all",None:"none"};class EcsComponentDirtyBitsBase{static bit(e){return 1<<e}static bits(...e){let t=0;for(let s=0;s<e.length;s++)t|=1<<e[s];return t}static has(e,t){return 0!==(e&t)}static add(e,t){return e|t}static remove(e,t){return e&~t}}exports.EcsComponentDirtyBitsBase=EcsComponentDirtyBitsBase,EcsComponentDirtyBitsBase.None=0,exports.EcsIndexedFieldMode={Eq:"eq",Flag:"flag"},exports.EcsIndexedConditionType={Eq:"eq",FlagAll:"flagAll",FlagAny:__cj_sa_5a3cb555[0]},exports.EcsIndexedCondition={eq:e=>({type:exports.EcsIndexedConditionType.Eq,value:e}),flagAll:e=>({type:exports.EcsIndexedConditionType.FlagAll,mask:e}),flagAny:e=>({type:exports.EcsIndexedConditionType.FlagAny,mask:e})};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_34c723ed=["../lib/EcsUtils","../lib/EcsManager"];
|
|
4
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.EcsEntity=void 0;const cc_1=require("cc"),env_1=require("cc/env"),EcsCache_1=require("../lib/EcsCache"),EcsManager_1=require(__cj_sa_34c723ed[1]),EcsObject_1=require("../lib/EcsObject"),EcsUtils_1=require(__cj_sa_34c723ed[0]),EcsComponent_1=require("./EcsComponent");class EcsEntity extends EcsObject_1.EcsBaseEntity{constructor(){super(...arguments),this.flag=new Array(EcsManager_1.flagManager.bits).fill(0),this.instNames=[],this.instNameToComps=new EcsUtils_1.ArrayMap,this.superNameToComps=new EcsUtils_1.ArrayMap,this._isValid=!1,this._enabled=!0,this._ecs=null,this._node=null,this._isDestroyed=!0}get isValid(){return this._isValid}set isValid(e){this._isValid=e}get enabled(){return this._enabled}set enabled(e){this._enabled!==e&&(this._enabled=e,e?this.onEnable():this.onDisable(),this.instNameToComps.forEach(e=>{for(let t=0;t<e.length;t++)EcsComponent_1.EcsComponent.updateEnable(e[t])}))}get ecs(){return this._ecs}get node(){return this._node}set node(e){this._node=e}innerInit(e,t=null){this._ecs=e,this._node=t,this._isValid=!0,this._enabled=!0,this._isDestroyed=!1,this.onAdd(),this._enabled&&this.onEnable()}innerAddComponent(e){const t=e.ecsName;EcsManager_1.classManager.eachSuperName(t,t=>{this.superNameToComps.add(t,e)}),1===this.instNameToComps.add(t,e)&&(this.instNames.push(t),EcsManager_1.flagManager.addFlag(this.flag,EcsManager_1.flagManager.getAllByName(t))),EcsComponent_1.EcsComponent.onAdd(e,this)}innerRemoveComponent(e){const t=e.ecsName;if(EcsManager_1.classManager.eachSuperName(t,t=>{this.superNameToComps.sub(t,e)}),this.instNameToComps.subDel(t,e)){const e=this.instNames.indexOf(t);this.instNames.splice(e,1),EcsManager_1.flagManager.getAllByNames(this.instNames,this.flag)}EcsComponent_1.EcsComponent.onRemove(e)}getCompsByName(e){const t=this.instNameToComps.get(e);if(t&&t.length)return t;const s=this.superNameToComps.get(e);return s&&s.length?s:null}getCompsByName2(e){const t=[],s=this.instNameToComps.get(e);s&&s.length&&Array.prototype.push.apply(t,s);const n=this.superNameToComps.get(e);return n&&n.length&&Array.prototype.push.apply(t,n),t}clear(){const e=this.instNames;for(let t=e.length-1;t>=0;t--){const s=this.instNameToComps.get(e[t]);if(s)for(let e=s.length-1;e>=0;e--)this.removeComponent(s[e])}this.flag.fill(0),this.instNames.length=0,this.instNameToComps.clear(),this.superNameToComps.clear()}destroy(){return!this._isDestroyed&&(this._isDestroyed=!0,this.enabled&&this.onDisable(),this.onRemove(),this.clear(),this._node=null,this._isValid=!1,this._ecs.removeEntity(this),this._ecs=null,!0)}onAdd(){}onEnable(){}onDisable(){}onRemove(){}checkFlagAll(e){return EcsManager_1.flagManager.checkFlagAll(this.flag,e)}checkFlagAny(e){return EcsManager_1.flagManager.checkFlagAny(this.flag,e)}checkFlagOnly(e){const t=this.instNames;for(let s=0;s<t.length;s++){const n=t[s],a=EcsManager_1.flagManager.getAllByName(n);if(!EcsManager_1.flagManager.checkFlagAny(a,e))return!1}return!0}hasEnabledComponentName(e){const t=this.getCompsByName(e);if(!t||0===t.length)return!1;for(let e=0;e<t.length;e++){const s=t[e];if(s.enabledInHierarchy&&s.isStrictValid)return!0}return!1}addComponent(e){return this.add(e)}add(e){if(env_1.DEV&&e.ecsName===EcsComponent_1.EcsComponent.ecsName)return console.error("请使用ecsclass修饰Component",e),null;if(e instanceof EcsObject_1.EcsBaseComponent){if(e.entity===this)return(0,cc_1.error)(`不允许重复添加同一个组件实例\nuuid: ${e.uuid}\n组件名: ${e.ecsName}`),null;if(e.entity)return(0,cc_1.error)(`不允许添加其它实体的组件实例\nuuid: ${e.uuid}\n组件名: ${e.ecsName}`),null;if(!e.allowMultiple){const t=this.instNameToComps.get(e.ecsName);if(t&&t.length)return(0,cc_1.error)(`此类型的组件不允许重复添加\nuuid: ${e.uuid}\n组件名: ${e.ecsName}`),null}return this._ecs.addComponent(this,e),e}{if(!e.allowMultiple){const t=this.instNameToComps.get(e.ecsName);if(t&&t.length)return(0,cc_1.error)(`此类型的组件不允许重复添加\n组件名: ${e.ecsName}`),null}const t=EcsCache_1.componentCache.get(e.ecsName)||new e;return this._ecs.addComponent(this,t),t}}removeComponent(e){return this.remove(e)}remove(e){if(!e)return!1;if(e instanceof EcsObject_1.EcsBaseComponent)return e.entity!==this?((0,cc_1.error)(`移除的组件不属于当前实体\n组件名: ${e.ecsName}`),!1):(this._ecs.removeComponent(e),e.allowRecycling&&(EcsObject_1.EcsBaseComponent.updateUUID(e),EcsCache_1.componentCache.put(e.ecsName,e)),!0);{if(e.allowMultiple)return(0,cc_1.error)(`开启allowMultiple的组件只能通过实例进行移除\n组件名: ${e.ecsName}`),!1;const t=this.get(e);return!!t&&(this._ecs.removeComponent(t),e.allowRecycling&&(EcsObject_1.EcsBaseComponent.updateUUID(t),EcsCache_1.componentCache.put(e.ecsName,t)),!0)}}removeComponents(e){return this.removeAll(e)}removeAll(e){const t=this.getAll(e);if(!t.length)return!1;let s=!0;for(let e=0;e<t.length;e++)s=this.remove(t[e])&&s;return s}hasComponent(e){return this.has(e)}has(e){const t=this.getCompsByName(e.ecsName);return!(!t||0===t.length)}getComponent(e){return this.get(e)}get(e){const t=this.getCompsByName(e.ecsName);return t&&0!==t.length?t[0]:null}getComponents(e){return this.getAll(e)}getAll(e){return this.getCompsByName2(e.ecsName)}}exports.EcsEntity=EcsEntity;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_8e40e492=["EcsSingleton","function","../lib/EcsManager"];
|
|
4
|
+
var __decorate=this&&this.__decorate||function(e,t,c,n){var s,r=arguments.length,o=r<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,c):n;if("object"==typeof Reflect&&__cj_sa_8e40e492[1]==typeof Reflect.decorate)o=Reflect.decorate(e,t,c,n);else for(var l=e.length-1;l>=0;l--)(s=e[l])&&(o=(r<3?s(o):r>3?s(t,c,o):s(t,c))||o);return r>3&&o&&Object.defineProperty(t,c,o),o};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EcsSingleton=void 0;const EcsManager_1=require(__cj_sa_8e40e492[2]),EcsObject_1=require("../lib/EcsObject");let EcsSingleton=class extends EcsObject_1.EcsBaseSingleton{};EcsSingleton=__decorate([(0,EcsManager_1.ecsclass)(__cj_sa_8e40e492[0])],EcsSingleton),exports.EcsSingleton=EcsSingleton;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.EcsSystem=void 0;const EcsFilter_1=require("../lib/EcsFilter"),EcsObject_1=require("../lib/EcsObject"),EcsTimer_1=require("../lib/EcsTimer"),EcsTween_1=require("../lib/EcsTween");class EcsSystem extends EcsObject_1.EcsBaseSystem{static matchEntity(t,e){t.matchEntity(e)}get ecs(){return this._ecs}get observed(){return this.ecs.getObservedQuery()}set ecs(t){this._ecs=t}constructor(t){super(),this._ecs=null,this.timer=new EcsTimer_1.TimerManager,this.tween=new EcsTween_1.TweenManager,this.matcher=null,this.matchEntities=new Map,this.ecs=t}onAdd(){}onRemove(){}query(t,e){return this.matcher===t?e?Array.from(this.matchEntities.values()).map(t=>t.getComponent(e)):Array.from(this.matchEntities.values()):this.ecs.query(t,e)}find(t,e){var s;return this.matcher===t?e?(null===(s=this.matchEntities.values().next().value)||void 0===s?void 0:s.getComponent(e))||null:this.matchEntities.values().next().value||null:this.ecs.find(t,e)||null}exist(t){return this.matcher===t?this.matchEntities.size>0:this.ecs.exist(t)}forEachMatchedEntity(t){this.matchEntities.forEach(e=>{t(e)})}get matchedEntityCount(){return this.matchEntities.size}createEntity(t,e){return this.ecs.createEntity(t,e)}findByUuid(t){return this.ecs.findByUuid(t)}existByUuid(t){return this.ecs.existByUuid(t)}getSingleton(t){return this.ecs.getSingleton(t)}onEntityEnter(t){}onEntityLeave(t){}matchEntity(t){if(this.matcher){const e=this.matchEntities.has(t.uuid);EcsFilter_1.Filter.check(t,this.matcher)?e||(this.matchEntities.set(t.uuid,t),this.onEntityEnter(t)):e&&(this.matchEntities.delete(t.uuid),this.onEntityLeave(t))}else this.matchEntities.size>0&&(this.matchEntities.forEach(t=>{this.onEntityLeave(t)}),this.matchEntities.clear())}execute(t,...e){}beforeExecute(t,...e){}afterExecute(t,...e){}update(t,...e){}beforeUpdate(t,...e){}afterUpdate(t,...e){}log(...t){console.log(`[${this.ecsName}] [log]`,...t)}warn(...t){console.warn(`[${this.ecsName}] [warn]`,...t)}error(...t){console.error(`[${this.ecsName}] [error]`,...t)}}exports.EcsSystem=EcsSystem;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.ecs=exports.ECS=void 0;const cc_1=require("cc"),env_1=require("cc/env"),EcsComponent_1=require("./ecs/EcsComponent"),EcsSystem_1=require("./ecs/EcsSystem"),EcsCache_1=require("./lib/EcsCache"),EcsFilter_1=require("./lib/EcsFilter"),EcsManager_1=require("./lib/EcsManager"),EcsObject_1=require("./lib/EcsObject");class ECS{constructor(){this.entityManager=new EcsManager_1.EntityManager,this.systemManager=new EcsManager_1.SystemManager,this.componentManager=new EcsManager_1.ComponentManager,this.singletons=[],this.mutationDepth=0,this.dirtyEntities=new Map,this.dirtySink=null,this.observedQuery=null}static create(){return new ECS}query(e,t){const s=EcsFilter_1.Filter.query(this.entityManager,this.componentManager,e);return t?s.map(e=>e.get(t)):s}find(e,t){const s=EcsFilter_1.Filter.find(this.entityManager,this.componentManager,e);return s?t?s.get(t):s:null}exist(e){return!!EcsFilter_1.Filter.find(this.entityManager,this.componentManager,e)}findByUuid(e){return this.entityManager.get(e)}existByUuid(e){return!!this.entityManager.has(e)}addSingleton(e){if(env_1.DEV&&"EcsBase"===e.ecsName)return console.error("请使用ecsclass修饰",e),null;const t=this.singletons.find(t=>t.ecsName===e.ecsName);if(t)return t;if(e instanceof EcsObject_1.EcsBase)return this.singletons.push(e),e;{const t=new e;return this.singletons.push(t),t}}getSingleton(e){return this.singletons.find(t=>t.ecsName===e.ecsName)||null}removeSingleton(e){const t=this.singletons.findIndex(t=>t.ecsName===e.ecsName);return t>=0?this.singletons.splice(t,1)[0]:null}createEntity(e,t){const s=EcsCache_1.entityCache.get()||new e;return EcsObject_1.EcsBaseEntity.init(s,this,cc_1.Node.isNode(t)?t:null==t?void 0:t.node),this.entityManager.add(s),s}removeEntity(e){const t=this.dirtySink;t&&t.onEntityRemoved&&t.onEntityRemoved(e),this.entityManager.remove(e),e.allowRecycling&&(EcsObject_1.EcsBaseEntity.updateUUID(e),EcsCache_1.entityCache.put(e))}addComponent(e,t){EcsComponent_1.EcsComponent.bindDirtySink(t,this.dirtySink),EcsObject_1.EcsBaseEntity.addComponent(e,t),this.componentManager.addComponent(t.ecsName,t);const s=this.dirtySink;s&&s.onComponentAdded&&s.onComponentAdded(e,t),this.markEntityDirty(e)}removeComponent(e){const t=e.entity,s=e.ecsName;if(t){const s=this.dirtySink;s&&s.onComponentRemoving&&s.onComponentRemoving(t,e),EcsComponent_1.EcsComponent.beforeRemove(e),0===this.mutationDepth&&this.refreshEntitySystems(t),EcsObject_1.EcsBaseEntity.removeComponent(t,e),this.mutationDepth>0&&this.markEntityDirty(t)}this.componentManager.removeComponent(s,e)}addSystem(e){const t=new e(this);this.systemManager.add(t),EcsObject_1.EcsBaseSystem.onAdd(t),this.entityManager.each(function(e){EcsSystem_1.EcsSystem.matchEntity(t,e)})}removeSystem(e){const t=this.systemManager.remove(e);t&&EcsObject_1.EcsBaseSystem.onRemove(t)}clear(){this.systemManager.clear(),this.entityManager.each(e=>{const t=this.dirtySink;t&&t.onEntityRemoved&&t.onEntityRemoved(e)}),this.entityManager.clear(),this.componentManager.clear(),this.singletons.length=0,this.mutationDepth=0,this.dirtyEntities.clear()}setDirtySink(e){this.dirtySink=e,this.componentManager.eachUnique(t=>{EcsComponent_1.EcsComponent.bindDirtySink(t,e)})}getDirtySink(){return this.dirtySink}setObservedQuery(e){this.observedQuery=e}getObservedQuery(){return this.observedQuery}beginMutation(){this.mutationDepth++}endMutation(){this.mutationDepth<=0||(this.mutationDepth--,this.mutationDepth>0||(this.dirtyEntities.forEach(e=>{this.refreshEntitySystems(e)}),this.dirtyEntities.clear()))}markEntityDirty(e){this.mutationDepth>0?this.dirtyEntities.set(e.uuid,e):this.refreshEntitySystems(e)}refreshEntitySystems(e){this.systemManager.each(function(t){EcsSystem_1.EcsSystem.matchEntity(t,e)})}executeSystem(e,t){this.systemManager.each(function(s){EcsObject_1.EcsBaseSystem.execute(s,e,t)})}beforeExecuteSystem(e,t){this.systemManager.each(function(s){EcsObject_1.EcsBaseSystem.beforeExecute(s,e,t)})}afterExecuteSystem(e,t){this.systemManager.each(function(s){EcsObject_1.EcsBaseSystem.afterExecute(s,e,t)})}updateSystem(e,t){this.systemManager.each(function(s){EcsObject_1.EcsBaseSystem.update(s,e,t)})}beforeUpdateSystem(e,t){this.systemManager.each(function(s){EcsObject_1.EcsBaseSystem.beforeUpdate(s,e,t)})}afterUpdateSystem(e,t){this.systemManager.each(function(s){EcsObject_1.EcsBaseSystem.afterUpdate(s,e,t)})}execute(e,...t){this.beforeExecuteSystem(e,t),this.executeSystem(e,t),this.afterExecuteSystem(e,t)}update(e,...t){this.beforeUpdateSystem(e,t),this.updateSystem(e,t),this.afterUpdateSystem(e,t)}}exports.ECS=ECS,exports.ecs=ECS.create(),env_1.DEV&&!env_1.EDITOR&&(window.ecs=exports.ecs);
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.componentCache=exports.entityCache=void 0;class Cache{constructor(){this.cache=[]}get(){return this.cache.length?this.cache.pop():null}put(e){this.cache.push(e)}clear(){this.cache.length=0}}exports.entityCache=new Cache;class CacheMap{constructor(){this.cache=new Map}get(e){const c=this.cache.get(e);return c&&c.length?c.pop():null}put(e,c){const t=this.cache.get(e);t?t.push(c):this.cache.set(e,[c])}clear(){this.cache.clear()}}exports.componentCache=new CacheMap;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.filter=exports.Filter=void 0;const EcsManager_1=require("./EcsManager");class Filter{constructor(){this.anyList=[],this.include="",this.hasSearch=!1,this.hasExclude=!1,this.pipeline=[]}static check(e,t){const n=t.pipeline;for(let t=0,l=n.length;t<l;t++)if(!n[t](e))return!1;return!0}static query(e,t,n){var l;let i=[];if(!n)return i;const filterComp=e=>{e.enabledInHierarchy&&(i.indexOf(e.entity)>=0||i.push(e.entity))};return 0!==n.anyList.length&&(n.anyList.forEach(e=>{var n;null===(n=t.getComponents(e))||void 0===n||n.forEach(filterComp)}),0===i.length)||0===i.length&&n.include&&(null===(l=t.getComponents(n.include))||void 0===l||l.forEach(filterComp),0===i.length)?i:(0===i.length&&!n.hasSearch&&n.hasExclude&&e.each(e=>{e.enabled&&i.push(e)}),0===i.length?i:i.filter(e=>this.check(e,n)))}static find(e,t,n){var l,i;if(!n)return null;if(n.anyList.length){for(let e=0,i=n.anyList.length;e<i;e++){const i=n.anyList[e],r=null===(l=t.getComponents(i))||void 0===l?void 0:l.find(e=>!!e.enabledInHierarchy&&this.check(e.entity,n));if(r)return r.entity}return null}let r=[];return n.include&&(null===(i=t.getComponents(n.include))||void 0===i||i.forEach(e=>{e.enabledInHierarchy&&(r.indexOf(e.entity)>=0||r.push(e.entity))}),0===r.length)?null:(0===r.length&&!n.hasSearch&&n.hasExclude&&e.each(e=>{e.enabled&&r.push(e)}),0===r.length?null:(r=r.filter(e=>this.check(e,n)),r.length>0?r[0]:null))}any(...e){return this.hasSearch=!0,0===e.length||e.forEach(e=>{this.anyList.indexOf(e.ecsName)>=0||this.anyList.push(e.ecsName)}),this}all(...e){if(this.hasSearch=!0,0===e.length)return this;this.include||(this.include=e[0].ecsName);let t=null;const n=e.map(e=>e.ecsName);return this.pipeline.push(function(e){if(t||(t=EcsManager_1.flagManager.getByNames(n)),!e.checkFlagAll(t))return!1;for(let t=0,l=n.length;t<l;t++)if(!e.hasEnabledComponentName(n[t]))return!1;return!0}),this}only(...e){if(this.hasSearch=!0,0===e.length)return this;this.include||(this.include=e[0].ecsName);let t=null;const n=e.map(e=>e.ecsName);return this.pipeline.push(function(e){if(t||(t=EcsManager_1.flagManager.getByNames(n)),!e.checkFlagOnly(t))return!1;for(let t=0,l=n.length;t<l;t++)if(!e.hasEnabledComponentName(n[t]))return!1;return!0}),this}exclude(...e){if(0===e.length)return this;this.hasExclude=!0;let t=null;const n=e.map(e=>e.ecsName);return this.pipeline.push(function(e){if(t||(t=EcsManager_1.flagManager.getByNames(n)),!e.checkFlagAny(t))return!0;for(let t=0,l=n.length;t<l;t++)if(e.hasEnabledComponentName(n[t]))return!1;return!0}),this}}exports.Filter=Filter,exports.filter={all:(...e)=>(new Filter).all(...e),any:(...e)=>(new Filter).any(...e),only:(...e)=>(new Filter).only(...e),exclude:(...e)=>(new Filter).exclude(...e)};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_caec30d8=["./EcsUtils"];
|
|
4
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.SystemManager=exports.EntityManager=exports.ComponentManager=exports.classManager=exports.flagManager=exports.ecsclass=exports.getClassByName=void 0;const env_1=require("cc/env"),EcsObject_1=require("./EcsObject"),EcsUtils_1=require(__cj_sa_caec30d8[0]);function getClassByName(e){return exports.classManager.getClassByName(e)}function ecsclass(e){return function(t){return t.ecsName=e,exports.classManager.add(t,e),t}}exports.getClassByName=getClassByName,exports.ecsclass=ecsclass;class FlagManager{constructor(){this.index=0,this.cache=new Map,this.cacheAll=new Map}addFlag(e,t){for(let s=0;s<t.length;s++)e[s]|=t[s]}removeFlag(e,t){for(let s=0;s<t.length;s++)e[s]&=~t[s]}checkFlagAll(e,t){for(let s=0;s<t.length;s++)if((e[s]&t[s])!==t[s])return!1;return!0}checkFlagAny(e,t){for(let s=0;s<t.length;s++)if(0!=(e[s]&t[s]))return!0;return!1}getAllByName(e){const t=this.cacheAll.get(e);if(t)return t;const s=[e];exports.classManager.eachSuperName(e,e=>{s.push(e)});const r=this.getByNames(s);return this.cacheAll.set(e,r),r}getAllByNames(e,t){let s=this.getAllByName(e[0]);for(let e=0;e<t.length;e++)t[e]=s[e];for(let r=1;r<e.length;r++){s=this.getAllByName(e[r]);for(let e=0;e<t.length;e++)t[e]=t[e]|s[e]}return t}getByName(e){const t=this.cache.get(e);if(t)return t;const s=this.bits;if(env_1.DEV&&this.index>=31*s)throw new Error(`当前Component的种类超过${31*s}个`);const r=new Array(s).fill(0);return r[this.index/31>>>0]=1<<this.index%31,this.cache.set(e,r),this.index++,r}getByNames(e){const t=new Array(this.bits);let s=this.getByName(e[0]);for(let e=0;e<t.length;e++)t[e]=s[e];for(let r=1;r<e.length;r++){s=this.getByName(e[r]);for(let e=0;e<t.length;e++)t[e]=t[e]|s[e]}return t}get bits(){return Math.ceil(exports.classManager.comSize/31)}}exports.flagManager=new FlagManager;class ClassManager{constructor(){this.comClassCount=0,this.nameToSuperName=new Map,this.nameToClass=new Map}getSuper(e){if(!e||!e.prototype)return null;const t=e.prototype,s=t&&Object.getPrototypeOf(t);return s&&s.constructor}add(e,t){env_1.DEV&&this.nameToClass.has(t)&&console.error(`[ecs] ${t}已存在`),this.nameToClass.set(t,e);let s=this.getSuper(e);for(;s&&s.ecsName!==EcsObject_1.EcsBase.ecsName;){if(env_1.DEV&&t===s.ecsName)return void console.error(`[ecs] 请使用ecsclass修饰\n @ecsclass('${e.name}')\n`,e);this.nameToSuperName.set(t,s.ecsName),s=this.getSuper(e=s),t=e.ecsName}s===EcsObject_1.EcsBaseComponent?this.comClassCount++:env_1.DEV&&EcsObject_1.EcsBaseSingleton}eachSuperName(e,t){for(;e;){const s=this.getSuperName(e);if(!s)break;t(e=s)}}isChildByName(e,t){if(!e)return!1;if(!t)return!1;for(;e;){const s=this.getSuperName(e);if(s===t)return!0;e=s}return!1}getClassByName(e){return this.nameToClass.get(e)}getSuperName(e){return this.nameToSuperName.get(e)||""}get comSize(){return this.comClassCount}}exports.classManager=new ClassManager;class ComponentManager{constructor(){this.components=new Map}getOrCreateComps(e){return this.components.has(e)||this.components.set(e,new EcsUtils_1.CustomArray),this.components.get(e)}addComponent(e,t){e&&(this.getOrCreateComps(e).add(t),this.addComponent(exports.classManager.getSuperName(e),t))}removeComponent(e,t){e&&this.components.has(e)&&(this.getOrCreateComps(e).remove(t),this.removeComponent(exports.classManager.getSuperName(e),t))}getComponents(e){return this.components.get(e)||null}clear(){this.components.forEach(e=>e.clear()),this.components.clear()}eachUnique(e){const t=new Map;this.components.forEach(s=>{s.forEach(s=>{t.has(s.uuid)||(t.set(s.uuid,!0),e(s))})})}}exports.ComponentManager=ComponentManager;class EntityManager{constructor(){this.entities=new Map}has(e){return this.entities.get(e)||null}add(e){this.entities.set(e.uuid,e)}remove(e){return this.entities.delete(e.uuid)}get(e){return this.entities.get(e)||null}getAll(e){return this.entities.forEach(t=>e.push(t)),e}each(e){this.entities.forEach(e)}clear(){this.entities.clear()}}exports.EntityManager=EntityManager;class SystemManager{constructor(){this.systems=[]}add(e){this.systems.push(e)}get(e){const t=this.systems.findIndex(t=>t.ecsName===e.ecsName);return this.systems[t]}remove(e){const t=this.systems.findIndex(t=>t.ecsName===e.ecsName);return t>=0&&this.systems.splice(t,1)[0]||null}clear(){this.systems.length=0}each(e){this.systems.forEach(e)}get size(){return this.systems.length}}exports.SystemManager=SystemManager;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_79ef8ff7=["./EcsUtils"];
|
|
4
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.EcsBaseSingleton=exports.EcsBaseSystem=exports.EcsBaseComponent=exports.EcsBaseEntity=exports.EcsBase=exports.singletonUuidMaker=exports.systemUuidMaker=exports.componentUuidMaker=exports.entityUuidMaker=void 0;const EcsUtils_1=require(__cj_sa_79ef8ff7[0]);exports.entityUuidMaker=new EcsUtils_1.UuidMaker,exports.componentUuidMaker=new EcsUtils_1.UuidMaker,exports.systemUuidMaker=new EcsUtils_1.UuidMaker,exports.singletonUuidMaker=new EcsUtils_1.UuidMaker;class EcsBase{get ecsName(){return this.constructor.ecsName}}exports.EcsBase=EcsBase,EcsBase.ecsName="EcsBase";class EcsBaseEntity extends EcsBase{constructor(){super(...arguments),this._uuid=exports.entityUuidMaker.create()}static updateUUID(e){e._uuid=exports.entityUuidMaker.create()}static init(e,t,s=null){return e.innerInit(t,s)}static addComponent(e,t){return e.innerAddComponent(t)}static removeComponent(e,t){return e.innerRemoveComponent(t)}get uuid(){return this._uuid}get allowRecycling(){return this.constructor.allowRecycling}}exports.EcsBaseEntity=EcsBaseEntity,EcsBaseEntity.allowRecycling=!1;class EcsBaseComponent extends EcsBase{constructor(){super(...arguments),this._uuid=exports.componentUuidMaker.create()}static updateUUID(e){e._uuid=exports.componentUuidMaker.create()}get uuid(){return this._uuid}get allowRecycling(){return this.constructor.allowRecycling}get allowMultiple(){return this.constructor.allowMultiple}}exports.EcsBaseComponent=EcsBaseComponent,EcsBaseComponent.allowRecycling=!1,EcsBaseComponent.allowMultiple=!1;class EcsBaseSystem extends EcsBase{constructor(){super(...arguments),this._uuid=exports.systemUuidMaker.create()}get uuid(){return this._uuid}static onAdd(e){e.onAdd()}static onRemove(e){e.onRemove()}static execute(e,t,s){e.execute(t,...s)}static beforeExecute(e,t,s){e.beforeExecute(t,...s)}static afterExecute(e,t,s){e.afterExecute(t,...s)}static update(e,t,s){e.update(t,...s)}static beforeUpdate(e,t,s){e.beforeUpdate(t,...s)}static afterUpdate(e,t,s){e.afterUpdate(t,...s)}}exports.EcsBaseSystem=EcsBaseSystem;class EcsBaseSingleton extends EcsBase{constructor(){super(...arguments),this._uuid=exports.singletonUuidMaker.create()}get uuid(){return this._uuid}}exports.EcsBaseSingleton=EcsBaseSingleton;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_60fac700=["number"];
|
|
4
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.TimerManager=exports.timer=exports.Timer=void 0;let tid=0;class Timer{static step(e,t){if(e.time+=t,e.first){if(e.time<e._delay)return!0;e.first=!1,e.time=0}else{if(e.time<e._interval)return!0;e.time=0}return e.callback.call(e.target),!(e._repeat>=0&&--e._repeat<0)}get id(){return this._id}get target(){return this._target}constructor(e,t=null){this._id=++tid,this.first=!0,this.time=0,this._target=null,this._delay=0,this._interval=0,this._repeat=-1,this._target=t,this.callback=e}delay(e){return this._delay=Math.max(0,e),this}interval(e){return this._interval=Math.max(0,e),this}repeat(e){return this._repeat=e,this}}function timer(e,t=null){return new Timer(e,t)}exports.Timer=Timer,exports.timer=timer;class TimerManager{constructor(){this.map=new Map,this.pausing=new Map}add(e){return this.map.set(e.id,e),e.id}remove(e){"number"==typeof e?(this.map.delete(e),this.pausing.delete(e)):e instanceof Timer?(this.map.delete(e.id),this.pausing.delete(e.id)):this.map.forEach((t,i)=>{t.target===e&&(this.map.delete(i),this.pausing.delete(i))})}pause(e){"number"==typeof e?this.pausing.set(e,!0):e instanceof Timer?this.pausing.set(e.id,!0):this.map.forEach((t,i)=>{t.target===e&&this.pausing.set(i,!0)})}resume(e){__cj_sa_60fac700[0]==typeof e?this.pausing.delete(e):e instanceof Timer?this.pausing.delete(e.id):this.map.forEach((t,i)=>{t.target===e&&this.pausing.delete(i)})}step(e){this.map.forEach((t,i)=>{this.pausing.has(i)||!1===Timer.step(t,e)&&this.map.delete(i)})}get size(){return this.map.size}clear(){this.map.clear(),this.pausing.clear()}}exports.TimerManager=TimerManager;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_f8da6bd1=["object","boolean"];
|
|
4
|
+
Object.defineProperty(exports,"__esModule",{value:!0}),exports.TweenManager=exports.tween=exports.Tween=void 0;const cc_1=require("cc");var ActionType;!function(t){t[t.None=0]="None",t[t.To=1]="To",t[t.By=2]="By"}(ActionType||(ActionType={}));class Action{}class PropAction extends Action{constructor(){super(...arguments),this.type=ActionType.None,this.ratio=0,this.time=0,this.end=null,this.start=null,this.easing=null}}class BezierPropAction extends PropAction{constructor(){super(...arguments),this.control=null}}class DelayAction extends Action{constructor(){super(...arguments),this.delay=0}}class CallAction extends Action{constructor(){super(...arguments),this.callback=null}}let tid=0;class Tween{static step(t,e){const n=t.actions[0];if(n instanceof DelayAction)n.delay-=e,n.delay<=0&&t.actions.shift();else if(n instanceof CallAction)n.callback&&(t.actions.shift(),n.callback());else if(n instanceof PropAction)if(t.target.isValid){n.ratio=Math.min(n.ratio+e/n.time,1),n.ratio>=1&&t.actions.shift();const s=n.easing?n.easing(n.ratio):n.ratio;n.start||(n.start=Tween.getStartValue(n.end,t.target),n.type===ActionType.By&&(n instanceof BezierPropAction?(n.end=Tween.getEndValue(n.end,t.target),n.control=Tween.getStartValue(n.control,t.target)):n.end=Tween.getEndValue(n.end,t.target))),n instanceof BezierPropAction?Tween.bezier(s,n.start,n.control,n.end,t.target):Tween.lerp(s,n.start,n.end,t.target)}else t.actions.shift();else t.actions.shift();return t.actions.length>0}get id(){return this._id}get target(){return this._target}constructor(t){this._id=++tid,this.actions=[],this._target=t}delay(t){const e=new DelayAction;return e.delay=t,this.actions.push(e),this}call(t){const e=new CallAction;return e.callback=t,this.actions.push(e),this}to(t,e,n){const s=new PropAction;return s.type=ActionType.To,s.ratio=0,s.time=Math.max(t,0),s.end=Tween.getCopyValue(e),s.start=null,s.easing=(null==n?void 0:n.easing)||null,this.actions.push(s),this}by(t,e,n,s){const o=new PropAction;return o.type=ActionType.By,o.ratio=0,o.time=Math.max(t,0),o.end=Tween.getCopyValue(n),o.start=null,o.easing=(null==s?void 0:s.easing)||null,this.actions.push(o),this}bezierTo(t,e,n,s,o){const i=new BezierPropAction;return i.type=ActionType.To,i.ratio=0,i.time=Math.max(t,0),i.control=Tween.getStartValue(n,s),i.end=Tween.getCopyValue(n),i.start=null,i.easing=(null==o?void 0:o.easing)||null,this.actions.push(i),this}bezierBy(t,e,n,s,o){const i=new BezierPropAction;i.type=ActionType.By,i.ratio=0,i.time=Math.max(t,0),i.end=Tween.getCopyValue(n),i.control=Tween.getCopyValue(s),i.start=null,i.easing=(null==o?void 0:o.easing)||null,this.actions.push(i),this.actions.push(i)}static getCopyValue(t){const e={};for(const n in t)Object.prototype.hasOwnProperty.call(t,n)&&("number"==typeof t[n]||"boolean"==typeof t[n]?e[n]=t[n]:t[n]&&"object"==typeof t[n]&&(e[n]=this.getCopyValue(t[n])));return e}static getEndValue(t,e={}){const n={};for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&("number"==typeof t[s]?n[s]=t[s]+(e[s]||0):"boolean"==typeof t[s]?n[s]=t[s]:t[s]&&"object"==typeof t[s]&&(n[s]=this.getEndValue(t[s],e[s])));return n}static getStartValue(t,e={}){const n={};for(const s in t)Object.prototype.hasOwnProperty.call(t,s)&&("number"==typeof t[s]?n[s]=e[s]||0:"boolean"==typeof t[s]?n[s]=e[s]||!1:t[s]&&__cj_sa_f8da6bd1[0]==typeof t[s]&&(n[s]=this.getStartValue(t[s],e[s])));return n}static lerp(t,e,n,s={}){for(const o in e)Object.prototype.hasOwnProperty.call(e,o)&&("number"==typeof e[o]?s[o]=cc_1.math.lerp(e[o],n[o],t):__cj_sa_f8da6bd1[1]==typeof e[o]?s[o]=t>=1?n[o]:e[o]:e[o]&&"object"==typeof e[o]&&this.lerp(t,e[o],n[o],s[o]))}static bezier(t,e,n,s,o={}){for(const i in e)if(Object.prototype.hasOwnProperty.call(e,i))if("number"==typeof e[i]){const a=cc_1.math.lerp(e[i],n[i],t),r=cc_1.math.lerp(n[i],s[i],t);o[i]=cc_1.math.lerp(a,r,t)}else"boolean"==typeof e[i]?o[i]=t>=1?s[i]:e[i]:e[i]&&"object"==typeof e[i]&&this.lerp(t,e[i],s[i],o[i])}}function tween(t){return new Tween(t)}exports.Tween=Tween,exports.tween=tween;class TweenManager{constructor(){this.map=new Map,this.pausing=new Map}add(t){return this.map.set(t.id,t),t.id}remove(t){"number"==typeof t?(this.map.delete(t),this.pausing.delete(t)):t instanceof Tween?(this.map.delete(t.id),this.pausing.delete(t.id)):this.map.forEach((e,n)=>{e.target===t&&(this.map.delete(n),this.pausing.delete(n))})}pause(t){"number"==typeof t?this.pausing.set(t,!0):t instanceof Tween?this.pausing.set(t.id,!0):this.map.forEach((e,n)=>{e.target===t&&this.pausing.set(n,!0)})}resume(t){"number"==typeof t?this.pausing.delete(t):t instanceof Tween?this.pausing.delete(t.id):this.map.forEach((e,n)=>{e.target===t&&this.pausing.delete(n)})}step(t){this.map.forEach((e,n)=>{this.pausing.has(n)||!1===Tween.step(e,t)&&this.map.delete(n)})}get size(){return this.map.size}clear(){this.map.clear(),this.pausing.clear()}}exports.TweenManager=TweenManager;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.UuidMaker=exports.filterArray=exports.createMap=exports.UListMap=exports.UArrayMap=exports.SetMap=exports.ArrayMap=exports.NumberMap=exports.CustomMap=exports.CustomArray=exports.CustomList=void 0;class ListItem{static create(t=null){if(this.cache.length){const e=this.cache.pop();return e.value=t,e}return new ListItem(t)}static put(t){t.value=null,t.next=null,this.cache.push(t)}constructor(t=null){this.next=null,this.value=null,this.value=t}}ListItem.cache=[];class CustomList{constructor(){this.head=ListItem.create(),this.tail=this.head,this.count=0}get size(){return this.count}values(t){let e=this.head.next;for(;e;)t.push(e.value),e=e.next;return t}has(t){let e=this.head.next;for(;e;){if(e.value===t)return!0;e=e.next}return!1}add(t){return this.count++,this.tail.next=ListItem.create(t),this.tail=this.tail.next,this.count}remove(t){let e=this.head;for(;e.next;){if(e.next.value===t){this.count--;const t=e.next;return e.next=t.next,null===e.next&&(this.tail=e),ListItem.put(t),!0}e=e.next}return!1}forEach(t,e){let s=this.head.next;for(;s;)t.call(e,s.value),s=s.next}clear(){let t=this.head.next,e=t&&t.next;for(;t;)ListItem.put(t),t=e,e=t&&t.next;this.head.next=null,this.tail=this.head,this.count=0}}exports.CustomList=CustomList;class CustomArray{constructor(){this.array=[]}get size(){return this.array.length}values(t){return Array.prototype.push.apply(t,this.array),t}get(t){return this.array[t]}has(t){return this.array.indexOf(t)>=0}add(t){this.array.push(t)}remove(t){const e=this.array.indexOf(t);return e>=0&&(this.array.splice(e,1),!0)}forEach(t,e){return this.array.forEach(t,e)}find(t,e){return this.array.find(t,e)}findIndex(t,e){return this.array.findIndex(t,e)}some(t,e){return this.array.some(t,e)}every(t,e){return this.array.every(t,e)}clear(){this.array.length=0}}exports.CustomArray=CustomArray;class CustomMap{constructor(){this.map=new Map}get size(){return this.map.size}keys(t){return this.map.forEach((e,s)=>t.push(s)),t}values(t){return this.map.forEach(e=>t.push(e)),t}forEach(t,e){return this.map.forEach(t,e)}get(t){return this.map.get(t)}has(t){return this.map.has(t)}set(t,e){return this.map.set(t,e)}delete(t){return this.map.delete(t)}clear(){this.map.clear()}}exports.CustomMap=CustomMap;class NumberMap extends CustomMap{add(t){const e=(this.get(t)||0)+1;return this.set(t,e),e}sub(t){if(!this.has(t))return 0;const e=this.get(t)-1;return this.set(t,e),e}subDel(t){return 0===this.sub(t)&&(this.delete(t),!0)}}exports.NumberMap=NumberMap;class ArrayMap extends CustomMap{add(t,e){if(this.has(t)){const s=this.get(t);return s.push(e),s.length}return this.set(t,[e]),1}sub(t,e){const s=this.get(t);if(!s)return 0;const r=s.indexOf(e);return r>=0&&s.splice(r,1),s.length}subDel(t,e){return 0===this.sub(t,e)&&(this.delete(t),!0)}}exports.ArrayMap=ArrayMap;class SetMap extends CustomMap{add(t,e){return this.has(t)?this.get(t).add(e).size:this.set(t,(new Set).add(e)).size}sub(t,e){if(!this.has(t))return 0;const s=this.get(t);return s.delete(e),s.size}subDel(t,e){return 0===this.sub(t,e)&&(this.delete(t),!0)}}exports.SetMap=SetMap;class UArrayMap extends ArrayMap{add(t,e){if(this.has(t)){const s=this.get(t);return-1===s.indexOf(e)&&s.push(e),s.length}return this.set(t,[e]),1}}exports.UArrayMap=UArrayMap;class UListMap extends CustomMap{add(t,e){if(this.has(t)){const s=this.get(t);return s.has(e)||s.add(e),s.size}{const s=new CustomList;return this.set(t,s),s.add(e),1}}sub(t,e){if(!this.has(t))return 0;const s=this.get(t);return s.remove(e),s.size}subDel(t,e){return 0===this.sub(t,e)&&(this.delete(t),!0)}}function createMap(t){let e=Object.create(null);if(t){const t=".",s="/";e[t]=!0,e[s]=!0,delete e[t],delete e[s]}return e}function filterArray(t,e){let s=0,r=null,a=t.length;for(;s<a;)r=t[s],e(r)?++s:(t[s]=t[a-1],t[a-1]=r,--a);t.length=a}exports.UListMap=UListMap,exports.createMap=createMap,exports.filterArray=filterArray;class UuidMaker{constructor(){this.uuid=0}create(){return++this.uuid}clear(){this.uuid=0}}exports.UuidMaker=UuidMaker;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/* CJ_RUNTIME_PROTECTED_JS */
|
|
2
|
+
"use strict";
|
|
3
|
+
var __cj_sa_4bd90f3f=["./assets/ecs/EcsSingleton","getClassByName","tween","./assets/ecs/EcsDirty","./assets/ecs/EcsEntity"];
|
|
4
|
+
var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,t,s){void 0===s&&(s=t);var n=Object.getOwnPropertyDescriptor(r,t);n&&!("get"in n?!r.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,s,n)}:function(e,r,t,s){void 0===s&&(s=t),e[s]=r[t]}),__exportStar=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||__createBinding(r,e,t)};Object.defineProperty(exports,"__esModule",{value:!0}),exports.tween=exports.Tween=exports.timer=exports.Timer=exports.getClassByName=exports.ecsclass=exports.filter=void 0,__exportStar(require("./assets/ecs"),exports),__exportStar(require("./assets/ecs/EcsComponent"),exports),__exportStar(require(__cj_sa_4bd90f3f[3]),exports),__exportStar(require(__cj_sa_4bd90f3f[4]),exports),__exportStar(require(__cj_sa_4bd90f3f[0]),exports),__exportStar(require("./assets/ecs/EcsSystem"),exports);var EcsFilter_1=require("./assets/lib/EcsFilter");Object.defineProperty(exports,"filter",{enumerable:!0,get:function(){return EcsFilter_1.filter}});var EcsManager_1=require("./assets/lib/EcsManager");Object.defineProperty(exports,"ecsclass",{enumerable:!0,get:function(){return EcsManager_1.ecsclass}}),Object.defineProperty(exports,__cj_sa_4bd90f3f[1],{enumerable:!0,get:function(){return EcsManager_1.getClassByName}});var EcsTimer_1=require("./assets/lib/EcsTimer");Object.defineProperty(exports,"Timer",{enumerable:!0,get:function(){return EcsTimer_1.Timer}}),Object.defineProperty(exports,"timer",{enumerable:!0,get:function(){return EcsTimer_1.timer}});var EcsTween_1=require("./assets/lib/EcsTween");Object.defineProperty(exports,"Tween",{enumerable:!0,get:function(){return EcsTween_1.Tween}}),Object.defineProperty(exports,__cj_sa_4bd90f3f[2],{enumerable:!0,get:function(){return EcsTween_1.tween}}),__exportStar(require("./assets/common/component/MoveComponent"),exports),__exportStar(require("./assets/common/component/NodeComponent"),exports),__exportStar(require("./assets/common/system/MoveSystem"),exports);
|
package/{index.ts → index.d.ts}
RENAMED
|
@@ -1,33 +1,14 @@
|
|
|
1
|
-
export * from './assets/ecs';
|
|
2
|
-
export * from './assets/ecs/EcsComponent';
|
|
3
|
-
export * from './assets/ecs/EcsDirty';
|
|
4
|
-
export * from './assets/ecs/EcsEntity';
|
|
5
|
-
export * from './assets/ecs/EcsSingleton';
|
|
6
|
-
export * from './assets/ecs/EcsSystem';
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
export
|
|
15
|
-
export * from './assets/common/component/NodeComponent';
|
|
16
|
-
export * from './assets/common/system/MoveSystem';
|
|
17
|
-
|
|
18
|
-
export type {
|
|
19
|
-
IComponent,
|
|
20
|
-
IComponentName,
|
|
21
|
-
IComponentUUID,
|
|
22
|
-
IECS,
|
|
23
|
-
IEntity,
|
|
24
|
-
IEntityUUID,
|
|
25
|
-
IFilter,
|
|
26
|
-
IFlag,
|
|
27
|
-
ISingleton,
|
|
28
|
-
ISystem,
|
|
29
|
-
ITypeofComponent,
|
|
30
|
-
ITypeofEntity,
|
|
31
|
-
ITypeofSingleton,
|
|
32
|
-
ITypeofSystem
|
|
33
|
-
} from './assets/lib/EcsObject';
|
|
1
|
+
export * from './assets/ecs';
|
|
2
|
+
export * from './assets/ecs/EcsComponent';
|
|
3
|
+
export * from './assets/ecs/EcsDirty';
|
|
4
|
+
export * from './assets/ecs/EcsEntity';
|
|
5
|
+
export * from './assets/ecs/EcsSingleton';
|
|
6
|
+
export * from './assets/ecs/EcsSystem';
|
|
7
|
+
export { filter } from './assets/lib/EcsFilter';
|
|
8
|
+
export { ecsclass, getClassByName } from './assets/lib/EcsManager';
|
|
9
|
+
export { Timer, timer } from './assets/lib/EcsTimer';
|
|
10
|
+
export { Tween, tween } from './assets/lib/EcsTween';
|
|
11
|
+
export * from './assets/common/component/MoveComponent';
|
|
12
|
+
export * from './assets/common/component/NodeComponent';
|
|
13
|
+
export * from './assets/common/system/MoveSystem';
|
|
14
|
+
export type { IComponent, IComponentName, IComponentUUID, IECS, IEntity, IEntityUUID, IFilter, IFlag, ISingleton, ISystem, ITypeofComponent, ITypeofEntity, ITypeofSingleton, ITypeofSystem } from './assets/lib/EcsObject';
|