A temp broken commit except for OfflineMap - refactoring jumping.

This commit is contained in:
genxium
2022-12-31 15:47:45 +08:00
parent b34fa79aeb
commit c7fc377a2b
47 changed files with 10636 additions and 660 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,7 @@
{
"ver": "1.0.1",
"uuid": "a0021cb4-2c2e-49ca-8699-7acf4f7a531b",
"isSubpackage": false,
"subpackageName": "",
"subMetas": {}
}

View File

@@ -0,0 +1,49 @@
{
"__type__": "cc.AnimationClip",
"_name": "Atk1",
"_objFlags": 0,
"_native": "",
"_duration": 0.36666666666666664,
"sample": 60,
"speed": 1,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "a5615ed4-d055-4db5-b924-4c8d8b2d926f"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "12b90556-58b9-4311-b5d9-820fb76d659b"
}
},
{
"frame": 0.11666666666666667,
"value": {
"__uuid__": "72bc74a1-6e8c-48bb-9ab2-9b8f502ceffb"
}
},
{
"frame": 0.31666666666666665,
"value": {
"__uuid__": "7e619896-100d-4903-b256-e30ddb5ad397"
}
},
{
"frame": 0.35,
"value": {
"__uuid__": "4a35e0f5-95c4-445b-8f9b-6514a060a72d"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "c3d4f508-b3a9-4deb-b2d1-8ddc7bf22e0c",
"subMetas": {}
}

View File

@@ -0,0 +1,37 @@
{
"__type__": "cc.AnimationClip",
"_name": "Atked1",
"_objFlags": 0,
"_native": "",
"_duration": 0.05,
"sample": 60,
"speed": 0.4,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "df446561-abb9-4d91-aa79-636bdf3d9335"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "852471cd-6270-47d2-b40b-e33a93910240"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "7d08ee55-243c-4bb0-b614-1cd09cabf13f"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "1ec27664-cd2a-4c7a-838f-953a7713ceca",
"subMetas": {}
}

View File

@@ -0,0 +1,43 @@
{
"__type__": "cc.AnimationClip",
"_name": "BlownUp1",
"_objFlags": 0,
"_native": "",
"_duration": 0.06666666666666667,
"sample": 60,
"speed": 0.2,
"wrapMode": 2,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "9d16c119-8ead-4d9e-90b3-5bbf749f71ef"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "f2629502-5c62-4df2-9741-58fe94bfab53"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "d6a81e68-5f14-45d1-82e2-fabf2853685a"
}
},
{
"frame": 0.05,
"value": {
"__uuid__": "9f7382dd-4da6-485c-8064-78ec031a2c0a"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "f87054fd-328f-4001-a8ff-b4c049cc1e6d",
"subMetas": {}
}

View File

@@ -0,0 +1,79 @@
{
"__type__": "cc.AnimationClip",
"_name": "GetUp1",
"_objFlags": 0,
"_native": "",
"_duration": 0.16666666666666666,
"sample": 60,
"speed": 0.3,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "4b1219ad-ef64-47f6-87ca-16188343c47a"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "49e7f092-85c2-4eb3-a62a-965e9e0d9c12"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "73023874-a74c-4e9f-8389-d4280d7be452"
}
},
{
"frame": 0.05,
"value": {
"__uuid__": "ed62daef-540c-4b34-81d3-99c4296d6ca9"
}
},
{
"frame": 0.06666666666666667,
"value": {
"__uuid__": "cdbcadf6-4e4f-4673-8044-51b40c58da96"
}
},
{
"frame": 0.08333333333333333,
"value": {
"__uuid__": "7ae337de-a63f-41ef-9627-84f9ced77d6f"
}
},
{
"frame": 0.1,
"value": {
"__uuid__": "931626d5-01ad-4329-a8f7-9a00bd64fdff"
}
},
{
"frame": 0.11666666666666667,
"value": {
"__uuid__": "d4c2dae6-8ff6-4976-8e50-cb0b698d93d4"
}
},
{
"frame": 0.13333333333333333,
"value": {
"__uuid__": "b328d317-3721-4402-89db-34910c31a48a"
}
},
{
"frame": 0.15,
"value": {
"__uuid__": "a51ca0c2-3e3b-4b7b-b636-1cac791c2511"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "7cb4d395-c68f-4643-9e2e-8cb8e200d3a5",
"subMetas": {}
}

View File

@@ -0,0 +1,85 @@
{
"__type__": "cc.AnimationClip",
"_name": "Idle1",
"_objFlags": 0,
"_native": "",
"_duration": 0.45,
"sample": 60,
"speed": 1,
"wrapMode": 2,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "104ab450-fec3-4ea8-b6c0-aca74a826f5a"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "4bad7430-7b43-47ae-9d65-ef3a2b88f450"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "c3675bd6-4aa6-4ec5-80d5-ef35862d15b9"
}
},
{
"frame": 0.08333333333333333,
"value": {
"__uuid__": "23446a26-dadf-4d7d-9dd3-4ca3f8f6b7a5"
}
},
{
"frame": 0.13333333333333333,
"value": {
"__uuid__": "47628469-7775-4daf-b321-74fac947ce60"
}
},
{
"frame": 0.18333333333333332,
"value": {
"__uuid__": "1c37ea82-6700-4bea-9265-c70a16d2187c"
}
},
{
"frame": 0.23333333333333334,
"value": {
"__uuid__": "c4fb2fc2-7a04-4219-b129-77249f33426b"
}
},
{
"frame": 0.2833333333333333,
"value": {
"__uuid__": "0ecf4a0c-0f13-42fa-a214-b4826acd8556"
}
},
{
"frame": 0.3333333333333333,
"value": {
"__uuid__": "cabf9cb6-99ca-426d-9a23-95cdec6f06b9"
}
},
{
"frame": 0.38333333333333336,
"value": {
"__uuid__": "94d073e8-f17f-4a66-be72-2b8cf3347ea4"
}
},
{
"frame": 0.43333333333333335,
"value": {
"__uuid__": "3a435737-51d0-4f31-ad2b-838d9d98bad3"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "a0d8b9a6-7bf7-4cf5-aecb-54b2908cbfb3",
"subMetas": {}
}

View File

@@ -0,0 +1,97 @@
{
"__type__": "cc.AnimationClip",
"_name": "InAirAtk1",
"_objFlags": 0,
"_native": "",
"_duration": 0.4166666666666667,
"sample": 60,
"speed": 1,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "3631c1af-5426-420e-9c81-47d8dc4790f7"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "f10683b4-2dd8-48d9-b11d-3e7fd12e2dee"
}
},
{
"frame": 0.06666666666666667,
"value": {
"__uuid__": "6134b002-58ed-4d78-af23-5f574661b04b"
}
},
{
"frame": 0.1,
"value": {
"__uuid__": "5db472a6-3371-4a5b-860d-e6ea6a9eaba0"
}
},
{
"frame": 0.13333333333333333,
"value": {
"__uuid__": "769179e3-d0bb-4bd0-a084-ce5ad5b57d47"
}
},
{
"frame": 0.16666666666666666,
"value": {
"__uuid__": "8f09ba68-066c-4240-84be-390cdbb2d59c"
}
},
{
"frame": 0.2,
"value": {
"__uuid__": "e8ce0f1e-6af0-423b-9448-2a72c944127d"
}
},
{
"frame": 0.23333333333333334,
"value": {
"__uuid__": "1da322c5-98b8-49d0-8f96-33fdc68a23cb"
}
},
{
"frame": 0.26666666666666666,
"value": {
"__uuid__": "1e4bf242-5d08-4220-a5d9-2a2524b0e3c7"
}
},
{
"frame": 0.3,
"value": {
"__uuid__": "6de218a1-5a97-405d-b7d0-68cc9cf076f9"
}
},
{
"frame": 0.3333333333333333,
"value": {
"__uuid__": "4c16e710-abfe-4030-bd42-fded0f41f665"
}
},
{
"frame": 0.36666666666666664,
"value": {
"__uuid__": "1753c533-3a31-46b6-ab01-15b778702237"
}
},
{
"frame": 0.4,
"value": {
"__uuid__": "923cfcea-2c3e-493f-826a-0b08b447ebde"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "555d837b-4a68-4a28-b9ff-e97e393d1a05",
"subMetas": {}
}

View File

@@ -0,0 +1,31 @@
{
"__type__": "cc.AnimationClip",
"_name": "InAirAtked1",
"_objFlags": 0,
"_native": "",
"_duration": 0.03333333333333333,
"sample": 60,
"speed": 0.2,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "852471cd-6270-47d2-b40b-e33a93910240"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "7d08ee55-243c-4bb0-b614-1cd09cabf13f"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "ee0b89e9-89f0-451e-a6ef-d41d64d3d67a",
"subMetas": {}
}

View File

@@ -0,0 +1,91 @@
{
"__type__": "cc.AnimationClip",
"_name": "InAirIdle1ByJump",
"_objFlags": 0,
"_native": "",
"_duration": 0.2,
"sample": 60,
"speed": 0.6,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "21c7f1b2-77c7-4f9a-b5c6-b79d99553432"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "9106d51d-808b-4cec-b03c-1a0e9de3dd13"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "23199f52-ded0-4271-b426-17c6037989a4"
}
},
{
"frame": 0.05,
"value": {
"__uuid__": "293367f0-6557-40d2-aff5-4f6b9faa3b14"
}
},
{
"frame": 0.06666666666666667,
"value": {
"__uuid__": "f9029e1e-91f8-4ae2-a3ef-b811c409f41a"
}
},
{
"frame": 0.08333333333333333,
"value": {
"__uuid__": "de0e3195-e56e-4bba-82f6-72635f453eea"
}
},
{
"frame": 0.1,
"value": {
"__uuid__": "93e7fb75-b42d-4da9-860d-2e7dd0930d8d"
}
},
{
"frame": 0.11666666666666667,
"value": {
"__uuid__": "1a789615-1580-4342-b739-7ef94c80b34a"
}
},
{
"frame": 0.13333333333333333,
"value": {
"__uuid__": "5331bbb0-fad4-402c-8788-cb070cc8fb7c"
}
},
{
"frame": 0.15,
"value": {
"__uuid__": "2f2bce67-0e39-45ee-aebf-b15e0d0c341f"
}
},
{
"frame": 0.16666666666666666,
"value": {
"__uuid__": "77a2f890-6627-4699-9278-21d7365bd2c8"
}
},
{
"frame": 0.18333333333333332,
"value": {
"__uuid__": "ce3e8e33-4420-478b-a084-5a7f77d584b8"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "170bbc56-3cff-4a81-b48f-a037b9418758",
"subMetas": {}
}

View File

@@ -0,0 +1,25 @@
{
"__type__": "cc.AnimationClip",
"_name": "InAirIdle1NoJump",
"_objFlags": 0,
"_native": "",
"_duration": 0.016666666666666666,
"sample": 60,
"speed": 1,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "ce3e8e33-4420-478b-a084-5a7f77d584b8"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "996c218a-9e18-441e-b0f8-e61c5c991b9e",
"subMetas": {}
}

View File

@@ -0,0 +1,49 @@
{
"__type__": "cc.AnimationClip",
"_name": "LayDown1",
"_objFlags": 0,
"_native": "",
"_duration": 0.08333333333333333,
"sample": 60,
"speed": 0.3,
"wrapMode": 1,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "e1f19129-8517-47fa-814d-b79c8abcd549"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "b4127445-a13e-4244-9656-92033a5abcca"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "64a8e39c-95ed-4181-b777-b05434d1fa6d"
}
},
{
"frame": 0.05,
"value": {
"__uuid__": "5d1458ae-8812-4c4a-a01f-0a2b901ed3f3"
}
},
{
"frame": 0.06666666666666667,
"value": {
"__uuid__": "ac0b9039-5caf-4bc1-bf29-2a733fbb7898"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "0978395c-8947-4830-9f68-58fadcbe5c63",
"subMetas": {}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

View File

@@ -0,0 +1,12 @@
{
"ver": "2.3.3",
"uuid": "8d4cf214-f71c-4237-bdc1-ca0069909248",
"type": "raw",
"wrapMode": "clamp",
"filterMode": "bilinear",
"premultiplyAlpha": false,
"genMipmaps": false,
"packable": true,
"platformSettings": {},
"subMetas": {}
}

View File

@@ -0,0 +1,115 @@
{
"__type__": "cc.AnimationClip",
"_name": "Walking",
"_objFlags": 0,
"_native": "",
"_duration": 0.26666666666666666,
"sample": 60,
"speed": 0.25,
"wrapMode": 2,
"curveData": {
"comps": {
"cc.Sprite": {
"spriteFrame": [
{
"frame": 0,
"value": {
"__uuid__": "275387d0-70fd-47f5-b82e-14165a14c45a"
}
},
{
"frame": 0.016666666666666666,
"value": {
"__uuid__": "95e3dc3c-ee98-4ae8-899f-3d6539a649cb"
}
},
{
"frame": 0.03333333333333333,
"value": {
"__uuid__": "7515ef50-3a14-4e58-8811-a0c890fc40f3"
}
},
{
"frame": 0.05,
"value": {
"__uuid__": "fa3d6703-1cfc-4f40-b61e-7ebf0fdac56a"
}
},
{
"frame": 0.06666666666666667,
"value": {
"__uuid__": "37eea7f3-5a1d-4172-be38-9b492399ef44"
}
},
{
"frame": 0.08333333333333333,
"value": {
"__uuid__": "0e2ad2ed-2b21-4e14-9607-5a341d9ed7e4"
}
},
{
"frame": 0.1,
"value": {
"__uuid__": "e1625aba-a6fc-4883-a696-2d9d56d3050d"
}
},
{
"frame": 0.11666666666666667,
"value": {
"__uuid__": "86f805a2-a27c-4c96-8e11-acc448b0bdd0"
}
},
{
"frame": 0.13333333333333333,
"value": {
"__uuid__": "63bcaa39-1cc5-461f-a175-0d7a0abd3510"
}
},
{
"frame": 0.15,
"value": {
"__uuid__": "691383d5-9199-4bd5-9803-403216331d7f"
}
},
{
"frame": 0.16666666666666666,
"value": {
"__uuid__": "602818c2-1242-4a24-87ba-77f6accccbc3"
}
},
{
"frame": 0.18333333333333332,
"value": {
"__uuid__": "650b8ccb-2a82-4972-bb5b-79a2cb4a3503"
}
},
{
"frame": 0.2,
"value": {
"__uuid__": "b264bcc2-71c7-45a6-8c94-be049bb0d163"
}
},
{
"frame": 0.21666666666666667,
"value": {
"__uuid__": "a75af05e-3b54-45d8-b7ad-cbcf2b65b2a9"
}
},
{
"frame": 0.23333333333333334,
"value": {
"__uuid__": "3e2e26f7-007a-4130-8d90-154dfcde96d3"
}
},
{
"frame": 0.25,
"value": {
"__uuid__": "9cf71d99-7262-4a6c-8c27-06167d841a24"
}
}
]
}
}
},
"events": []
}

View File

@@ -0,0 +1,5 @@
{
"ver": "2.1.0",
"uuid": "768d591b-4467-4a8f-95bf-4f7fcc3835b6",
"subMetas": {}
}

View File

@@ -24,10 +24,11 @@ message PlayerDownsync {
int32 maxHp = 17;
int32 characterState = 18;
bool inAir = 19; // by design a standalone field only inferred by the collision result of "applyInputFrameDownsyncDynamicsOnSingleRenderFrame" instead of "characterState", because we need check the transition for "characterState" from this field, i.e. "inAir (prev -> curr)"
int32 framesInChState = 20; // number of frames elapsed in the current character state
string name = 20;
string displayName = 21;
string avatar = 22;
string name = 997;
string displayName = 998;
string avatar = 999;
}
message InputFrameDecoded {

View File

@@ -33,14 +33,14 @@
"_active": true,
"_components": [
{
"__id__": 23
"__id__": 27
},
{
"__id__": 24
"__id__": 28
}
],
"_prefab": {
"__id__": 25
"__id__": 29
},
"_opacity": 255,
"_color": {
@@ -493,12 +493,15 @@
},
{
"__id__": 18
},
{
"__id__": 22
}
],
"_active": true,
"_components": [],
"_prefab": {
"__id__": 22
"__id__": 26
},
"_opacity": 255,
"_color": {
@@ -922,6 +925,163 @@
"fileId": "17JdhftghBYr81MfV9i6cy",
"sync": false
},
{
"__type__": "cc.Node",
"_name": "MonkGirl",
"_objFlags": 0,
"_parent": {
"__id__": 11
},
"_children": [],
"_active": false,
"_components": [
{
"__id__": 23
},
{
"__id__": 24
}
],
"_prefab": {
"__id__": 25
},
"_opacity": 255,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_contentSize": {
"__type__": "cc.Size",
"width": 1425,
"height": 1024
},
"_anchorPoint": {
"__type__": "cc.Vec2",
"x": 0.5,
"y": 0.5
},
"_trs": {
"__type__": "TypedArray",
"ctor": "Float64Array",
"array": [
0,
0,
0,
0,
0,
0,
1,
0.7,
0.7,
1
]
},
"_eulerAngles": {
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
"z": 0
},
"_skewX": 0,
"_skewY": 0,
"_is3DNode": false,
"_groupIndex": 0,
"groupIndex": 0,
"_id": ""
},
{
"__type__": "cc.Animation",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 22
},
"_enabled": true,
"_defaultClip": null,
"_clips": [
{
"__uuid__": "a0d8b9a6-7bf7-4cf5-aecb-54b2908cbfb3"
},
{
"__uuid__": "768d591b-4467-4a8f-95bf-4f7fcc3835b6"
},
{
"__uuid__": "c3d4f508-b3a9-4deb-b2d1-8ddc7bf22e0c"
},
{
"__uuid__": "1ec27664-cd2a-4c7a-838f-953a7713ceca"
},
{
"__uuid__": "996c218a-9e18-441e-b0f8-e61c5c991b9e"
},
{
"__uuid__": "170bbc56-3cff-4a81-b48f-a037b9418758"
},
{
"__uuid__": "555d837b-4a68-4a28-b9ff-e97e393d1a05"
},
{
"__uuid__": "ee0b89e9-89f0-451e-a6ef-d41d64d3d67a"
},
{
"__uuid__": "f87054fd-328f-4001-a8ff-b4c049cc1e6d"
},
{
"__uuid__": "0978395c-8947-4830-9f68-58fadcbe5c63"
},
{
"__uuid__": "7cb4d395-c68f-4643-9e2e-8cb8e200d3a5"
}
],
"playOnLoad": false,
"_id": ""
},
{
"__type__": "cc.Sprite",
"_name": "",
"_objFlags": 0,
"node": {
"__id__": 22
},
"_enabled": true,
"_materials": [
{
"__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432"
}
],
"_srcBlendFactor": 770,
"_dstBlendFactor": 771,
"_spriteFrame": null,
"_type": 0,
"_sizeMode": 1,
"_fillType": 0,
"_fillCenter": {
"__type__": "cc.Vec2",
"x": 0,
"y": 0
},
"_fillStart": 0,
"_fillRange": 0,
"_isTrimmedMode": true,
"_atlas": {
"__uuid__": "725c90f9-56f8-48ea-9159-4d2949cd3ce0"
},
"_id": ""
},
{
"__type__": "cc.PrefabInfo",
"root": {
"__id__": 1
},
"asset": {
"__uuid__": "59bff7a2-23e1-4d69-bce7-afb37eae196a"
},
"fileId": "6cGpRwF5ZPjpJdtoqbrnta",
"sync": false
},
{
"__type__": "cc.PrefabInfo",
"root": {

View File

@@ -440,7 +440,7 @@
"array": [
0,
0,
216.6771387800957,
216.50135522089343,
0,
0,
0,

View File

@@ -5,33 +5,15 @@ window.ATK_CHARACTER_STATE = {
Walking: [1, "Walking"],
Atk1: [2, "Atk1"],
Atked1: [3, "Atked1"],
InAirIdle1: [4, "InAirIdle1"],
InAirAtk1: [5, "Atk1"],
InAirAtked1: [6, "Atked1"],
InAirIdle1NoJump: [4, "InAirIdle1NoJump"],
InAirIdle1ByJump: [5, "InAirIdle1ByJump"], // The cycling part of it would be exactly "InAirIdle1NoJump"
InAirAtk1: [6, "InAirAtk1"],
InAirAtked1: [7, "InAirAtked1"],
BlownUp1: [8, "BlownUp1"],
LayDown1: [9, "LayDown1"],
GetUp1: [10, "GetUp1"],
};
window.toInAirConjugate = function(foo) {
switch (foo) {
case window.ATK_CHARACTER_STATE.Idle1[0]:
case window.ATK_CHARACTER_STATE.Walking[0]:
return window.ATK_CHARACTER_STATE.InAirIdle1[0];
case window.ATK_CHARACTER_STATE.Atk1[0]:
return window.ATK_CHARACTER_STATE.InAirAtk1[0];
case window.ATK_CHARACTER_STATE.Atked1[0]:
return window.ATK_CHARACTER_STATE.InAirAtked1[0];
case window.ATK_CHARACTER_STATE.InAirIdle1[0]:
return window.ATK_CHARACTER_STATE.Idle1[0];
case window.ATK_CHARACTER_STATE.InAirAtk1[0]:
return window.ATK_CHARACTER_STATE.Atk1[0];
case window.ATK_CHARACTER_STATE.InAirAtked1[0]:
return window.ATK_CHARACTER_STATE.Atked1[0];
default:
console.warn(`Invalid characterState ${foo} received, no in air conjugate is available!`);
return null;
}
}
window.ATK_CHARACTER_STATE_ARR = [];
for (let k in window.ATK_CHARACTER_STATE) {
window.ATK_CHARACTER_STATE_ARR.push(window.ATK_CHARACTER_STATE[k]);
@@ -40,12 +22,18 @@ for (let k in window.ATK_CHARACTER_STATE) {
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET = new Set();
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.Idle1[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.Walking[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1NoJump[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1ByJump[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.BlownUp1[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.LayDown1[0]);
window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.add(window.ATK_CHARACTER_STATE.GetUp1[0]);
window.ATK_CHARACTER_STATE_IN_AIR_SET = new Set();
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1[0]);
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1NoJump[0]);
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirIdle1ByJump[0]);
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirAtk1[0]);
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.InAirAtked1[0]);
window.ATK_CHARACTER_STATE_IN_AIR_SET.add(window.ATK_CHARACTER_STATE.BlownUp1[0]);
/*
Kindly note that the use of dragonBones anim is an informed choice for the feasibility of "gotoAndPlayByFrame", which is a required feature by "Map.rollbackAndChase". You might find that "cc.Animation" -- the traditional frame anim -- can also suffice this requirement, yet if we want to develop 3D frontend in the future, working with skeletal anim will make a smoother transition.
@@ -80,11 +68,11 @@ cc.Class({
this.animComp = this.effAnimNode.getComponent(dragonBones.ArmatureDisplay);
if (!this.animComp) {
this.animComp = this.effAnimNode.getComponent(cc.Animation);
}
}
this.effAnimNode.active = true;
},
updateCharacterAnim(rdfPlayer, prevRdfPlayer, forceAnimSwitch) {
updateCharacterAnim(rdfPlayer, prevRdfPlayer, forceAnimSwitch, chConfig) {
// As this function might be called after many frames of a rollback, it's possible that the playing animation was predicted, different from "prevRdfPlayer.CharacterState" but same as "newCharacterState". More granular checks are needed to determine whether we should interrupt the playing animation.
// Update directions
@@ -117,29 +105,25 @@ cc.Class({
}
if (this.animComp instanceof dragonBones.ArmatureDisplay) {
this._interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName);
this._interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName, chConfig);
} else {
this._interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName);
this._interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName, chConfig);
}
},
_interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName) {
_interruptPlayingAnimAndPlayNewAnimDragonBones(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, underlyingAnimationCtrl, playingAnimName, chConfig) {
if (window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.has(newCharacterState)) {
// No "framesToRecover"
// console.warn(`#DragonBones JoinIndex=${rdfPlayer.joinIndex}, ${playingAnimName} -> ${newAnimName}`);
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, 0, -1);
} else {
const animationData = underlyingAnimationCtrl._animations[newAnimName];
let fromAnimFrame = (animationData.frameCount - rdfPlayer.FramesToRecover);
if (fromAnimFrame < 0) {
// For Atk1 or Atk2, it's possible that the "meleeBullet.recoveryFrames" is configured to be slightly larger than corresponding animation duration frames
fromAnimFrame = 0;
}
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, fromAnimFrame, 1);
let frameIdxInAnim = rdfPlayer.FramesInChState;
underlyingAnimationCtrl.gotoAndPlayByFrame(newAnimName, frameIdxInAnim, 1);
}
},
_interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName) {
_interruptPlayingAnimAndPlayNewAnimFrameAnim(rdfPlayer, prevRdfPlayer, newCharacterState, newAnimName, playingAnimName, chConfig) {
if (window.ATK_CHARACTER_STATE_INTERRUPT_WAIVE_SET.has(newCharacterState)) {
// No "framesToRecover"
//console.warn(`#FrameAnim JoinIndex=${rdfPlayer.joinIndex}, ${playingAnimName} -> ${newAnimName}`);
@@ -148,11 +132,11 @@ cc.Class({
}
// The "playTimes" counterpart is managed by each "cc.AnimationClip.wrapMode", already preset in the editor.
const targetClip = this.animComp.getClips()[newCharacterState]; // The clips follow the exact order in ATK_CHARACTER_STATE
let fromTime = (targetClip.duration - rdfPlayer.FramesToRecover / targetClip.sample); // TODO: Anyway to avoid using division here?
if (fromTime < 0) {
// For Atk1 or Atk2, it's possible that the "meleeBullet.recoveryFrames" is configured to be slightly larger than corresponding animation duration frames
fromTime = 0;
}
let frameIdxInAnim = rdfPlayer.FramesInChState;
if (window.ATK_CHARACTER_STATE.InAirIdle1ByJump == newCharacterState && null != chConfig) {
frameIdxInAnim = chConfig.InAirIdleFrameIdxTurningPoint + (frameIdxInAnim - chConfig.InAirIdleFrameIdxTurningPoint) % chConfig.InAirIdleFrameIdxTurnedCycle; // TODO: Anyway to avoid using division here?
}
let fromTime = (frameIdxInAnim / targetClip.sample); // TODO: Anyway to avoid using division here?
this.animComp.play(newAnimName, fromTime);
},

View File

@@ -590,7 +590,7 @@ cc.Class({
const jsPlayersArr = new Array().fill(null);
for (let k in pbRdf.playersArr) {
const pbPlayer = pbRdf.playersArr[k];
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.inAir, pbPlayer.colliderRadius);
const jsPlayer = gopkgs.NewPlayerDownsyncJs(pbPlayer.id, pbPlayer.virtualGridX, pbPlayer.virtualGridY, pbPlayer.dirX, pbPlayer.dirY, pbPlayer.velX, pbPlayer.velY, pbPlayer.framesToRecover, pbPlayer.framesInChState, pbPlayer.speed, pbPlayer.battleState, pbPlayer.characterState, pbPlayer.joinIndex, pbPlayer.hp, pbPlayer.maxHp, pbPlayer.inAir, pbPlayer.colliderRadius);
jsPlayersArr[k] = jsPlayer;
}
const jsMeleeBulletsArr = [];
@@ -638,6 +638,7 @@ cc.Class({
}
// The logic below applies to (window.MAGIC_ROOM_DOWNSYNC_FRAME_ID.BATTLE_START == rdf.id || window.RING_BUFF_NON_CONSECUTIVE_SET == dumpRenderCacheRet)
self.chConfigsOrderedByJoinIndex = gopkgs.GetCharacterConfigsOrderedByJoinIndex(pbRdf.speciesIdList);
self.playerOpPatternToSkillId = pbRdf.playerOpPatternToSkillId;
self._initPlayerRichInfoDict(rdf.PlayersArr);
@@ -694,18 +695,19 @@ cc.Class({
equalPlayers(lhs, rhs) {
if (null == lhs || null == rhs) return false;
if (lhs.virtualGridX != rhs.virtualGridX) return false;
if (lhs.virtualGridY != rhs.virtualGridY) return false;
if (lhs.dirX != rhs.dirX) return false;
if (lhs.dirY != rhs.dirY) return false;
if (lhs.velX != rhs.velX) return false;
if (lhs.velY != rhs.velY) return false;
if (lhs.speed != rhs.speed) return false;
if (lhs.framesToRecover != rhs.framesToRecover) return false;
if (lhs.hp != rhs.hp) return false;
if (lhs.maxHp != rhs.maxHp) return false;
if (lhs.characterState != rhs.characterState) return false;
if (lhs.inAir != rhs.inAir) return false;
if (lhs.VirtualGridX != rhs.VirtualGridX) return false;
if (lhs.VirtualGridY != rhs.VirtualGridY) return false;
if (lhs.DirX != rhs.DirX) return false;
if (lhs.DirY != rhs.DirY) return false;
if (lhs.VelX != rhs.VelX) return false;
if (lhs.VelY != rhs.VelY) return false;
if (lhs.Speed != rhs.Speed) return false;
if (lhs.Hp != rhs.Hp) return false;
if (lhs.MaxHp != rhs.MaxHp) return false;
if (lhs.CharacterState != rhs.CharacterState) return false;
if (lhs.InAir != rhs.InAir) return false;
if (lhs.FramesToRecover != rhs.FramesToRecover) return false;
if (lhs.FramesInChState != rhs.FramesInChState) return false;
return true;
},
@@ -1063,12 +1065,13 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
const playersArr = rdf.PlayersArr;
for (let k in playersArr) {
const currPlayerDownsync = playersArr[k];
const chConfig = self.chConfigsOrderedByJoinIndex[k];
const prevRdfPlayer = (null == prevRdf ? null : prevRdf.PlayersArr[k]);
const [wx, wy] = self.virtualGridToWorldPos(currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY);
const playerRichInfo = self.playerRichInfoArr[k];
playerRichInfo.node.setPosition(wx, wy);
playerRichInfo.scriptIns.updateSpeed(currPlayerDownsync.Speed);
playerRichInfo.scriptIns.updateCharacterAnim(currPlayerDownsync, prevRdfPlayer, false);
playerRichInfo.scriptIns.updateCharacterAnim(currPlayerDownsync, prevRdfPlayer, false, chConfig);
}
// Update countdown
@@ -1104,7 +1107,7 @@ othersForcedDownsyncRenderFrame=${JSON.stringify(othersForcedDownsyncRenderFrame
};
self.rdfIdToActuallyUsedInput.set(currRdf.Id, inputFrameDownsyncClone);
}
const nextRdf = gopkgs.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs(self.recentInputCache, currRdf, collisionSys, collisionSysMap, self.gravityX, self.gravityY, self.jumpingInitVelY, self.inputDelayFrames, self.inputScaleFrames, self.spaceOffsetX, self.spaceOffsetY, self.snapIntoPlatformOverlap, self.snapIntoPlatformThreshold, self.worldToVirtualGridRatio, self.virtualGridToWorldRatio, self.playerOpPatternToSkillId);
const nextRdf = gopkgs.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrameJs(self.recentInputCache, currRdf, collisionSys, collisionSysMap, self.spaceOffsetX, self.spaceOffsetY, self.playerOpPatternToSkillId, self.chConfigsOrderedByJoinIndex);
if (true == isChasing) {
// [WARNING] Move the cursor "self.chaserRenderFrameId" when "true == isChasing", keep in mind that "self.chaserRenderFrameId" is not monotonic!

View File

@@ -40,13 +40,13 @@ cc.Class({
self.rollbackEstimatedDtNanos = 16666666;
self.tooFastDtIntervalMillis = 0.5 * self.rollbackEstimatedDtMillis;
self.worldToVirtualGridRatio = 1000;
self.worldToVirtualGridRatio = 100;
self.virtualGridToWorldRatio = 1.0 / self.worldToVirtualGridRatio;
const opJoinIndexPrefix1 = (1 << 8);
const opJoinIndexPrefix2 = (2 << 8);
self.playerOpPatternToSkillId = {};
self.playerOpPatternToSkillId[opJoinIndexPrefix1 + 0] = 1;
self.playerOpPatternToSkillId[opJoinIndexPrefix2 + 0] = 1;
const playerOpPatternToSkillId = {};
playerOpPatternToSkillId[opJoinIndexPrefix1 + 0] = 1;
playerOpPatternToSkillId[opJoinIndexPrefix1 + 1] = 2;
/*
[WARNING] As when a character is standing on a barrier, if not carefully curated there MIGHT BE a bouncing sequence of "[(inAir -> dropIntoBarrier ->), (notInAir -> pushedOutOfBarrier ->)], [(inAir -> ..."
@@ -152,7 +152,7 @@ cc.Class({
virtualGridY: boundaryObjs.playerStartingPositions[0].y * self.worldToVirtualGridRatio,
speed: 1 * self.worldToVirtualGridRatio,
colliderRadius: 12,
characterState: window.ATK_CHARACTER_STATE.InAirIdle1[0],
characterState: window.ATK_CHARACTER_STATE.InAirIdle1NoJump[0],
framesToRecover: 0,
dirX: 0,
dirY: 0,
@@ -160,22 +160,9 @@ cc.Class({
velY: 0,
inAir: true,
}),
window.pb.protos.PlayerDownsync.create({
id: 11,
joinIndex: 2,
virtualGridX: boundaryObjs.playerStartingPositions[1].x * self.worldToVirtualGridRatio,
virtualGridY: boundaryObjs.playerStartingPositions[1].y * self.worldToVirtualGridRatio,
speed: 1 * self.worldToVirtualGridRatio,
colliderRadius: 12,
characterState: window.ATK_CHARACTER_STATE.InAirIdle1[0],
framesToRecover: 0,
dirX: 0,
dirY: 0,
velX: 0,
velY: 0,
inAir: true,
}),
]
],
speciesIdList: [0],
playerOpPatternToSkillId: playerOpPatternToSkillId,
});
self.selfPlayerInfo = {
@@ -221,4 +208,48 @@ cc.Class({
}
},
spawnPlayerNode(joinIndex, vx, vy, playerDownsyncInfo) {
const self = this;
const newPlayerNode = cc.instantiate(self.controlledCharacterPrefab)
const playerScriptIns = newPlayerNode.getComponent("ControlledCharacter");
if (1 == joinIndex) {
playerScriptIns.setSpecies("MonkGirl");
} else if (2 == joinIndex) {
playerScriptIns.setSpecies("UltramanTiga");
}
const [wx, wy] = self.virtualGridToWorldPos(vx, vy);
newPlayerNode.setPosition(wx, wy);
playerScriptIns.mapNode = self.node;
const colliderRadius = playerDownsyncInfo.ColliderRadius;
const halfColliderWidth = colliderRadius,
halfColliderHeight = colliderRadius + colliderRadius; // avoid multiplying
const colliderWidth = halfColliderWidth + halfColliderWidth,
colliderHeight = halfColliderHeight + halfColliderHeight; // avoid multiplying
const [cx, cy] = gopkgs.WorldToPolygonColliderBLPos(wx, wy, halfColliderWidth, halfColliderHeight, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.spaceOffsetX, self.spaceOffsetY);
const gopkgsBoundaryAnchor = gopkgs.NewVec2DJs(cx, cy);
const gopkgsBoundaryPts = [
gopkgs.NewVec2DJs(0, 0),
gopkgs.NewVec2DJs(self.snapIntoPlatformOverlap + colliderWidth + self.snapIntoPlatformOverlap, 0),
gopkgs.NewVec2DJs(self.snapIntoPlatformOverlap + colliderWidth + self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap + colliderHeight + self.snapIntoPlatformOverlap),
gopkgs.NewVec2DJs(0, self.snapIntoPlatformOverlap + colliderHeight + self.snapIntoPlatformOverlap)
];
const gopkgsBoundary = gopkgs.NewPolygon2DJs(gopkgsBoundaryAnchor, gopkgsBoundaryPts);
const newPlayerCollider = gopkgs.GenerateConvexPolygonColliderJs(gopkgsBoundary, self.spaceOffsetX, self.spaceOffsetY, playerDownsyncInfo, "Player");
//const newPlayerCollider = gopkgs.GenerateRectColliderJs(wx, wy, colliderWidth, colliderHeight, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.snapIntoPlatformOverlap, self.spaceOffsetX, self.spaceOffsetY, playerDownsyncInfo, "Player");
self.gopkgsCollisionSys.Add(newPlayerCollider);
const collisionPlayerIndex = self.collisionPlayerIndexPrefix + joinIndex;
self.gopkgsCollisionSysMap[collisionPlayerIndex] = newPlayerCollider;
console.log(`Created new player collider: joinIndex=${joinIndex}, colliderRadius=${playerDownsyncInfo.ColliderRadius}`);
safelyAddChild(self.node, newPlayerNode);
setLocalZOrder(newPlayerNode, 5);
newPlayerNode.active = true;
playerScriptIns.updateCharacterAnim(playerDownsyncInfo, null, true);
return [newPlayerNode, playerScriptIns];
},
});

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +0,0 @@
{
"ver": "1.0.5",
"uuid": "da0a517f-5c74-4fc0-ba89-dbcee184b13e",
"isPlugin": false,
"loadPluginInWeb": true,
"loadPluginInNative": true,
"loadPluginInEditor": false,
"subMetas": {}
}

View File

@@ -1210,6 +1210,7 @@ $root.protos = (function() {
* @property {number|null} [maxHp] PlayerDownsync maxHp
* @property {number|null} [characterState] PlayerDownsync characterState
* @property {boolean|null} [inAir] PlayerDownsync inAir
* @property {number|null} [framesInChState] PlayerDownsync framesInChState
* @property {string|null} [name] PlayerDownsync name
* @property {string|null} [displayName] PlayerDownsync displayName
* @property {string|null} [avatar] PlayerDownsync avatar
@@ -1382,6 +1383,14 @@ $root.protos = (function() {
*/
PlayerDownsync.prototype.inAir = false;
/**
* PlayerDownsync framesInChState.
* @member {number} framesInChState
* @memberof protos.PlayerDownsync
* @instance
*/
PlayerDownsync.prototype.framesInChState = 0;
/**
* PlayerDownsync name.
* @member {string} name
@@ -1468,12 +1477,14 @@ $root.protos = (function() {
writer.uint32(/* id 18, wireType 0 =*/144).int32(message.characterState);
if (message.inAir != null && Object.hasOwnProperty.call(message, "inAir"))
writer.uint32(/* id 19, wireType 0 =*/152).bool(message.inAir);
if (message.framesInChState != null && Object.hasOwnProperty.call(message, "framesInChState"))
writer.uint32(/* id 20, wireType 0 =*/160).int32(message.framesInChState);
if (message.name != null && Object.hasOwnProperty.call(message, "name"))
writer.uint32(/* id 20, wireType 2 =*/162).string(message.name);
writer.uint32(/* id 997, wireType 2 =*/7978).string(message.name);
if (message.displayName != null && Object.hasOwnProperty.call(message, "displayName"))
writer.uint32(/* id 21, wireType 2 =*/170).string(message.displayName);
writer.uint32(/* id 998, wireType 2 =*/7986).string(message.displayName);
if (message.avatar != null && Object.hasOwnProperty.call(message, "avatar"))
writer.uint32(/* id 22, wireType 2 =*/178).string(message.avatar);
writer.uint32(/* id 999, wireType 2 =*/7994).string(message.avatar);
return writer;
};
@@ -1585,14 +1596,18 @@ $root.protos = (function() {
break;
}
case 20: {
message.framesInChState = reader.int32();
break;
}
case 997: {
message.name = reader.string();
break;
}
case 21: {
case 998: {
message.displayName = reader.string();
break;
}
case 22: {
case 999: {
message.avatar = reader.string();
break;
}
@@ -1688,6 +1703,9 @@ $root.protos = (function() {
if (message.inAir != null && message.hasOwnProperty("inAir"))
if (typeof message.inAir !== "boolean")
return "inAir: boolean expected";
if (message.framesInChState != null && message.hasOwnProperty("framesInChState"))
if (!$util.isInteger(message.framesInChState))
return "framesInChState: integer expected";
if (message.name != null && message.hasOwnProperty("name"))
if (!$util.isString(message.name))
return "name: string expected";
@@ -1750,6 +1768,8 @@ $root.protos = (function() {
message.characterState = object.characterState | 0;
if (object.inAir != null)
message.inAir = Boolean(object.inAir);
if (object.framesInChState != null)
message.framesInChState = object.framesInChState | 0;
if (object.name != null)
message.name = String(object.name);
if (object.displayName != null)
@@ -1792,6 +1812,7 @@ $root.protos = (function() {
object.maxHp = 0;
object.characterState = 0;
object.inAir = false;
object.framesInChState = 0;
object.name = "";
object.displayName = "";
object.avatar = "";
@@ -1834,6 +1855,8 @@ $root.protos = (function() {
object.characterState = message.characterState;
if (message.inAir != null && message.hasOwnProperty("inAir"))
object.inAir = message.inAir;
if (message.framesInChState != null && message.hasOwnProperty("framesInChState"))
object.framesInChState = message.framesInChState;
if (message.name != null && message.hasOwnProperty("name"))
object.name = message.name;
if (message.displayName != null && message.hasOwnProperty("displayName"))