@esengine/network 2.1.0 → 2.2.0
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/NetworkPlugin.d.ts +150 -8
- package/dist/NetworkPlugin.d.ts.map +1 -1
- package/dist/index.d.ts +11 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1773 -503
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +125 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/sync/StateDelta.d.ts +177 -0
- package/dist/sync/StateDelta.d.ts.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/systems/NetworkAOISystem.d.ts +172 -0
- package/dist/systems/NetworkAOISystem.d.ts.map +1 -0
- package/dist/systems/NetworkInputSystem.d.ts +69 -2
- package/dist/systems/NetworkInputSystem.d.ts.map +1 -1
- package/dist/systems/NetworkPredictionSystem.d.ts +113 -0
- package/dist/systems/NetworkPredictionSystem.d.ts.map +1 -0
- package/dist/systems/NetworkSyncSystem.d.ts +88 -9
- package/dist/systems/NetworkSyncSystem.d.ts.map +1 -1
- package/dist/tokens.d.ts +12 -0
- package/dist/tokens.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/protocol.d.ts
CHANGED
|
@@ -10,11 +10,21 @@
|
|
|
10
10
|
* @en Player input
|
|
11
11
|
*/
|
|
12
12
|
export interface PlayerInput {
|
|
13
|
+
/**
|
|
14
|
+
* @zh 输入序列号(用于客户端预测)
|
|
15
|
+
* @en Input sequence number (for client prediction)
|
|
16
|
+
*/
|
|
17
|
+
seq: number;
|
|
13
18
|
/**
|
|
14
19
|
* @zh 帧序号
|
|
15
20
|
* @en Frame number
|
|
16
21
|
*/
|
|
17
22
|
frame: number;
|
|
23
|
+
/**
|
|
24
|
+
* @zh 客户端时间戳
|
|
25
|
+
* @en Client timestamp
|
|
26
|
+
*/
|
|
27
|
+
timestamp: number;
|
|
18
28
|
/**
|
|
19
29
|
* @zh 移动方向
|
|
20
30
|
* @en Move direction
|
|
@@ -34,12 +44,42 @@ export interface PlayerInput {
|
|
|
34
44
|
* @en Entity sync state
|
|
35
45
|
*/
|
|
36
46
|
export interface EntitySyncState {
|
|
47
|
+
/**
|
|
48
|
+
* @zh 网络实体 ID
|
|
49
|
+
* @en Network entity ID
|
|
50
|
+
*/
|
|
37
51
|
netId: number;
|
|
52
|
+
/**
|
|
53
|
+
* @zh 位置
|
|
54
|
+
* @en Position
|
|
55
|
+
*/
|
|
38
56
|
pos?: {
|
|
39
57
|
x: number;
|
|
40
58
|
y: number;
|
|
41
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* @zh 旋转角度
|
|
62
|
+
* @en Rotation angle
|
|
63
|
+
*/
|
|
42
64
|
rot?: number;
|
|
65
|
+
/**
|
|
66
|
+
* @zh 速度(用于外推)
|
|
67
|
+
* @en Velocity (for extrapolation)
|
|
68
|
+
*/
|
|
69
|
+
vel?: {
|
|
70
|
+
x: number;
|
|
71
|
+
y: number;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* @zh 角速度
|
|
75
|
+
* @en Angular velocity
|
|
76
|
+
*/
|
|
77
|
+
angVel?: number;
|
|
78
|
+
/**
|
|
79
|
+
* @zh 自定义数据
|
|
80
|
+
* @en Custom data
|
|
81
|
+
*/
|
|
82
|
+
custom?: Record<string, unknown>;
|
|
43
83
|
}
|
|
44
84
|
/**
|
|
45
85
|
* @zh 同步消息
|
|
@@ -51,6 +91,16 @@ export interface SyncData {
|
|
|
51
91
|
* @en Server frame number
|
|
52
92
|
*/
|
|
53
93
|
frame: number;
|
|
94
|
+
/**
|
|
95
|
+
* @zh 服务器时间戳(用于插值)
|
|
96
|
+
* @en Server timestamp (for interpolation)
|
|
97
|
+
*/
|
|
98
|
+
timestamp: number;
|
|
99
|
+
/**
|
|
100
|
+
* @zh 已确认的输入序列号(用于客户端预测校正)
|
|
101
|
+
* @en Acknowledged input sequence (for client prediction reconciliation)
|
|
102
|
+
*/
|
|
103
|
+
ackSeq?: number;
|
|
54
104
|
/**
|
|
55
105
|
* @zh 实体状态列表
|
|
56
106
|
* @en Entity state list
|
|
@@ -78,6 +128,29 @@ export interface SpawnData {
|
|
|
78
128
|
export interface DespawnData {
|
|
79
129
|
netId: number;
|
|
80
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* @zh 完整状态快照(用于重连)
|
|
133
|
+
* @en Full state snapshot (for reconnection)
|
|
134
|
+
*/
|
|
135
|
+
export interface FullStateData {
|
|
136
|
+
/**
|
|
137
|
+
* @zh 服务器帧号
|
|
138
|
+
* @en Server frame number
|
|
139
|
+
*/
|
|
140
|
+
frame: number;
|
|
141
|
+
/**
|
|
142
|
+
* @zh 服务器时间戳
|
|
143
|
+
* @en Server timestamp
|
|
144
|
+
*/
|
|
145
|
+
timestamp: number;
|
|
146
|
+
/**
|
|
147
|
+
* @zh 所有实体状态
|
|
148
|
+
* @en All entity states
|
|
149
|
+
*/
|
|
150
|
+
entities: Array<SpawnData & {
|
|
151
|
+
state?: EntitySyncState;
|
|
152
|
+
}>;
|
|
153
|
+
}
|
|
81
154
|
/**
|
|
82
155
|
* @zh 加入房间请求
|
|
83
156
|
* @en Join room request
|
|
@@ -94,6 +167,48 @@ export interface JoinResponse {
|
|
|
94
167
|
playerId: number;
|
|
95
168
|
roomId: string;
|
|
96
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* @zh 重连请求
|
|
172
|
+
* @en Reconnect request
|
|
173
|
+
*/
|
|
174
|
+
export interface ReconnectRequest {
|
|
175
|
+
/**
|
|
176
|
+
* @zh 之前的玩家 ID
|
|
177
|
+
* @en Previous player ID
|
|
178
|
+
*/
|
|
179
|
+
playerId: number;
|
|
180
|
+
/**
|
|
181
|
+
* @zh 房间 ID
|
|
182
|
+
* @en Room ID
|
|
183
|
+
*/
|
|
184
|
+
roomId: string;
|
|
185
|
+
/**
|
|
186
|
+
* @zh 重连令牌
|
|
187
|
+
* @en Reconnection token
|
|
188
|
+
*/
|
|
189
|
+
token: string;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* @zh 重连响应
|
|
193
|
+
* @en Reconnect response
|
|
194
|
+
*/
|
|
195
|
+
export interface ReconnectResponse {
|
|
196
|
+
/**
|
|
197
|
+
* @zh 是否成功
|
|
198
|
+
* @en Whether successful
|
|
199
|
+
*/
|
|
200
|
+
success: boolean;
|
|
201
|
+
/**
|
|
202
|
+
* @zh 完整状态(成功时)
|
|
203
|
+
* @en Full state (when successful)
|
|
204
|
+
*/
|
|
205
|
+
state?: FullStateData;
|
|
206
|
+
/**
|
|
207
|
+
* @zh 错误信息(失败时)
|
|
208
|
+
* @en Error message (when failed)
|
|
209
|
+
*/
|
|
210
|
+
error?: string;
|
|
211
|
+
}
|
|
97
212
|
/**
|
|
98
213
|
* @zh 默认游戏网络协议
|
|
99
214
|
* @en Default game network protocol
|
|
@@ -128,6 +243,11 @@ export declare const gameProtocol: {
|
|
|
128
243
|
* @en Leave room
|
|
129
244
|
*/
|
|
130
245
|
leave: import("@esengine/rpc").ApiDef<void, void>;
|
|
246
|
+
/**
|
|
247
|
+
* @zh 重连
|
|
248
|
+
* @en Reconnect
|
|
249
|
+
*/
|
|
250
|
+
reconnect: import("@esengine/rpc").ApiDef<ReconnectRequest, ReconnectResponse>;
|
|
131
251
|
};
|
|
132
252
|
msg: {
|
|
133
253
|
/**
|
|
@@ -150,6 +270,11 @@ export declare const gameProtocol: {
|
|
|
150
270
|
* @en Entity despawn
|
|
151
271
|
*/
|
|
152
272
|
despawn: import("@esengine/rpc").MsgDef<DespawnData>;
|
|
273
|
+
/**
|
|
274
|
+
* @zh 完整状态快照
|
|
275
|
+
* @en Full state snapshot
|
|
276
|
+
*/
|
|
277
|
+
fullState: import("@esengine/rpc").MsgDef<FullStateData>;
|
|
153
278
|
};
|
|
154
279
|
};
|
|
155
280
|
/**
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAElC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB;;;OAGG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAElC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAE9B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACrB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,QAAQ,EAAE,eAAe,EAAE,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,KAAK,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG;QAAE,KAAK,CAAC,EAAE,eAAe,CAAA;KAAE,CAAC,CAAA;CAC3D;AAMD;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAA;IAEhB;;;OAGG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IAErB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACjB;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,YAAY;;QAEjB;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;;QAIH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;QAGH;;;WAGG;;;CAGT,CAAA;AAEF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAA"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zh 状态增量压缩
|
|
3
|
+
* @en State Delta Compression
|
|
4
|
+
*
|
|
5
|
+
* @zh 通过只发送变化的字段来减少网络带宽
|
|
6
|
+
* @en Reduces network bandwidth by only sending changed fields
|
|
7
|
+
*/
|
|
8
|
+
import type { SyncData } from '../protocol';
|
|
9
|
+
/**
|
|
10
|
+
* @zh 增量类型标志
|
|
11
|
+
* @en Delta type flags
|
|
12
|
+
*/
|
|
13
|
+
export declare const DeltaFlags: {
|
|
14
|
+
readonly NONE: 0;
|
|
15
|
+
readonly POSITION: number;
|
|
16
|
+
readonly ROTATION: number;
|
|
17
|
+
readonly VELOCITY: number;
|
|
18
|
+
readonly ANGULAR_VELOCITY: number;
|
|
19
|
+
readonly CUSTOM: number;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @zh 增量状态(只包含变化的字段)
|
|
23
|
+
* @en Delta state (only contains changed fields)
|
|
24
|
+
*/
|
|
25
|
+
export interface EntityDeltaState {
|
|
26
|
+
/**
|
|
27
|
+
* @zh 网络标识
|
|
28
|
+
* @en Network identity
|
|
29
|
+
*/
|
|
30
|
+
netId: number;
|
|
31
|
+
/**
|
|
32
|
+
* @zh 变化标志
|
|
33
|
+
* @en Change flags
|
|
34
|
+
*/
|
|
35
|
+
flags: number;
|
|
36
|
+
/**
|
|
37
|
+
* @zh 位置(如果变化)
|
|
38
|
+
* @en Position (if changed)
|
|
39
|
+
*/
|
|
40
|
+
pos?: {
|
|
41
|
+
x: number;
|
|
42
|
+
y: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* @zh 旋转(如果变化)
|
|
46
|
+
* @en Rotation (if changed)
|
|
47
|
+
*/
|
|
48
|
+
rot?: number;
|
|
49
|
+
/**
|
|
50
|
+
* @zh 速度(如果变化)
|
|
51
|
+
* @en Velocity (if changed)
|
|
52
|
+
*/
|
|
53
|
+
vel?: {
|
|
54
|
+
x: number;
|
|
55
|
+
y: number;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* @zh 角速度(如果变化)
|
|
59
|
+
* @en Angular velocity (if changed)
|
|
60
|
+
*/
|
|
61
|
+
angVel?: number;
|
|
62
|
+
/**
|
|
63
|
+
* @zh 自定义数据(如果变化)
|
|
64
|
+
* @en Custom data (if changed)
|
|
65
|
+
*/
|
|
66
|
+
custom?: Record<string, unknown>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @zh 增量同步数据
|
|
70
|
+
* @en Delta sync data
|
|
71
|
+
*/
|
|
72
|
+
export interface DeltaSyncData {
|
|
73
|
+
/**
|
|
74
|
+
* @zh 帧号
|
|
75
|
+
* @en Frame number
|
|
76
|
+
*/
|
|
77
|
+
frame: number;
|
|
78
|
+
/**
|
|
79
|
+
* @zh 时间戳
|
|
80
|
+
* @en Timestamp
|
|
81
|
+
*/
|
|
82
|
+
timestamp: number;
|
|
83
|
+
/**
|
|
84
|
+
* @zh 已确认的输入序列号
|
|
85
|
+
* @en Acknowledged input sequence
|
|
86
|
+
*/
|
|
87
|
+
ackSeq?: number;
|
|
88
|
+
/**
|
|
89
|
+
* @zh 增量实体状态
|
|
90
|
+
* @en Delta entity states
|
|
91
|
+
*/
|
|
92
|
+
entities: EntityDeltaState[];
|
|
93
|
+
/**
|
|
94
|
+
* @zh 是否为完整快照
|
|
95
|
+
* @en Whether this is a full snapshot
|
|
96
|
+
*/
|
|
97
|
+
isFullSnapshot?: boolean;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* @zh 增量压缩配置
|
|
101
|
+
* @en Delta compression configuration
|
|
102
|
+
*/
|
|
103
|
+
export interface DeltaCompressionConfig {
|
|
104
|
+
/**
|
|
105
|
+
* @zh 位置变化阈值
|
|
106
|
+
* @en Position change threshold
|
|
107
|
+
*/
|
|
108
|
+
positionThreshold: number;
|
|
109
|
+
/**
|
|
110
|
+
* @zh 旋转变化阈值(弧度)
|
|
111
|
+
* @en Rotation change threshold (radians)
|
|
112
|
+
*/
|
|
113
|
+
rotationThreshold: number;
|
|
114
|
+
/**
|
|
115
|
+
* @zh 速度变化阈值
|
|
116
|
+
* @en Velocity change threshold
|
|
117
|
+
*/
|
|
118
|
+
velocityThreshold: number;
|
|
119
|
+
/**
|
|
120
|
+
* @zh 强制完整快照间隔(帧数)
|
|
121
|
+
* @en Forced full snapshot interval (frames)
|
|
122
|
+
*/
|
|
123
|
+
fullSnapshotInterval: number;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @zh 状态增量压缩器
|
|
127
|
+
* @en State delta compressor
|
|
128
|
+
*
|
|
129
|
+
* @zh 追踪实体状态变化,生成增量更新
|
|
130
|
+
* @en Tracks entity state changes and generates delta updates
|
|
131
|
+
*/
|
|
132
|
+
export declare class StateDeltaCompressor {
|
|
133
|
+
private readonly _config;
|
|
134
|
+
private readonly _lastStates;
|
|
135
|
+
private _frameCounter;
|
|
136
|
+
constructor(config?: Partial<DeltaCompressionConfig>);
|
|
137
|
+
/**
|
|
138
|
+
* @zh 获取配置
|
|
139
|
+
* @en Get configuration
|
|
140
|
+
*/
|
|
141
|
+
get config(): Readonly<DeltaCompressionConfig>;
|
|
142
|
+
/**
|
|
143
|
+
* @zh 压缩同步数据为增量格式
|
|
144
|
+
* @en Compress sync data to delta format
|
|
145
|
+
*/
|
|
146
|
+
compress(data: SyncData): DeltaSyncData;
|
|
147
|
+
/**
|
|
148
|
+
* @zh 解压增量数据为完整同步数据
|
|
149
|
+
* @en Decompress delta data to full sync data
|
|
150
|
+
*/
|
|
151
|
+
decompress(data: DeltaSyncData): SyncData;
|
|
152
|
+
/**
|
|
153
|
+
* @zh 移除实体状态
|
|
154
|
+
* @en Remove entity state
|
|
155
|
+
*/
|
|
156
|
+
removeEntity(netId: number): void;
|
|
157
|
+
/**
|
|
158
|
+
* @zh 清除所有状态
|
|
159
|
+
* @en Clear all states
|
|
160
|
+
*/
|
|
161
|
+
clear(): void;
|
|
162
|
+
/**
|
|
163
|
+
* @zh 强制下一次发送完整快照
|
|
164
|
+
* @en Force next send to be a full snapshot
|
|
165
|
+
*/
|
|
166
|
+
forceFullSnapshot(): void;
|
|
167
|
+
private _createFullDelta;
|
|
168
|
+
private _calculateDelta;
|
|
169
|
+
private _applyDelta;
|
|
170
|
+
private _customDataEqual;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* @zh 创建状态增量压缩器
|
|
174
|
+
* @en Create state delta compressor
|
|
175
|
+
*/
|
|
176
|
+
export declare function createStateDeltaCompressor(config?: Partial<DeltaCompressionConfig>): StateDeltaCompressor;
|
|
177
|
+
//# sourceMappingURL=StateDelta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StateDelta.d.ts","sourceRoot":"","sources":["../../src/sync/StateDelta.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAmB,QAAQ,EAAE,MAAM,aAAa,CAAA;AAM5D;;;GAGG;AACH,eAAO,MAAM,UAAU;;;;;;;CAOb,CAAA;AAEV;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAE9B;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;;OAGG;IACH,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAE9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf;;;OAGG;IACH,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACnC;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,iBAAiB,EAAE,MAAM,CAAA;IAEzB;;;OAGG;IACH,oBAAoB,EAAE,MAAM,CAAA;CAC/B;AAaD;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;IACtE,OAAO,CAAC,aAAa,CAAY;gBAErB,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC;IAIpD;;;OAGG;IACH,IAAI,MAAM,IAAI,QAAQ,CAAC,sBAAsB,CAAC,CAE7C;IAED;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,aAAa;IAiCvC;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ;IAoBzC;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIjC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAKb;;;OAGG;IACH,iBAAiB,IAAI,IAAI;IAQzB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,eAAe;IA2EvB,OAAO,CAAC,WAAW;IA8CnB,OAAO,CAAC,gBAAgB;CAkB3B;AAMD;;;GAGG;AACH,wBAAgB,0BAA0B,CACtC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GACzC,oBAAoB,CAEtB"}
|
package/dist/sync/index.d.ts
CHANGED
|
@@ -12,4 +12,6 @@ export { lerp, lerpAngle, smoothDamp } from './IInterpolator';
|
|
|
12
12
|
export { TransformInterpolator, HermiteTransformInterpolator, createTransformInterpolator, createHermiteTransformInterpolator } from './TransformInterpolator';
|
|
13
13
|
export type { IInputSnapshot, IPredictedState, IPredictor, ClientPredictionConfig } from './ClientPrediction';
|
|
14
14
|
export { ClientPrediction, createClientPrediction } from './ClientPrediction';
|
|
15
|
+
export type { EntityDeltaState, DeltaSyncData, DeltaCompressionConfig } from './StateDelta';
|
|
16
|
+
export { DeltaFlags, StateDeltaCompressor, createStateDeltaCompressor } from './StateDelta';
|
|
15
17
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/sync/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,YAAY,EACR,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMxE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EACH,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EACrC,MAAM,yBAAyB,CAAC;AAMjC,YAAY,EACR,cAAc,EACd,eAAe,EACf,UAAU,EACV,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,YAAY,EACR,cAAc,EACd,eAAe,EACf,2BAA2B,EAC3B,qBAAqB,EACrB,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAMxE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EACH,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kCAAkC,EACrC,MAAM,yBAAyB,CAAC;AAMjC,YAAY,EACR,cAAc,EACd,eAAe,EACf,UAAU,EACV,sBAAsB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAM9E,YAAY,EACR,gBAAgB,EAChB,aAAa,EACb,sBAAsB,EACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACH,UAAU,EACV,oBAAoB,EACpB,0BAA0B,EAC7B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zh 网络 AOI 系统
|
|
3
|
+
* @en Network AOI System
|
|
4
|
+
*
|
|
5
|
+
* @zh 集成 AOI 兴趣区域管理,过滤网络同步数据
|
|
6
|
+
* @en Integrates AOI interest management to filter network sync data
|
|
7
|
+
*/
|
|
8
|
+
import { EntitySystem, type Entity } from '@esengine/ecs-framework';
|
|
9
|
+
import type { EntitySyncState } from '../protocol';
|
|
10
|
+
/**
|
|
11
|
+
* @zh AOI 事件类型
|
|
12
|
+
* @en AOI event type
|
|
13
|
+
*/
|
|
14
|
+
export type NetworkAOIEventType = 'enter' | 'exit';
|
|
15
|
+
/**
|
|
16
|
+
* @zh AOI 事件
|
|
17
|
+
* @en AOI event
|
|
18
|
+
*/
|
|
19
|
+
export interface NetworkAOIEvent {
|
|
20
|
+
/**
|
|
21
|
+
* @zh 事件类型
|
|
22
|
+
* @en Event type
|
|
23
|
+
*/
|
|
24
|
+
type: NetworkAOIEventType;
|
|
25
|
+
/**
|
|
26
|
+
* @zh 观察者网络 ID(玩家)
|
|
27
|
+
* @en Observer network ID (player)
|
|
28
|
+
*/
|
|
29
|
+
observerNetId: number;
|
|
30
|
+
/**
|
|
31
|
+
* @zh 目标网络 ID(进入/离开视野的实体)
|
|
32
|
+
* @en Target network ID (entity entering/exiting view)
|
|
33
|
+
*/
|
|
34
|
+
targetNetId: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @zh AOI 事件监听器
|
|
38
|
+
* @en AOI event listener
|
|
39
|
+
*/
|
|
40
|
+
export type NetworkAOIEventListener = (event: NetworkAOIEvent) => void;
|
|
41
|
+
/**
|
|
42
|
+
* @zh 网络 AOI 配置
|
|
43
|
+
* @en Network AOI configuration
|
|
44
|
+
*/
|
|
45
|
+
export interface NetworkAOIConfig {
|
|
46
|
+
/**
|
|
47
|
+
* @zh 网格单元格大小
|
|
48
|
+
* @en Grid cell size
|
|
49
|
+
*/
|
|
50
|
+
cellSize: number;
|
|
51
|
+
/**
|
|
52
|
+
* @zh 默认视野范围
|
|
53
|
+
* @en Default view range
|
|
54
|
+
*/
|
|
55
|
+
defaultViewRange: number;
|
|
56
|
+
/**
|
|
57
|
+
* @zh 是否启用 AOI 过滤
|
|
58
|
+
* @en Whether to enable AOI filtering
|
|
59
|
+
*/
|
|
60
|
+
enabled: boolean;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* @zh 网络 AOI 系统
|
|
64
|
+
* @en Network AOI system
|
|
65
|
+
*
|
|
66
|
+
* @zh 管理网络实体的兴趣区域,过滤同步数据
|
|
67
|
+
* @en Manages network entities' areas of interest and filters sync data
|
|
68
|
+
*/
|
|
69
|
+
export declare class NetworkAOISystem extends EntitySystem {
|
|
70
|
+
private readonly _config;
|
|
71
|
+
private readonly _observers;
|
|
72
|
+
private readonly _cells;
|
|
73
|
+
private readonly _listeners;
|
|
74
|
+
private readonly _entityNetIdMap;
|
|
75
|
+
private readonly _netIdEntityMap;
|
|
76
|
+
constructor(config?: Partial<NetworkAOIConfig>);
|
|
77
|
+
/**
|
|
78
|
+
* @zh 获取配置
|
|
79
|
+
* @en Get configuration
|
|
80
|
+
*/
|
|
81
|
+
get config(): Readonly<NetworkAOIConfig>;
|
|
82
|
+
/**
|
|
83
|
+
* @zh 是否启用
|
|
84
|
+
* @en Is enabled
|
|
85
|
+
*/
|
|
86
|
+
get enabled(): boolean;
|
|
87
|
+
set enabled(value: boolean);
|
|
88
|
+
/**
|
|
89
|
+
* @zh 观察者数量
|
|
90
|
+
* @en Observer count
|
|
91
|
+
*/
|
|
92
|
+
get observerCount(): number;
|
|
93
|
+
/**
|
|
94
|
+
* @zh 添加观察者(通常是玩家实体)
|
|
95
|
+
* @en Add observer (usually player entity)
|
|
96
|
+
*/
|
|
97
|
+
addObserver(netId: number, x: number, y: number, viewRange?: number): void;
|
|
98
|
+
/**
|
|
99
|
+
* @zh 移除观察者
|
|
100
|
+
* @en Remove observer
|
|
101
|
+
*/
|
|
102
|
+
removeObserver(netId: number): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* @zh 更新观察者位置
|
|
105
|
+
* @en Update observer position
|
|
106
|
+
*/
|
|
107
|
+
updateObserverPosition(netId: number, x: number, y: number): void;
|
|
108
|
+
/**
|
|
109
|
+
* @zh 更新观察者视野范围
|
|
110
|
+
* @en Update observer view range
|
|
111
|
+
*/
|
|
112
|
+
updateObserverViewRange(netId: number, viewRange: number): void;
|
|
113
|
+
/**
|
|
114
|
+
* @zh 注册网络实体
|
|
115
|
+
* @en Register network entity
|
|
116
|
+
*/
|
|
117
|
+
registerEntity(entity: Entity, netId: number): void;
|
|
118
|
+
/**
|
|
119
|
+
* @zh 注销网络实体
|
|
120
|
+
* @en Unregister network entity
|
|
121
|
+
*/
|
|
122
|
+
unregisterEntity(entity: Entity): void;
|
|
123
|
+
/**
|
|
124
|
+
* @zh 获取观察者能看到的实体网络 ID 列表
|
|
125
|
+
* @en Get list of entity network IDs visible to observer
|
|
126
|
+
*/
|
|
127
|
+
getVisibleEntities(observerNetId: number): number[];
|
|
128
|
+
/**
|
|
129
|
+
* @zh 获取能看到指定实体的观察者网络 ID 列表
|
|
130
|
+
* @en Get list of observer network IDs that can see the entity
|
|
131
|
+
*/
|
|
132
|
+
getObserversOf(entityNetId: number): number[];
|
|
133
|
+
/**
|
|
134
|
+
* @zh 检查观察者是否能看到目标
|
|
135
|
+
* @en Check if observer can see target
|
|
136
|
+
*/
|
|
137
|
+
canSee(observerNetId: number, targetNetId: number): boolean;
|
|
138
|
+
/**
|
|
139
|
+
* @zh 过滤同步数据,只保留观察者能看到的实体
|
|
140
|
+
* @en Filter sync data to only include entities visible to observer
|
|
141
|
+
*/
|
|
142
|
+
filterSyncData(observerNetId: number, entities: EntitySyncState[]): EntitySyncState[];
|
|
143
|
+
/**
|
|
144
|
+
* @zh 添加事件监听器
|
|
145
|
+
* @en Add event listener
|
|
146
|
+
*/
|
|
147
|
+
addListener(listener: NetworkAOIEventListener): void;
|
|
148
|
+
/**
|
|
149
|
+
* @zh 移除事件监听器
|
|
150
|
+
* @en Remove event listener
|
|
151
|
+
*/
|
|
152
|
+
removeListener(listener: NetworkAOIEventListener): void;
|
|
153
|
+
protected process(entities: readonly Entity[]): void;
|
|
154
|
+
private _updateAllObserversVisibility;
|
|
155
|
+
/**
|
|
156
|
+
* @zh 清除所有数据
|
|
157
|
+
* @en Clear all data
|
|
158
|
+
*/
|
|
159
|
+
clear(): void;
|
|
160
|
+
protected onDestroy(): void;
|
|
161
|
+
private _getCellKey;
|
|
162
|
+
private _addToCell;
|
|
163
|
+
private _removeFromCell;
|
|
164
|
+
private _updateVisibility;
|
|
165
|
+
private _emitEvent;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* @zh 创建网络 AOI 系统
|
|
169
|
+
* @en Create network AOI system
|
|
170
|
+
*/
|
|
171
|
+
export declare function createNetworkAOISystem(config?: Partial<NetworkAOIConfig>): NetworkAOISystem;
|
|
172
|
+
//# sourceMappingURL=NetworkAOISystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NetworkAOISystem.d.ts","sourceRoot":"","sources":["../../src/systems/NetworkAOISystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @zh 网络输入系统
|
|
3
3
|
* @en Network Input System
|
|
4
|
+
*
|
|
5
|
+
* @zh 收集本地玩家输入并发送到服务器,支持与预测系统集成
|
|
6
|
+
* @en Collects local player input and sends to server, supports integration with prediction system
|
|
4
7
|
*/
|
|
5
8
|
import { EntitySystem } from '@esengine/ecs-framework';
|
|
6
9
|
import type { NetworkService } from '../services/NetworkService';
|
|
10
|
+
import type { NetworkPredictionSystem } from './NetworkPredictionSystem';
|
|
11
|
+
/**
|
|
12
|
+
* @zh 输入配置
|
|
13
|
+
* @en Input configuration
|
|
14
|
+
*/
|
|
15
|
+
export interface NetworkInputConfig {
|
|
16
|
+
/**
|
|
17
|
+
* @zh 发送输入的最小间隔(毫秒)
|
|
18
|
+
* @en Minimum interval between input sends (milliseconds)
|
|
19
|
+
*/
|
|
20
|
+
sendInterval: number;
|
|
21
|
+
/**
|
|
22
|
+
* @zh 是否合并相同输入
|
|
23
|
+
* @en Whether to merge identical inputs
|
|
24
|
+
*/
|
|
25
|
+
mergeIdenticalInputs: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* @zh 最大输入队列长度
|
|
28
|
+
* @en Maximum input queue length
|
|
29
|
+
*/
|
|
30
|
+
maxQueueLength: number;
|
|
31
|
+
}
|
|
7
32
|
/**
|
|
8
33
|
* @zh 网络输入系统
|
|
9
34
|
* @en Network input system
|
|
@@ -12,15 +37,41 @@ import type { NetworkService } from '../services/NetworkService';
|
|
|
12
37
|
* @en Collects local player input and sends to server
|
|
13
38
|
*/
|
|
14
39
|
export declare class NetworkInputSystem extends EntitySystem {
|
|
15
|
-
private _networkService;
|
|
40
|
+
private readonly _networkService;
|
|
41
|
+
private readonly _config;
|
|
42
|
+
private _predictionSystem;
|
|
16
43
|
private _frame;
|
|
44
|
+
private _inputSequence;
|
|
17
45
|
private _inputQueue;
|
|
18
|
-
|
|
46
|
+
private _lastSendTime;
|
|
47
|
+
private _lastMoveDir;
|
|
48
|
+
constructor(networkService: NetworkService, config?: Partial<NetworkInputConfig>);
|
|
49
|
+
/**
|
|
50
|
+
* @zh 获取配置
|
|
51
|
+
* @en Get configuration
|
|
52
|
+
*/
|
|
53
|
+
get config(): Readonly<NetworkInputConfig>;
|
|
54
|
+
/**
|
|
55
|
+
* @zh 获取当前帧号
|
|
56
|
+
* @en Get current frame number
|
|
57
|
+
*/
|
|
58
|
+
get frame(): number;
|
|
59
|
+
/**
|
|
60
|
+
* @zh 获取当前输入序列号
|
|
61
|
+
* @en Get current input sequence
|
|
62
|
+
*/
|
|
63
|
+
get inputSequence(): number;
|
|
64
|
+
/**
|
|
65
|
+
* @zh 设置预测系统引用
|
|
66
|
+
* @en Set prediction system reference
|
|
67
|
+
*/
|
|
68
|
+
setPredictionSystem(system: NetworkPredictionSystem): void;
|
|
19
69
|
/**
|
|
20
70
|
* @zh 处理输入队列
|
|
21
71
|
* @en Process input queue
|
|
22
72
|
*/
|
|
23
73
|
protected process(): void;
|
|
74
|
+
private _mergeInputs;
|
|
24
75
|
/**
|
|
25
76
|
* @zh 添加移动输入
|
|
26
77
|
* @en Add move input
|
|
@@ -31,6 +82,22 @@ export declare class NetworkInputSystem extends EntitySystem {
|
|
|
31
82
|
* @en Add action input
|
|
32
83
|
*/
|
|
33
84
|
addActionInput(action: string): void;
|
|
85
|
+
private _addToQueue;
|
|
86
|
+
/**
|
|
87
|
+
* @zh 清空输入队列
|
|
88
|
+
* @en Clear input queue
|
|
89
|
+
*/
|
|
90
|
+
clearQueue(): void;
|
|
91
|
+
/**
|
|
92
|
+
* @zh 重置状态
|
|
93
|
+
* @en Reset state
|
|
94
|
+
*/
|
|
95
|
+
reset(): void;
|
|
34
96
|
protected onDestroy(): void;
|
|
35
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* @zh 创建网络输入系统
|
|
100
|
+
* @en Create network input system
|
|
101
|
+
*/
|
|
102
|
+
export declare function createNetworkInputSystem(networkService: NetworkService, config?: Partial<NetworkInputConfig>): NetworkInputSystem;
|
|
36
103
|
//# sourceMappingURL=NetworkInputSystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkInputSystem.d.ts","sourceRoot":"","sources":["../../src/systems/NetworkInputSystem.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"NetworkInputSystem.d.ts","sourceRoot":"","sources":["../../src/systems/NetworkInputSystem.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAW,MAAM,yBAAyB,CAAA;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAMxE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAA;IAE7B;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAA;CACzB;AAsBD;;;;;;GAMG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAChD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAgB;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;IAC5C,OAAO,CAAC,iBAAiB,CAAuC;IAEhE,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAAY;IAClC,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,aAAa,CAAY;IACjC,OAAO,CAAC,YAAY,CAA2C;gBAEnD,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAMhF;;;OAGG;IACH,IAAI,MAAM,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAEzC;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;;OAGG;IACH,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAI1D;;;OAGG;cACgB,OAAO,IAAI,IAAI;IA6ClC,OAAO,CAAC,YAAY;IAoBpB;;;OAGG;IACI,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAqB/C;;;OAGG;IACI,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAoB3C,OAAO,CAAC,WAAW;IASnB;;;OAGG;IACI,UAAU,IAAI,IAAI;IAKzB;;;OAGG;IACI,KAAK,IAAI,IAAI;cAMD,SAAS,IAAI,IAAI;CAIvC;AAMD;;;GAGG;AACH,wBAAgB,wBAAwB,CACpC,cAAc,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACrC,kBAAkB,CAEpB"}
|