@colyseus/core 0.15.43 → 0.15.44
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.
|
@@ -6,8 +6,6 @@ export declare class SchemaSerializer<T> implements Serializer<T> {
|
|
|
6
6
|
private state;
|
|
7
7
|
private useFilters;
|
|
8
8
|
private handshakeCache;
|
|
9
|
-
private needFullEncode;
|
|
10
|
-
private fullEncodedState;
|
|
11
9
|
reset(newState: T & Schema): void;
|
|
12
10
|
getFullState(client?: Client): number[];
|
|
13
11
|
applyPatches(clients: Client[]): boolean;
|
|
@@ -28,16 +28,13 @@ class SchemaSerializer {
|
|
|
28
28
|
constructor() {
|
|
29
29
|
this.id = "schema";
|
|
30
30
|
this.useFilters = false;
|
|
31
|
-
this.needFullEncode = true;
|
|
32
31
|
}
|
|
33
32
|
reset(newState) {
|
|
34
33
|
this.state = newState;
|
|
35
34
|
this.useFilters = (0, import_schema.hasFilter)(newState.constructor);
|
|
36
35
|
}
|
|
37
36
|
getFullState(client) {
|
|
38
|
-
const fullEncodedState = this.
|
|
39
|
-
this.fullEncodedState = fullEncodedState;
|
|
40
|
-
this.needFullEncode = false;
|
|
37
|
+
const fullEncodedState = this.state.encodeAll(this.useFilters);
|
|
41
38
|
if (client && this.useFilters) {
|
|
42
39
|
return this.state.applyFilters(client, true);
|
|
43
40
|
} else {
|
|
@@ -47,7 +44,6 @@ class SchemaSerializer {
|
|
|
47
44
|
applyPatches(clients) {
|
|
48
45
|
const hasChanges = this.state["$changes"].changes.size > 0;
|
|
49
46
|
if (hasChanges) {
|
|
50
|
-
this.needFullEncode = true;
|
|
51
47
|
let numClients = clients.length;
|
|
52
48
|
if (import_Debug.debugPatch.enabled) {
|
|
53
49
|
import_Debug.debugPatch.dumpChanges = (0, import_schema.dumpChanges)(this.state);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/serializer/SchemaSerializer.ts"],
|
|
4
|
-
"sourcesContent": ["/* tslint:disable:no-string-literal */\n\nimport { Client } from '..';\nimport { Serializer } from './Serializer';\n\nimport { dumpChanges, hasFilter, Reflection, Schema } from '@colyseus/schema';\nimport { debugPatch } from '../Debug';\nimport { Protocol } from '../Protocol';\nimport { ClientState } from '../Transport';\n\nexport class SchemaSerializer<T> implements Serializer<T> {\n public id = 'schema';\n\n private state: T & Schema;\n private useFilters: boolean = false;\n\n private handshakeCache: number[];\n\n private needFullEncode = true;\n private fullEncodedState: number[];\n\n public reset(newState: T & Schema) {\n this.state = newState;\n this.useFilters = hasFilter(newState.constructor as typeof Schema);\n }\n\n public getFullState(client?: Client) {\n const fullEncodedState = (this.needFullEncode)\n
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA2D;AAC3D,mBAA2B;AAC3B,sBAAyB;AACzB,uBAA4B;AAErB,MAAM,iBAA6C;AAAA,EAAnD;AACL,SAAO,KAAK;AAGZ,SAAQ,aAAsB;
|
|
4
|
+
"sourcesContent": ["/* tslint:disable:no-string-literal */\n\nimport { Client } from '..';\nimport { Serializer } from './Serializer';\n\nimport { dumpChanges, hasFilter, Reflection, Schema } from '@colyseus/schema';\nimport { debugPatch } from '../Debug';\nimport { Protocol } from '../Protocol';\nimport { ClientState } from '../Transport';\n\nexport class SchemaSerializer<T> implements Serializer<T> {\n public id = 'schema';\n\n private state: T & Schema;\n private useFilters: boolean = false;\n\n private handshakeCache: number[];\n\n // private needFullEncode = true;\n // private fullEncodedState: number[];\n\n public reset(newState: T & Schema) {\n this.state = newState;\n this.useFilters = hasFilter(newState.constructor as typeof Schema);\n }\n\n public getFullState(client?: Client) {\n const fullEncodedState = this.state.encodeAll(this.useFilters);\n\n // const fullEncodedState = (this.needFullEncode)\n // ? this.state.encodeAll(this.useFilters)\n // : this.fullEncodedState;\n\n // this.fullEncodedState = fullEncodedState;\n // this.needFullEncode = false;\n\n if (client && this.useFilters) {\n return this.state.applyFilters(client, true);\n\n } else {\n return fullEncodedState;\n }\n }\n\n public applyPatches(clients: Client[]) {\n const hasChanges = this.state['$changes'].changes.size > 0;\n\n if (hasChanges) {\n // this.needFullEncode = true;\n\n let numClients = clients.length;\n\n // dump changes for patch debugging\n if (debugPatch.enabled) {\n (debugPatch as any).dumpChanges = dumpChanges(this.state);\n }\n\n // get patch bytes\n const patches = this.state.encode(false, [], this.useFilters);\n\n if (!this.useFilters) {\n // encode changes once, for all clients\n patches.unshift(Protocol.ROOM_STATE_PATCH);\n\n while (numClients--) {\n const client = clients[numClients];\n\n //\n // FIXME: avoid this check.\n //\n if (client.state === ClientState.JOINED) {\n client.raw(patches);\n }\n }\n\n } else {\n\n // encode state multiple times, for each client\n while (numClients--) {\n const client = clients[numClients];\n\n //\n // FIXME: avoid this check.\n //\n if (client.state === ClientState.JOINED) {\n const filteredPatches = this.state.applyFilters(client);\n client.raw([Protocol.ROOM_STATE_PATCH, ...filteredPatches]);\n }\n }\n\n this.state.discardAllChanges();\n }\n\n // debug patches\n if (debugPatch.enabled) {\n debugPatch(\n '%d bytes sent to %d clients, %j',\n patches.length,\n clients.length,\n (debugPatch as any).dumpChanges,\n );\n }\n }\n\n return hasChanges;\n }\n\n public handshake() {\n /**\n * Cache handshake to avoid encoding it for each client joining\n */\n if (!this.handshakeCache) {\n this.handshakeCache = (this.state && Reflection.encode(this.state));\n }\n\n return this.handshakeCache;\n }\n\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,oBAA2D;AAC3D,mBAA2B;AAC3B,sBAAyB;AACzB,uBAA4B;AAErB,MAAM,iBAA6C;AAAA,EAAnD;AACL,SAAO,KAAK;AAGZ,SAAQ,aAAsB;AAAA;AAAA,EAOvB,MAAM,UAAsB;AACjC,SAAK,QAAQ;AACb,SAAK,iBAAa,yBAAU,SAAS,WAA4B;AAAA,EACnE;AAAA,EAEO,aAAa,QAAiB;AACnC,UAAM,mBAAmB,KAAK,MAAM,UAAU,KAAK,UAAU;AAS7D,QAAI,UAAU,KAAK,YAAY;AAC7B,aAAO,KAAK,MAAM,aAAa,QAAQ,IAAI;AAAA,IAE7C,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEO,aAAa,SAAmB;AACrC,UAAM,aAAa,KAAK,MAAM,YAAY,QAAQ,OAAO;AAEzD,QAAI,YAAY;AAGd,UAAI,aAAa,QAAQ;AAGzB,UAAI,wBAAW,SAAS;AACtB,QAAC,wBAAmB,kBAAc,2BAAY,KAAK,KAAK;AAAA,MAC1D;AAGA,YAAM,UAAU,KAAK,MAAM,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU;AAE5D,UAAI,CAAC,KAAK,YAAY;AAEpB,gBAAQ,QAAQ,yBAAS,gBAAgB;AAEzC,eAAO,cAAc;AACnB,gBAAM,SAAS,QAAQ;AAKvB,cAAI,OAAO,UAAU,6BAAY,QAAQ;AACvC,mBAAO,IAAI,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MAEF,OAAO;AAGL,eAAO,cAAc;AACnB,gBAAM,SAAS,QAAQ;AAKvB,cAAI,OAAO,UAAU,6BAAY,QAAQ;AACvC,kBAAM,kBAAkB,KAAK,MAAM,aAAa,MAAM;AACtD,mBAAO,IAAI,CAAC,yBAAS,kBAAkB,GAAG,eAAe,CAAC;AAAA,UAC5D;AAAA,QACF;AAEA,aAAK,MAAM,kBAAkB;AAAA,MAC/B;AAGA,UAAI,wBAAW,SAAS;AACtB;AAAA,UACE;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,UACP,wBAAmB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEO,YAAY;AAIjB,QAAI,CAAC,KAAK,gBAAgB;AACxB,WAAK,iBAAkB,KAAK,SAAS,yBAAW,OAAO,KAAK,KAAK;AAAA,IACnE;AAEA,WAAO,KAAK;AAAA,EACd;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -6,16 +6,13 @@ class SchemaSerializer {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.id = "schema";
|
|
8
8
|
this.useFilters = false;
|
|
9
|
-
this.needFullEncode = true;
|
|
10
9
|
}
|
|
11
10
|
reset(newState) {
|
|
12
11
|
this.state = newState;
|
|
13
12
|
this.useFilters = hasFilter(newState.constructor);
|
|
14
13
|
}
|
|
15
14
|
getFullState(client) {
|
|
16
|
-
const fullEncodedState = this.
|
|
17
|
-
this.fullEncodedState = fullEncodedState;
|
|
18
|
-
this.needFullEncode = false;
|
|
15
|
+
const fullEncodedState = this.state.encodeAll(this.useFilters);
|
|
19
16
|
if (client && this.useFilters) {
|
|
20
17
|
return this.state.applyFilters(client, true);
|
|
21
18
|
} else {
|
|
@@ -25,7 +22,6 @@ class SchemaSerializer {
|
|
|
25
22
|
applyPatches(clients) {
|
|
26
23
|
const hasChanges = this.state["$changes"].changes.size > 0;
|
|
27
24
|
if (hasChanges) {
|
|
28
|
-
this.needFullEncode = true;
|
|
29
25
|
let numClients = clients.length;
|
|
30
26
|
if (debugPatch.enabled) {
|
|
31
27
|
debugPatch.dumpChanges = dumpChanges(this.state);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/serializer/SchemaSerializer.ts"],
|
|
4
|
-
"sourcesContent": ["/* tslint:disable:no-string-literal */\n\nimport { Client } from '..';\nimport { Serializer } from './Serializer';\n\nimport { dumpChanges, hasFilter, Reflection, Schema } from '@colyseus/schema';\nimport { debugPatch } from '../Debug';\nimport { Protocol } from '../Protocol';\nimport { ClientState } from '../Transport';\n\nexport class SchemaSerializer<T> implements Serializer<T> {\n public id = 'schema';\n\n private state: T & Schema;\n private useFilters: boolean = false;\n\n private handshakeCache: number[];\n\n private needFullEncode = true;\n private fullEncodedState: number[];\n\n public reset(newState: T & Schema) {\n this.state = newState;\n this.useFilters = hasFilter(newState.constructor as typeof Schema);\n }\n\n public getFullState(client?: Client) {\n const fullEncodedState = (this.needFullEncode)\n
|
|
5
|
-
"mappings": "AAKA,SAAS,aAAa,WAAW,kBAA0B;AAC3D,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAErB,MAAM,iBAA6C;AAAA,EAAnD;AACL,SAAO,KAAK;AAGZ,SAAQ,aAAsB;
|
|
4
|
+
"sourcesContent": ["/* tslint:disable:no-string-literal */\n\nimport { Client } from '..';\nimport { Serializer } from './Serializer';\n\nimport { dumpChanges, hasFilter, Reflection, Schema } from '@colyseus/schema';\nimport { debugPatch } from '../Debug';\nimport { Protocol } from '../Protocol';\nimport { ClientState } from '../Transport';\n\nexport class SchemaSerializer<T> implements Serializer<T> {\n public id = 'schema';\n\n private state: T & Schema;\n private useFilters: boolean = false;\n\n private handshakeCache: number[];\n\n // private needFullEncode = true;\n // private fullEncodedState: number[];\n\n public reset(newState: T & Schema) {\n this.state = newState;\n this.useFilters = hasFilter(newState.constructor as typeof Schema);\n }\n\n public getFullState(client?: Client) {\n const fullEncodedState = this.state.encodeAll(this.useFilters);\n\n // const fullEncodedState = (this.needFullEncode)\n // ? this.state.encodeAll(this.useFilters)\n // : this.fullEncodedState;\n\n // this.fullEncodedState = fullEncodedState;\n // this.needFullEncode = false;\n\n if (client && this.useFilters) {\n return this.state.applyFilters(client, true);\n\n } else {\n return fullEncodedState;\n }\n }\n\n public applyPatches(clients: Client[]) {\n const hasChanges = this.state['$changes'].changes.size > 0;\n\n if (hasChanges) {\n // this.needFullEncode = true;\n\n let numClients = clients.length;\n\n // dump changes for patch debugging\n if (debugPatch.enabled) {\n (debugPatch as any).dumpChanges = dumpChanges(this.state);\n }\n\n // get patch bytes\n const patches = this.state.encode(false, [], this.useFilters);\n\n if (!this.useFilters) {\n // encode changes once, for all clients\n patches.unshift(Protocol.ROOM_STATE_PATCH);\n\n while (numClients--) {\n const client = clients[numClients];\n\n //\n // FIXME: avoid this check.\n //\n if (client.state === ClientState.JOINED) {\n client.raw(patches);\n }\n }\n\n } else {\n\n // encode state multiple times, for each client\n while (numClients--) {\n const client = clients[numClients];\n\n //\n // FIXME: avoid this check.\n //\n if (client.state === ClientState.JOINED) {\n const filteredPatches = this.state.applyFilters(client);\n client.raw([Protocol.ROOM_STATE_PATCH, ...filteredPatches]);\n }\n }\n\n this.state.discardAllChanges();\n }\n\n // debug patches\n if (debugPatch.enabled) {\n debugPatch(\n '%d bytes sent to %d clients, %j',\n patches.length,\n clients.length,\n (debugPatch as any).dumpChanges,\n );\n }\n }\n\n return hasChanges;\n }\n\n public handshake() {\n /**\n * Cache handshake to avoid encoding it for each client joining\n */\n if (!this.handshakeCache) {\n this.handshakeCache = (this.state && Reflection.encode(this.state));\n }\n\n return this.handshakeCache;\n }\n\n}\n"],
|
|
5
|
+
"mappings": "AAKA,SAAS,aAAa,WAAW,kBAA0B;AAC3D,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB;AACzB,SAAS,mBAAmB;AAErB,MAAM,iBAA6C;AAAA,EAAnD;AACL,SAAO,KAAK;AAGZ,SAAQ,aAAsB;AAAA;AAAA,EAOvB,MAAM,UAAsB;AACjC,SAAK,QAAQ;AACb,SAAK,aAAa,UAAU,SAAS,WAA4B;AAAA,EACnE;AAAA,EAEO,aAAa,QAAiB;AACnC,UAAM,mBAAmB,KAAK,MAAM,UAAU,KAAK,UAAU;AAS7D,QAAI,UAAU,KAAK,YAAY;AAC7B,aAAO,KAAK,MAAM,aAAa,QAAQ,IAAI;AAAA,IAE7C,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEO,aAAa,SAAmB;AACrC,UAAM,aAAa,KAAK,MAAM,YAAY,QAAQ,OAAO;AAEzD,QAAI,YAAY;AAGd,UAAI,aAAa,QAAQ;AAGzB,UAAI,WAAW,SAAS;AACtB,QAAC,WAAmB,cAAc,YAAY,KAAK,KAAK;AAAA,MAC1D;AAGA,YAAM,UAAU,KAAK,MAAM,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU;AAE5D,UAAI,CAAC,KAAK,YAAY;AAEpB,gBAAQ,QAAQ,SAAS,gBAAgB;AAEzC,eAAO,cAAc;AACnB,gBAAM,SAAS,QAAQ;AAKvB,cAAI,OAAO,UAAU,YAAY,QAAQ;AACvC,mBAAO,IAAI,OAAO;AAAA,UACpB;AAAA,QACF;AAAA,MAEF,OAAO;AAGL,eAAO,cAAc;AACnB,gBAAM,SAAS,QAAQ;AAKvB,cAAI,OAAO,UAAU,YAAY,QAAQ;AACvC,kBAAM,kBAAkB,KAAK,MAAM,aAAa,MAAM;AACtD,mBAAO,IAAI,CAAC,SAAS,kBAAkB,GAAG,eAAe,CAAC;AAAA,UAC5D;AAAA,QACF;AAEA,aAAK,MAAM,kBAAkB;AAAA,MAC/B;AAGA,UAAI,WAAW,SAAS;AACtB;AAAA,UACE;AAAA,UACA,QAAQ;AAAA,UACR,QAAQ;AAAA,UACP,WAAmB;AAAA,QACtB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEO,YAAY;AAIjB,QAAI,CAAC,KAAK,gBAAgB;AACxB,WAAK,iBAAkB,KAAK,SAAS,WAAW,OAAO,KAAK,KAAK;AAAA,IACnE;AAEA,WAAO,KAAK;AAAA,EACd;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|