1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00
This commit is contained in:
Robin Appelman 2021-07-25 17:04:50 +02:00
commit 43b7270fcd
29 changed files with 3818 additions and 76 deletions

251
Cargo.lock generated
View file

@ -80,28 +80,31 @@ dependencies = [
[[package]] [[package]]
name = "bitbuffer" name = "bitbuffer"
version = "0.10.2" version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29a6edc6bf48f16337689fb5122a6407713ecc23e57fbbcfde367c51fdb6aec1"
dependencies = [ dependencies = [
"bitbuffer_derive", "bitbuffer_derive",
"err-derive", "err-derive",
"memchr", "memchr",
"num-traits 0.2.14", "num-traits 0.2.14",
"serde", "serde",
"wasm-bindgen",
] ]
[[package]] [[package]]
name = "bitbuffer_derive" name = "bitbuffer_derive"
version = "0.10.0" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4090254bfbc71442ff4a426ddba663346e26fd14b55b259281f763e350d7f621"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
"syn_util", "syn_util",
] ]
[[package]]
name = "bumpalo"
version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.69" version = "1.0.69"
@ -147,8 +150,8 @@ version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d" checksum = "5e98e2ad1a782e33928b96fc3948e7c355e5af34ba4de7670fe8bac2a3b2006d"
dependencies = [ dependencies = [
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -157,9 +160,9 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -199,9 +202,9 @@ version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33526f770a27828ce7c2792fdb7cb240220237e0ff12933ed6c23957fc5dd7cf" checksum = "33526f770a27828ce7c2792fdb7cb240220237e0ff12933ed6c23957fc5dd7cf"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -211,10 +214,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dcc7f65832b62ed38939f98966824eb6294911c3629b0e9a262bfb80836d9686" checksum = "dcc7f65832b62ed38939f98966824eb6294911c3629b0e9a262bfb80836d9686"
dependencies = [ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"rustversion", "rustversion",
"syn", "syn 1.0.74",
"synstructure", "synstructure",
] ]
@ -290,6 +293,15 @@ version = "0.2.98"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790" checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
[[package]]
name = "log"
version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "main_error" name = "main_error"
version = "0.1.1" version = "0.1.1"
@ -318,9 +330,9 @@ version = "0.1.15"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b884e0f4a7a80970539a7757902675ce503d98615f5b564564b4bd0236f7f36" checksum = "3b884e0f4a7a80970539a7757902675ce503d98615f5b564564b4bd0236f7f36"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -425,9 +437,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1def5a3f69d4707d8a040b12785b98029a39e8c610ae685c7f6265669767482" checksum = "b1def5a3f69d4707d8a040b12785b98029a39e8c610ae685c7f6265669767482"
dependencies = [ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -472,12 +484,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ad30302271e65d661910580baf25e874cd92c4595ddbed74d1ec9b2fdfaae64b" checksum = "ad30302271e65d661910580baf25e874cd92c4595ddbed74d1ec9b2fdfaae64b"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"regex", "regex",
"regex-syntax", "regex-syntax",
"structmeta", "structmeta",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -509,9 +521,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
dependencies = [ dependencies = [
"proc-macro-error-attr", "proc-macro-error-attr",
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
"version_check", "version_check",
] ]
@ -521,18 +533,36 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"version_check", "version_check",
] ]
[[package]]
name = "proc-macro2"
version = "0.4.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759"
dependencies = [
"unicode-xid 0.1.0",
]
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.28" version = "1.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612" checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612"
dependencies = [ dependencies = [
"unicode-xid", "unicode-xid 0.2.2",
]
[[package]]
name = "quote"
version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1"
dependencies = [
"proc-macro2 0.4.30",
] ]
[[package]] [[package]]
@ -541,7 +571,7 @@ version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
] ]
[[package]] [[package]]
@ -594,9 +624,19 @@ version = "1.0.126"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
]
[[package]]
name = "serde_derive_internals"
version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a80c6c0b1ebbcea4ec2c7e9e2e9fa197a425d17f1afec8ba79fcd1352b18ffb"
dependencies = [
"proc-macro2 0.4.30",
"syn 0.15.44",
] ]
[[package]] [[package]]
@ -616,9 +656,9 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5" checksum = "98d0516900518c29efa217c298fa1f4e6c6ffc85ae29fd7f4ee48f176e1a9ed5"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -648,10 +688,10 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b55b4052fd036e3d1fe74ea978426a3f87997ba803e7a8e69ff0cf99f35a720a" checksum = "b55b4052fd036e3d1fe74ea978426a3f87997ba803e7a8e69ff0cf99f35a720a"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"structmeta-derive", "structmeta-derive",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -660,9 +700,20 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f55502dda4b5fd26b33f6810d7493b4f5d7859bca604bd07ff22a523cd257ee" checksum = "3f55502dda4b5fd26b33f6810d7493b4f5d7859bca604bd07ff22a523cd257ee"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
]
[[package]]
name = "syn"
version = "0.15.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5"
dependencies = [
"proc-macro2 0.4.30",
"quote 0.6.13",
"unicode-xid 0.1.0",
] ]
[[package]] [[package]]
@ -671,9 +722,9 @@ version = "1.0.74"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c" checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"unicode-xid", "unicode-xid 0.2.2",
] ]
[[package]] [[package]]
@ -682,9 +733,9 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6754c4559b79657554e9d8a0d56e65e490c76d382b9c23108364ec4125dea23c" checksum = "6754c4559b79657554e9d8a0d56e65e490c76d382b9c23108364ec4125dea23c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -693,10 +744,10 @@ version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa" checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
"unicode-xid", "unicode-xid 0.2.2",
] ]
[[package]] [[package]]
@ -715,9 +766,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b114ece25254e97bf48dd4bfc2a12bad0647adacfe4cae1247a9ca6ad302cec" checksum = "3b114ece25254e97bf48dd4bfc2a12bad0647adacfe4cae1247a9ca6ad302cec"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
"version_check", "version_check",
] ]
@ -744,6 +795,8 @@ dependencies = [
"snap", "snap",
"steamid-ng", "steamid-ng",
"test-case", "test-case",
"wasm-bindgen",
"wasm-typescript-definition",
] ]
[[package]] [[package]]
@ -761,9 +814,9 @@ version = "1.0.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745" checksum = "060d69a0afe7796bf42e9e2ff91f5ee691fb15c53d38b4b62a9a53eb23164745"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2 1.0.28",
"quote", "quote 1.0.9",
"syn", "syn 1.0.74",
] ]
[[package]] [[package]]
@ -775,6 +828,12 @@ dependencies = [
"serde", "serde",
] ]
[[package]]
name = "unicode-xid"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
[[package]] [[package]]
name = "unicode-xid" name = "unicode-xid"
version = "0.2.2" version = "0.2.2"
@ -787,6 +846,74 @@ version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
[[package]]
name = "wasm-bindgen"
version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900"
dependencies = [
"bumpalo",
"lazy_static",
"log",
"proc-macro2 1.0.28",
"quote 1.0.9",
"syn 1.0.74",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4"
dependencies = [
"quote 1.0.9",
"wasm-bindgen-macro-support",
]
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97"
dependencies = [
"proc-macro2 1.0.28",
"quote 1.0.9",
"syn 1.0.74",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.74"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f"
[[package]]
name = "wasm-typescript-definition"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8465124a2881b8f87feab575a519c181c9801641d772d253fee64a0adbca2e5"
dependencies = [
"proc-macro2 0.4.30",
"quote 0.6.13",
"serde",
"serde_derive",
"serde_derive_internals",
"syn 0.15.44",
]
[[package]] [[package]]
name = "winapi" name = "winapi"
version = "0.3.9" version = "0.3.9"

View file

@ -21,7 +21,7 @@ name = "reencode_demo"
path = "src/bin/reencode.rs" path = "src/bin/reencode.rs"
[dependencies] [dependencies]
bitbuffer = { version = "0.10", features = ["serde"] } bitbuffer = { version = "0.10", features = ["serde"], path = "../../bitbuffer" }
num_enum = "0.5" num_enum = "0.5"
num-traits = "0.2" num-traits = "0.2"
enumflags2 = { version = "0.7", features = ["serde"] } enumflags2 = { version = "0.7", features = ["serde"] }
@ -37,6 +37,11 @@ better-panic = { version = "0.2", optional = true }
no-panic = { version = "0.1", optional = true } no-panic = { version = "0.1", optional = true }
fnv = "1" fnv = "1"
steamid-ng = "1" steamid-ng = "1"
wasm-bindgen = { version = "0.2", optional = true }
wasm-typescript-definition = { version = "0.1", optional = true }
[features]
wasm = ["wasm-bindgen", "bitbuffer/wasm-bindgen", "wasm-typescript-definition"]
[dev-dependencies] [dev-dependencies]
pretty_assertions = "0.7" pretty_assertions = "0.7"

7
codegen/Cargo.lock generated
View file

@ -95,8 +95,6 @@ dependencies = [
[[package]] [[package]]
name = "bitbuffer" name = "bitbuffer"
version = "0.10.2" version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "29a6edc6bf48f16337689fb5122a6407713ecc23e57fbbcfde367c51fdb6aec1"
dependencies = [ dependencies = [
"bitbuffer_derive", "bitbuffer_derive",
"err-derive", "err-derive",
@ -108,8 +106,6 @@ dependencies = [
[[package]] [[package]]
name = "bitbuffer_derive" name = "bitbuffer_derive"
version = "0.10.0" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4090254bfbc71442ff4a426ddba663346e26fd14b55b259281f763e350d7f621"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -236,6 +232,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8672257d642ffdd235f6e9c723c2326ac1253c8f3c022e7cfd2e57da55b1131" checksum = "a8672257d642ffdd235f6e9c723c2326ac1253c8f3c022e7cfd2e57da55b1131"
dependencies = [ dependencies = [
"enumflags2_derive", "enumflags2_derive",
"serde",
] ]
[[package]] [[package]]
@ -898,7 +895,7 @@ dependencies = [
[[package]] [[package]]
name = "tf-demo-parser" name = "tf-demo-parser"
version = "0.3.0" version = "0.3.1"
dependencies = [ dependencies = [
"bitbuffer", "bitbuffer",
"enumflags2", "enumflags2",

File diff suppressed because it is too large Load diff

View file

@ -230,6 +230,8 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
use crate::{ParseError, Result}; use crate::{ParseError, Result};
use bitbuffer::{BitRead, LittleEndian, BitWrite, BitWriteStream}; use bitbuffer::{BitRead, LittleEndian, BitWrite, BitWriteStream};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
); );
let event_definitions = events.iter().map(|event| { let event_definitions = events.iter().map(|event| {
@ -264,6 +266,10 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
}; };
quote!( quote!(
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize)]
pub struct #name { pub struct #name {
#(#fields)* #(#fields)*
@ -379,12 +385,21 @@ pub fn generate_game_events(demo: Demo) -> TokenStream {
#(#event_definitions)* #(#event_definitions)*
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum GameEvent { pub enum GameEvent {
#(#event_variants)* #(#event_variants)*
Unknown(RawGameEvent), Unknown(RawGameEvent),
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum GameEventType { pub enum GameEventType {
#(#event_types)* #(#event_types)*

File diff suppressed because it is too large Load diff

View file

@ -1,14 +1,18 @@
use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize};
use crate::{GameEventError, Result, Stream};
pub use super::gameevent_gen::{GameEvent, GameEventType}; pub use super::gameevent_gen::{GameEvent, GameEventType};
use crate::demo::handle_utf8_error; use crate::demo::handle_utf8_error;
use crate::demo::message::gameevent::GameEventTypeId; use crate::demo::message::gameevent::GameEventTypeId;
use crate::{GameEventError, Result, Stream};
use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian};
use parse_display::Display; use parse_display::Display;
use serde::{Deserialize, Serialize};
use std::cmp::Ordering; use std::cmp::Ordering;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub struct GameEventDefinition { pub struct GameEventDefinition {
pub id: GameEventTypeId, pub id: GameEventTypeId,
@ -36,12 +40,20 @@ impl Ord for GameEventDefinition {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct GameEventEntry { pub struct GameEventEntry {
pub name: String, pub name: String,
pub kind: GameEventValueType, pub kind: GameEventValueType,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, Copy, PartialEq, Display, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, Copy, PartialEq, Display, Serialize, Deserialize)]
#[discriminant_bits = 3] #[discriminant_bits = 3]
pub enum GameEventValueType { pub enum GameEventValueType {
@ -55,6 +67,10 @@ pub enum GameEventValueType {
Local = 7, Local = 7,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum GameEventValue { pub enum GameEventValue {
String(String), String(String),
@ -155,6 +171,10 @@ impl EventValue for () {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct RawGameEvent { pub struct RawGameEvent {
pub event_type: GameEventType, pub event_type: GameEventType,

View file

@ -1,6 +1,12 @@
use bitbuffer::{BitRead, BitWrite}; use bitbuffer::{BitRead, BitWrite};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct Header { pub struct Header {
#[size = 8] #[size = 8]

View file

@ -1,10 +1,15 @@
use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize};
use crate::demo::sendprop::{read_bit_coord, write_bit_coord}; use crate::demo::sendprop::{read_bit_coord, write_bit_coord};
use crate::demo::vector::Vector; use crate::demo::vector::Vector;
use crate::{ReadResult, Stream}; use crate::{ReadResult, Stream};
use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct BSPDecalMessage { pub struct BSPDecalMessage {
pub position: Vector, pub position: Vector,

View file

@ -4,7 +4,13 @@ use serde::{Deserialize, Serialize};
use crate::demo::message::stringtable::log_base2; use crate::demo::message::stringtable::log_base2;
use crate::{ReadResult, Stream}; use crate::{ReadResult, Stream};
use std::cmp::min; use std::cmp::min;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitReadSized, BitWriteSized, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitReadSized, BitWriteSized, Debug, PartialEq, Serialize, Deserialize)]
pub struct ClassInfoEntry { pub struct ClassInfoEntry {
#[size = "input_size"] #[size = "input_size"]
@ -13,6 +19,10 @@ pub struct ClassInfoEntry {
table_name: String, table_name: String,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct ClassInfoMessage { pub struct ClassInfoMessage {
count: u16, count: u16,

View file

@ -1,6 +1,8 @@
use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian}; use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use parse_display::Display; use parse_display::Display;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
use crate::demo::gameevent_gen::GameEventType; use crate::demo::gameevent_gen::GameEventType;
use crate::demo::gamevent::{ use crate::demo::gamevent::{
@ -9,6 +11,10 @@ use crate::demo::gamevent::{
use crate::demo::parser::{Encode, ParseBitSkip}; use crate::demo::parser::{Encode, ParseBitSkip};
use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result, Stream}; use crate::{GameEventError, Parse, ParseError, ParserState, ReadResult, Result, Stream};
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct GameEventMessage { pub struct GameEventMessage {
pub event_type_id: GameEventTypeId, pub event_type_id: GameEventTypeId,
@ -115,6 +121,7 @@ impl ParseBitSkip<'_> for GameEventMessage {
} }
} }
#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
#[derive( #[derive(
BitRead, BitRead,
BitWrite, BitWrite,
@ -144,6 +151,10 @@ impl From<GameEventTypeId> for u16 {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct GameEventListMessage { pub struct GameEventListMessage {
pub event_list: Vec<GameEventDefinition>, pub event_list: Vec<GameEventDefinition>,

View file

@ -2,7 +2,13 @@ use crate::Stream;
/// Messages that consists only of primitives and string and can be derived /// Messages that consists only of primitives and string and can be derived
use bitbuffer::{BitRead, BitWrite, LittleEndian}; use bitbuffer::{BitRead, BitWrite, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct FileMessage { pub struct FileMessage {
pub transfer_id: u32, pub transfer_id: u32,
@ -10,6 +16,10 @@ pub struct FileMessage {
pub requested: bool, pub requested: bool,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct NetTickMessage { pub struct NetTickMessage {
pub tick: u32, pub tick: u32,
@ -17,22 +27,38 @@ pub struct NetTickMessage {
pub std_dev: u16, pub std_dev: u16,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct StringCmdMessage { pub struct StringCmdMessage {
pub command: String, pub command: String,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct SignOnStateMessage { pub struct SignOnStateMessage {
pub state: u8, pub state: u8,
pub count: u32, pub count: u32,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct PrintMessage { pub struct PrintMessage {
pub value: String, pub value: String,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct ServerInfoMessage { pub struct ServerInfoMessage {
pub version: u16, pub version: u16,
@ -54,17 +80,29 @@ pub struct ServerInfoMessage {
pub replay: bool, pub replay: bool,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct SetPauseMessage { pub struct SetPauseMessage {
pub pause: bool, pub pause: bool,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct SetViewMessage { pub struct SetViewMessage {
#[size = 11] #[size = 11]
pub index: u16, pub index: u16,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct FixAngleMessage { pub struct FixAngleMessage {
pub relative: bool, pub relative: bool,
@ -73,6 +111,10 @@ pub struct FixAngleMessage {
pub z: u16, pub z: u16,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
@ -87,12 +129,17 @@ pub struct EntityMessage<'a> {
pub data: Stream<'a>, pub data: Stream<'a>,
} }
#[cfg_attr(feature = "wasm", wasm_bindgen::prelude::wasm_bindgen)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct PreFetchMessage { pub struct PreFetchMessage {
#[size = 14] #[size = 14]
pub index: u16, pub index: u16,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
@ -103,12 +150,20 @@ pub struct MenuMessage<'a> {
pub index: Stream<'a>, pub index: Stream<'a>,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct GetCvarValueMessage { pub struct GetCvarValueMessage {
pub cookie: u32, pub cookie: u32,
pub value: String, pub value: String,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]

View file

@ -14,6 +14,8 @@ use crate::{Parse, ParserState, Result, Stream};
use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian}; use bitbuffer::{BitRead, BitWrite, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr}; use serde_repr::{Deserialize_repr, Serialize_repr};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
pub mod bspdecal; pub mod bspdecal;
pub mod classinfo; pub mod classinfo;
@ -26,6 +28,10 @@ pub mod tempentities;
pub mod usermessage; pub mod usermessage;
pub mod voice; pub mod voice;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive( #[derive(
BitRead, BitWrite, Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr, BitRead, BitWrite, Debug, Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr,
)] )]
@ -62,6 +68,10 @@ pub enum MessageType {
CmdKeyValues = 32, CmdKeyValues = 32,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub enum Message<'a> { pub enum Message<'a> {

View file

@ -13,7 +13,13 @@ use std::cmp::min;
use std::fmt; use std::fmt;
use std::hint::unreachable_unchecked; use std::hint::unreachable_unchecked;
use std::num::NonZeroU32; use std::num::NonZeroU32;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive( #[derive(
Debug, Debug,
Copy, Copy,
@ -37,6 +43,10 @@ impl From<u32> for EntityId {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive( #[derive(
BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize_repr, Deserialize_repr, BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize_repr, Deserialize_repr,
)] )]
@ -49,6 +59,10 @@ pub enum PVS {
Delete = 3, Delete = 3,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PacketEntity { pub struct PacketEntity {
pub server_class: ClassId, pub server_class: ClassId,
@ -174,6 +188,10 @@ fn test_bit_var_roundtrip() {
bit_var_normal(123456789); bit_var_normal(123456789);
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct PacketEntitiesMessage { pub struct PacketEntitiesMessage {
pub entities: Vec<PacketEntity>, pub entities: Vec<PacketEntity>,

View file

@ -1,8 +1,14 @@
use bitbuffer::{BitRead, BitReadStream, BitWrite, BitWriteStream, Endianness}; use bitbuffer::{BitRead, BitReadStream, BitWrite, BitWriteStream, Endianness};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
use crate::ReadResult; use crate::ReadResult;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitWrite, PartialEq, Serialize, Deserialize)]
pub struct ConVar { pub struct ConVar {
key: String, key: String,
@ -21,6 +27,10 @@ impl<E: Endianness> BitRead<'_, E> for ConVar {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, BitRead, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitRead, PartialEq, Serialize, Deserialize)]
pub struct SetConVarMessage { pub struct SetConVarMessage {
length: u8, length: u8,

View file

@ -13,13 +13,23 @@ use crate::demo::parser::{Encode, ParseBitSkip};
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream}; use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
use std::borrow::Cow; use std::borrow::Cow;
use std::cmp::min; use std::cmp::min;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct CreateStringTableMessage<'a> { pub struct CreateStringTableMessage<'a> {
pub table: StringTable<'a>, pub table: StringTable<'a>,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct StringTableMeta { pub struct StringTableMeta {
pub max_entries: u16, pub max_entries: u16,
@ -235,6 +245,10 @@ fn test_create_string_table_roundtrip() {
); );
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct UpdateStringTableMessage<'a> { pub struct UpdateStringTableMessage<'a> {

View file

@ -8,12 +8,22 @@ use crate::Result;
use crate::{Parse, ParseError, ParserState, Stream}; use crate::{Parse, ParseError, ParserState, Stream};
use bitbuffer::{BitWrite, BitWriteSized, BitWriteStream, LittleEndian}; use bitbuffer::{BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct TempEntitiesMessage { pub struct TempEntitiesMessage {
pub events: Vec<EventInfo>, pub events: Vec<EventInfo>,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct EventInfo { pub struct EventInfo {
pub class_id: ClassId, pub class_id: ClassId,

View file

@ -4,7 +4,13 @@ use serde::{Deserialize, Serialize};
use crate::demo::handle_utf8_error; use crate::demo::handle_utf8_error;
use crate::{ReadResult, Stream}; use crate::{ReadResult, Stream};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[repr(u8)] #[repr(u8)]
#[discriminant_bits = 8] #[discriminant_bits = 8]
@ -70,6 +76,10 @@ pub enum UserMessageType {
Unknown = 255, Unknown = 255,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub enum UserMessage<'a> { pub enum UserMessage<'a> {
@ -159,6 +169,10 @@ fn test_user_message_roundtrip() {
}))); })));
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)] #[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq)]
pub enum ChatMessageKind { pub enum ChatMessageKind {
#[serde(rename = "TF_Chat_All")] #[serde(rename = "TF_Chat_All")]
@ -205,6 +219,10 @@ impl BitWrite<LittleEndian> for ChatMessageKind {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SayText2Message { pub struct SayText2Message {
pub client: u8, pub client: u8,
@ -313,6 +331,10 @@ fn test_say_text2_roundtrip() {
}); });
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[discriminant_bits = 8] #[discriminant_bits = 8]
pub enum HudTextLocation { pub enum HudTextLocation {
@ -322,6 +344,10 @@ pub enum HudTextLocation {
PrintCenter, PrintCenter,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TextMessage { pub struct TextMessage {
pub location: HudTextLocation, pub location: HudTextLocation,
@ -329,6 +355,10 @@ pub struct TextMessage {
pub substitute: [String; 4], pub substitute: [String; 4],
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ResetHudMessage { pub struct ResetHudMessage {
pub data: u8, pub data: u8,
@ -339,6 +369,10 @@ pub struct TrainMessage {
pub data: u8, pub data: u8,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct VoiceSubtitleMessage { pub struct VoiceSubtitleMessage {
client: u8, client: u8,
@ -346,6 +380,10 @@ pub struct VoiceSubtitleMessage {
item: u8, item: u8,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ShakeMessage { pub struct ShakeMessage {
command: u8, command: u8,
@ -354,6 +392,10 @@ pub struct ShakeMessage {
duration: f32, duration: f32,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct UnknownUserMessage<'a> { pub struct UnknownUserMessage<'a> {

View file

@ -1,8 +1,14 @@
use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian}; use bitbuffer::{BitRead, BitWrite, BitWriteSized, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
use crate::{ReadResult, Stream}; use crate::{ReadResult, Stream};
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct VoiceInitMessage { pub struct VoiceInitMessage {
codec: String, codec: String,
@ -58,6 +64,10 @@ fn test_voice_init_roundtrip() {
}); });
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
@ -69,6 +79,10 @@ pub struct VoiceDataMessage<'a> {
data: Stream<'a>, data: Stream<'a>,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct ParseSoundsMessage<'a> { pub struct ParseSoundsMessage<'a> {

View file

@ -1,7 +1,13 @@
use crate::{ReadResult, Stream}; use crate::{ReadResult, Stream};
use bitbuffer::{BitRead, BitWrite, LittleEndian}; use bitbuffer::{BitRead, BitWrite, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct ConsoleCmdPacket { pub struct ConsoleCmdPacket {
pub tick: u32, pub tick: u32,

View file

@ -9,7 +9,13 @@ use serde::{Deserialize, Serialize};
use std::cmp::min; use std::cmp::min;
use std::convert::TryFrom; use std::convert::TryFrom;
use std::iter::once; use std::iter::once;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive( #[derive(
BitRead, BitRead,
BitWrite, BitWrite,
@ -46,6 +52,10 @@ impl From<ClassId> for u16 {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, PartialEq, Eq, Hash, Debug, Serialize, Deserialize, Clone, Display)] #[derive(BitRead, BitWrite, PartialEq, Eq, Hash, Debug, Serialize, Deserialize, Clone, Display)]
pub struct ServerClassName(String); pub struct ServerClassName(String);
@ -67,6 +77,10 @@ impl From<&str> for ServerClassName {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ServerClass { pub struct ServerClass {
pub id: ClassId, pub id: ClassId,
@ -74,6 +88,10 @@ pub struct ServerClass {
pub data_table: SendTableName, pub data_table: SendTableName,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive( #[derive(
BitRead, BitRead,
BitWrite, BitWrite,
@ -109,6 +127,10 @@ impl From<&str> for SendTableName {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ParseSendTable { pub struct ParseSendTable {
pub name: SendTableName, pub name: SendTableName,
@ -331,6 +353,10 @@ impl ParseSendTable {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendTable { pub struct SendTable {
pub name: SendTableName, pub name: SendTableName,
@ -339,6 +365,10 @@ pub struct SendTable {
pub flattened_props: Vec<SendPropDefinition>, pub flattened_props: Vec<SendPropDefinition>,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct DataTablePacket { pub struct DataTablePacket {
pub tick: u32, pub tick: u32,

View file

@ -5,7 +5,13 @@ use crate::demo::message::{Message, MessageType};
use crate::demo::parser::Encode; use crate::demo::parser::Encode;
use crate::demo::vector::Vector; use crate::demo::vector::Vector;
use crate::{Parse, ParserState, ReadResult, Result, Stream}; use crate::{Parse, ParserState, ReadResult, Result, Stream};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize)]
pub struct MessagePacketMeta { pub struct MessagePacketMeta {
pub flags: u32, // TODO pub flags: u32, // TODO
@ -14,6 +20,10 @@ pub struct MessagePacketMeta {
pub sequence_out: u32, pub sequence_out: u32,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct MessagePacket<'a> { pub struct MessagePacket<'a> {
@ -22,6 +32,10 @@ pub struct MessagePacket<'a> {
pub meta: MessagePacketMeta, pub meta: MessagePacketMeta,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)] #[derive(Clone, Debug, PartialEq, Default, Serialize, Deserialize)]
pub struct ViewAngles { pub struct ViewAngles {
pub origin: (Vector, Vector), pub origin: (Vector, Vector),

View file

@ -19,7 +19,13 @@ pub mod stop;
pub mod stringtable; pub mod stringtable;
pub mod synctick; pub mod synctick;
pub mod usercmd; pub mod usercmd;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub enum Packet<'a> { pub enum Packet<'a> {
@ -48,6 +54,10 @@ impl Packet<'_> {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, Copy, Eq, PartialEq)] #[derive(BitRead, BitWrite, Debug, Clone, Copy, Eq, PartialEq)]
#[discriminant_bits = 8] #[discriminant_bits = 8]
#[repr(u8)] #[repr(u8)]

View file

@ -1,6 +1,12 @@
use bitbuffer::{BitRead, BitWrite}; use bitbuffer::{BitRead, BitWrite};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize)] #[derive(Debug, BitRead, BitWrite, PartialEq, Serialize, Deserialize)]
pub struct StopPacket { pub struct StopPacket {
#[size = 24] #[size = 24]

View file

@ -7,7 +7,13 @@ use crate::demo::parser::Encode;
use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream}; use crate::{Parse, ParseError, ParserState, ReadResult, Result, Stream};
use std::borrow::{Borrow, Cow}; use std::borrow::{Borrow, Cow};
use std::cmp::min; use std::cmp::min;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
pub struct FixedUserDataSize { pub struct FixedUserDataSize {
#[size = 12] #[size = 12]
@ -16,6 +22,10 @@ pub struct FixedUserDataSize {
pub bits: u8, pub bits: u8,
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct StringTable<'a> { pub struct StringTable<'a> {
@ -145,6 +155,10 @@ fn test_string_table_roundtrip() {
}); });
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Clone, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Clone, Debug, PartialEq, Serialize, Deserialize)]
#[endianness = "LittleEndian"] #[endianness = "LittleEndian"]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
@ -161,6 +175,10 @@ impl<'a> ExtraData<'a> {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Clone, Default, PartialEq, Serialize, Deserialize)] #[derive(Clone, Default, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct StringTableEntry<'a> { pub struct StringTableEntry<'a> {
@ -211,6 +229,10 @@ impl fmt::Debug for StringTableEntry<'_> {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(bound(deserialize = "'a: 'static"))] #[serde(bound(deserialize = "'a: 'static"))]
pub struct StringTablePacket<'a> { pub struct StringTablePacket<'a> {

View file

@ -1,6 +1,12 @@
use bitbuffer::{BitRead, BitWrite}; use bitbuffer::{BitRead, BitWrite};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)] #[derive(BitRead, BitWrite, Debug, PartialEq, Serialize, Deserialize)]
pub struct SyncTickPacket { pub struct SyncTickPacket {
pub tick: u32, pub tick: u32,

View file

@ -1,6 +1,12 @@
use bitbuffer::{BitRead, BitReadStream, BitWrite, BitWriteStream, LittleEndian}; use bitbuffer::{BitRead, BitReadStream, BitWrite, BitWriteStream, LittleEndian};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, Serialize, Deserialize)] #[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct UserCmdPacket { pub struct UserCmdPacket {
pub tick: u32, pub tick: u32,
@ -31,6 +37,10 @@ impl BitWrite<LittleEndian> for UserCmdPacket {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, PartialEq, BitRead, BitWrite, Serialize, Deserialize)] #[derive(Debug, PartialEq, BitRead, BitWrite, Serialize, Deserialize)]
pub struct UserCmd { pub struct UserCmd {
command_number: Option<u32>, command_number: Option<u32>,

View file

@ -17,6 +17,8 @@ use std::convert::{TryFrom, TryInto};
use std::fmt; use std::fmt;
use std::hash::Hash; use std::hash::Hash;
use std::ops::BitOr; use std::ops::BitOr;
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[derive( #[derive(
BitRead, BitRead,
@ -58,6 +60,10 @@ impl From<&str> for SendPropName {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RawSendPropDefinition { pub struct RawSendPropDefinition {
pub prop_type: SendPropType, pub prop_type: SendPropType,
@ -356,6 +362,10 @@ impl BitWrite<LittleEndian> for SendPropFlags {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FloatDefinition { pub enum FloatDefinition {
Coord, Coord,
@ -398,6 +408,10 @@ impl FloatDefinition {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendPropDefinition { pub struct SendPropDefinition {
pub identifier: SendPropIdentifier, pub identifier: SendPropIdentifier,
@ -416,6 +430,10 @@ impl TryFrom<&RawSendPropDefinition> for SendPropDefinition {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
pub enum SendPropParseDefinition { pub enum SendPropParseDefinition {
NormalVarInt { NormalVarInt {
@ -543,6 +561,10 @@ impl TryFrom<&RawSendPropDefinition> for SendPropParseDefinition {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Serialize, Deserialize)] #[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)] #[serde(untagged)]
pub enum SendPropValue { pub enum SendPropValue {
@ -1068,6 +1090,10 @@ impl<'a> TryFrom<&'a SendPropValue> for &'a [SendPropValue] {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive( #[derive(
Debug, Clone, Copy, Ord, PartialOrd, Eq, PartialEq, Hash, Display, Serialize, Deserialize, Debug, Clone, Copy, Ord, PartialOrd, Eq, PartialEq, Hash, Display, Serialize, Deserialize,
)] )]
@ -1086,6 +1112,10 @@ impl From<u64> for SendPropIdentifier {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(Debug, Clone, Display, PartialEq, Serialize, Deserialize)] #[derive(Debug, Clone, Display, PartialEq, Serialize, Deserialize)]
#[display("{index} = {value}")] #[display("{index} = {value}")]
pub struct SendProp { pub struct SendProp {

View file

@ -1,7 +1,13 @@
use bitbuffer::{BitRead, BitWrite}; use bitbuffer::{BitRead, BitWrite};
use parse_display::Display; use parse_display::Display;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[cfg(feature = "wasm")]
use wasm_bindgen::prelude::*;
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)] #[derive(BitRead, BitWrite, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
#[display("({x}, {y}, {z})")] #[display("({x}, {y}, {z})")]
pub struct Vector { pub struct Vector {
@ -16,6 +22,10 @@ impl PartialEq for Vector {
} }
} }
#[cfg_attr(
feature = "wasm",
derive(wasm_typescript_definition::TypescriptDefinition)
)]
#[derive(BitRead, BitWrite, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)] #[derive(BitRead, BitWrite, Debug, Clone, Copy, Default, Serialize, Deserialize, Display)]
#[display("({x}, {y})")] #[display("({x}, {y})")]
pub struct VectorXY { pub struct VectorXY {