Full rewrite
- Removed csflow, as its basically not getting used when high optimization is needed - Fully rewrote radarflow dma logic. - Speed increase from 20hz to over 130 hz over pcileech, thanks to scatter reads and improved caching - Removed docs, because those were for csflow, which is now removed
This commit is contained in:
parent
f186b19255
commit
16f7791628
.cargo
.gitattributes.github/workflows
.gitignore.vscode
Cargo.lockCargo.tomlREADME.mdbuild-docs.shbuild.rscsflow
docs
.lockcrates.jsindex.html
csflow
all.htmlindex.htmlsidebar-items.jsstruct.CBaseEntity.htmlstruct.CPlayerController.htmlstruct.CPlayerPawn.htmlstruct.Vec3.html
help.htmlcontext
enum.Connector.htmlenum.Error.htmlenums
error
index.htmlsidebar-items.jsstruct.CheatCtx.htmlstructs
entity
base_entity
player_controller
player_pawn
vec3
traits
implementors
alloc/string
clap_builder/derive
core
clone
cmp
convert
default
error
fmt
marker
trait.Copy.jstrait.Freeze.jstrait.Send.jstrait.StructuralEq.jstrait.StructuralPartialEq.jstrait.Sync.jstrait.Unpin.js
panic/unwind_safe
csflow/traits
dataview
num_traits/cast
serde
radarflow
2
.cargo/config.toml
Normal file → Executable file
2
.cargo/config.toml
Normal file → Executable file
@ -2,4 +2,4 @@
|
||||
runner = "sudo -E"
|
||||
|
||||
[build]
|
||||
rustflags = ["-C", "target-cpu=native"]
|
||||
rustflags = ["-C", "target-cpu=native"]
|
||||
|
2
.gitattributes
vendored
2
.gitattributes
vendored
@ -1,2 +0,0 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
68
.github/workflows/deploy-docs.yml
vendored
68
.github/workflows/deploy-docs.yml
vendored
@ -1,68 +0,0 @@
|
||||
# Simple workflow for deploying static content to GitHub Pages
|
||||
name: Deploy Docs to Github Pages
|
||||
|
||||
on:
|
||||
# Runs on pushes targeting the default branch
|
||||
push:
|
||||
branches: ["main"]
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
||||
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
# Build docs job
|
||||
build_docs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v4
|
||||
- uses: dtolnay/rust-toolchain@stable
|
||||
- name: Build docs
|
||||
run: cargo doc --no-deps
|
||||
- name: Fix docs
|
||||
run: |
|
||||
rm -rf ./docs
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url=csflow/index.html\">" > target/doc/index.html
|
||||
cp -r target/doc ./docs
|
||||
chmod -c -R +rX "./docs/" | while read line; do
|
||||
echo "::warning title=Invalid file permissions automatically fixed::$line"
|
||||
done
|
||||
- name: Upload pages artifact
|
||||
uses: actions/upload-pages-artifact@v3
|
||||
with:
|
||||
path: './docs'
|
||||
|
||||
# Deploy job
|
||||
deploy:
|
||||
# Add a dependency to the build job
|
||||
needs: build_docs
|
||||
|
||||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
|
||||
permissions:
|
||||
pages: write # to deploy to Pages
|
||||
id-token: write # to verify the deployment originates from an appropriate source
|
||||
|
||||
# Deploy to the github-pages environment
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
# Specify runner + deployment step
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
7
.gitignore
vendored
Normal file → Executable file
7
.gitignore
vendored
Normal file → Executable file
@ -1,5 +1,4 @@
|
||||
/target
|
||||
csflow/src/cs2dumper/offsets.rs
|
||||
csflow/src/cs2dumper/engine2.rs
|
||||
csflow/src/cs2dumper/client.rs
|
||||
webradar_rewrite
|
||||
/src/dma/cs2dumper/offsets.rs
|
||||
/src/dma/cs2dumper/client.rs
|
||||
/src/dma/cs2dumper/engine2.rs
|
26
.vscode/launch.json
vendored
26
.vscode/launch.json
vendored
@ -1,26 +0,0 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"type": "lldb",
|
||||
"request": "launch",
|
||||
"name": "Debug executable 'radarflow'",
|
||||
"cargo": {
|
||||
"args": [
|
||||
"build",
|
||||
"--bin=radarflow",
|
||||
"--package=radarflow"
|
||||
],
|
||||
"filter": {
|
||||
"name": "radarflow",
|
||||
"kind": "bin"
|
||||
}
|
||||
},
|
||||
"args": ["-p", "8081", "-c", "pcileech"],
|
||||
"cwd": "${workspaceFolder}"
|
||||
},
|
||||
]
|
||||
}
|
196
Cargo.lock
generated
Normal file → Executable file
196
Cargo.lock
generated
Normal file → Executable file
@ -132,9 +132,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.77"
|
||||
version = "1.0.79"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9d19de80eff169429ac1e9f48fffb163916b448a44e8e046186232046d9e1f9"
|
||||
checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca"
|
||||
|
||||
[[package]]
|
||||
name = "as_derive_utils"
|
||||
@ -150,13 +150,13 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "async-trait"
|
||||
version = "0.1.75"
|
||||
version = "0.1.77"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98"
|
||||
checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -340,9 +340,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.4.12"
|
||||
version = "4.4.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d"
|
||||
checksum = "52bdc885e4cacc7f7c9eedc1ef6da641603180c783c41a15c264944deeaab642"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
@ -369,7 +369,7 @@ dependencies = [
|
||||
"heck",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -439,9 +439,9 @@ checksum = "69f3b219d28b6e3b4ac87bc1fc522e0803ab22e055da177bff0068c4150c61a6"
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.11"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
|
||||
checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
@ -475,21 +475,6 @@ dependencies = [
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "csflow"
|
||||
version = "0.1.2"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"dataview 1.0.1",
|
||||
"enum-primitive-derive",
|
||||
"log",
|
||||
"memflow",
|
||||
"num-traits",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling"
|
||||
version = "0.20.3"
|
||||
@ -511,7 +496,7 @@ dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -522,7 +507,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -548,9 +533,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
version = "0.3.10"
|
||||
version = "0.3.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc"
|
||||
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
|
||||
dependencies = [
|
||||
"powerfmt",
|
||||
]
|
||||
@ -763,9 +748,9 @@ checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
|
||||
|
||||
[[package]]
|
||||
name = "goblin"
|
||||
version = "0.7.1"
|
||||
version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f27c1b4369c2cd341b5de549380158b105a04c331be5db9110eef7b6d2742134"
|
||||
checksum = "bb07a4ffed2093b118a525b1d8f5204ae274faed5604537caf7135d0f18d9887"
|
||||
dependencies = [
|
||||
"log",
|
||||
"plain",
|
||||
@ -925,17 +910,6 @@ dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "io-lifetimes"
|
||||
version = "1.0.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
"windows-sys 0.48.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ipnet"
|
||||
version = "2.9.0"
|
||||
@ -1018,12 +992,6 @@ dependencies = [
|
||||
"redox_syscall 0.4.1",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.3.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.4.12"
|
||||
@ -1072,8 +1040,9 @@ checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
|
||||
|
||||
[[package]]
|
||||
name = "memflow"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/memflow/memflow.git?rev=c19d870#c19d8707ce980497204ca446fc9565bc344fcc64"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "441730cf8e48d671cead445034c076acc2634fa95ba032feb5be78945c581551"
|
||||
dependencies = [
|
||||
"abi_stable",
|
||||
"bitflags 1.3.2",
|
||||
@ -1103,13 +1072,14 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "memflow-derive"
|
||||
version = "0.2.0"
|
||||
source = "git+https://github.com/memflow/memflow.git?rev=c19d870#c19d8707ce980497204ca446fc9565bc344fcc64"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d766f6681f968c92eb0359fc4bc99039ebe2568df4bb884c7cb7b16023e94d32"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"proc-macro-crate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1282,7 +1252,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1403,7 +1373,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1454,37 +1424,41 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.71"
|
||||
version = "1.0.76"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8"
|
||||
checksum = "95fc56cda0b5c3325f5fbbd7ff9fda9e02bb00bb3dac51252d2f1bfa1cb8cc8c"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.33"
|
||||
version = "1.0.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||
checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "radarflow"
|
||||
version = "0.2.1"
|
||||
version = "0.2.2"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
"clap",
|
||||
"csflow",
|
||||
"dataview 1.0.1",
|
||||
"enum-primitive-derive",
|
||||
"itertools 0.12.0",
|
||||
"local-ip-address",
|
||||
"log",
|
||||
"memflow",
|
||||
"num-traits",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"simple_logger",
|
||||
"tokio",
|
||||
"tokio-timerfd",
|
||||
"tower",
|
||||
"tower-http",
|
||||
"vergen",
|
||||
@ -1623,21 +1597,7 @@ version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
||||
dependencies = [
|
||||
"semver 1.0.20",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "0.37.27"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"errno",
|
||||
"io-lifetimes",
|
||||
"libc",
|
||||
"linux-raw-sys 0.3.8",
|
||||
"windows-sys 0.48.0",
|
||||
"semver 1.0.21",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1649,7 +1609,7 @@ dependencies = [
|
||||
"bitflags 2.4.1",
|
||||
"errno",
|
||||
"libc",
|
||||
"linux-raw-sys 0.4.12",
|
||||
"linux-raw-sys",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
@ -1682,22 +1642,22 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||
|
||||
[[package]]
|
||||
name = "scroll"
|
||||
version = "0.11.0"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04c565b551bafbef4157586fa379538366e4385d42082f255bfd96e4fe8519da"
|
||||
checksum = "6ab8598aa408498679922eff7fa985c25d58a90771bd6be794434c5277eab1a6"
|
||||
dependencies = [
|
||||
"scroll_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "scroll_derive"
|
||||
version = "0.11.1"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
|
||||
checksum = "7f81c2fde025af7e69b1d1420531c8a8811ca898919db177141a85313b1cb932"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -1734,9 +1694,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "1.0.20"
|
||||
version = "1.0.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090"
|
||||
checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0"
|
||||
|
||||
[[package]]
|
||||
name = "semver-parser"
|
||||
@ -1746,29 +1706,29 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.193"
|
||||
version = "1.0.195"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
|
||||
checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.193"
|
||||
version = "1.0.195"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
|
||||
checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.108"
|
||||
version = "1.0.111"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
|
||||
checksum = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
@ -1777,9 +1737,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "serde_path_to_error"
|
||||
version = "0.1.14"
|
||||
version = "0.1.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335"
|
||||
checksum = "ebd154a240de39fdebcf5775d2675c204d7c13cf39a4c697be6493c8e734337c"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"serde",
|
||||
@ -1882,9 +1842,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.43"
|
||||
version = "2.0.48"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53"
|
||||
checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
@ -1947,28 +1907,28 @@ dependencies = [
|
||||
"cfg-if",
|
||||
"fastrand",
|
||||
"redox_syscall 0.4.1",
|
||||
"rustix 0.38.28",
|
||||
"rustix",
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.52"
|
||||
version = "1.0.56"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d"
|
||||
checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.52"
|
||||
version = "1.0.56"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3"
|
||||
checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2002,15 +1962,6 @@ dependencies = [
|
||||
"time-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "timerfd"
|
||||
version = "1.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d3fd47d83ad0b5c7be2e8db0b9d712901ef6ce5afbcc6f676761004f5104ea2"
|
||||
dependencies = [
|
||||
"rustix 0.37.27",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tinyvec"
|
||||
version = "1.6.0"
|
||||
@ -2053,7 +2004,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@ -2066,19 +2017,6 @@ dependencies = [
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-timerfd"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "87eecdae9a9b793843b1df7a64bc136f203443c1ca9889b3c4a39590afa51094"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"libc",
|
||||
"slab",
|
||||
"timerfd",
|
||||
"tokio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio-tungstenite"
|
||||
version = "0.20.1"
|
||||
@ -2384,7 +2322,7 @@ dependencies = [
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
@ -2418,7 +2356,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
"wasm-bindgen-backend",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
@ -2595,9 +2533,9 @@ checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
|
||||
|
||||
[[package]]
|
||||
name = "winnow"
|
||||
version = "0.5.31"
|
||||
version = "0.5.33"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97a4882e6b134d6c28953a387571f1acdd3496830d5e36c5e3a1075580ea641c"
|
||||
checksum = "b7520bbdec7211caa7c4e682eb1fbe07abe20cee6756b6e00f537c82c11816aa"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
@ -2641,5 +2579,5 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.43",
|
||||
"syn 2.0.48",
|
||||
]
|
||||
|
46
Cargo.toml
Normal file → Executable file
46
Cargo.toml
Normal file → Executable file
@ -1,3 +1,43 @@
|
||||
[workspace]
|
||||
members = ["csflow", "radarflow"]
|
||||
resolver = "2"
|
||||
[package]
|
||||
name = "radarflow"
|
||||
version = "0.2.2"
|
||||
authors = ["Janek S <development@superyu.xyz"]
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
# memory
|
||||
memflow = "0.2.0"
|
||||
dataview = "1.0.1"
|
||||
|
||||
# logging
|
||||
log = "0.4.19"
|
||||
simple_logger = "4.2.0"
|
||||
|
||||
# error handling
|
||||
anyhow = "1.0.79"
|
||||
|
||||
# derive stuff
|
||||
enum-primitive-derive = "0.2.2"
|
||||
num-traits = "0.2.16"
|
||||
serde = { version = "1.0.181", features = ["derive"] }
|
||||
serde_json = "1.0.104"
|
||||
clap = { version = "4.3.19", features = ["derive", "string"] }
|
||||
|
||||
# tokio
|
||||
tokio = { version = "1.29.1", features = ["full"] }
|
||||
|
||||
# networking
|
||||
axum = { version = "0.6.20", features = ["ws"] }
|
||||
tower-http = { version = "0.4.3", features = ["fs"] }
|
||||
tower = "0.4.13"
|
||||
local-ip-address = "0.5.4"
|
||||
|
||||
# other
|
||||
itertools = "0.12.0"
|
||||
|
||||
|
||||
[build-dependencies]
|
||||
reqwest = { version = "0.11.18", features = ["blocking"] }
|
||||
vergen = { version = "8.0.0", features = ["build", "cargo", "git", "gitcl", "rustc", "si"] }
|
||||
|
59
README.md
59
README.md
@ -1,16 +1,47 @@
|
||||
# cs2-memflow
|
||||
### What is this?
|
||||
This is a repository for my CS2 cheats which utilize [memflow](https://github.com/memflow/memflow).
|
||||
# radarflow
|
||||
A Web radar for CS2 using [memflow](https://github.com/memflow/memflow)
|
||||
|
||||
### Contents
|
||||
[csflow](csflow/README.md) - Rust library for creating CS2 cheats utilizing memflow
|
||||
[radarflow](radarflow/README.md) - A Web radar for CS2 utilizing memflow
|
||||
## How can I run this?
|
||||
There is two ways to run this, first way is using a KVM/QEMU setup to target a running VM to read memory out of it. The second way is using pcileech hardware, like a PCIe Screamer.
|
||||
|
||||
### Todo
|
||||
- csflow
|
||||
- [ ] Better Documentation with a "getting started"
|
||||
- [ ] Test with pcileech hardware
|
||||
- radarflow
|
||||
- [ ] Test with pcileech hardware
|
||||
- [ ] Optimization
|
||||
- [ ] More useful logging, maybe a TUI to write statistics?
|
||||
### The KVM/QEMU method
|
||||
First, you need to set up a virtual machine on linux using qemu.
|
||||
How to set up a VM on linux is way out of scope for this. You can find plenty of information online on how to do it.
|
||||
|
||||
Before you begin, install the necessary memflow plugins using memflowup from the *stable 0.2.0 channel!*
|
||||
The needed Plugins are `memflow-qemu` and `memflow-win32`
|
||||
|
||||
Clone the repo on your vm host:
|
||||
`git clone https://github.com/superyu1337/radarflow2.git`
|
||||
|
||||
Run radarflow:
|
||||
`cargo run --release`
|
||||
|
||||
For an overview of CLI commands, run this:
|
||||
`cargo run --release -- --help`
|
||||
|
||||
### The pcileech method
|
||||
|
||||
Install your pcileech hardware in your target pc. On your attacking PC, install the necessary memflow plugins using memflowup from the *stable 0.2.0 channel!*
|
||||
The needed Plugins are `memflow-pcileech` and `memflow-win32`.
|
||||
|
||||
Furthermore, you need to install some libraries, depending on your attacking PC's OS.
|
||||
```
|
||||
On Windows you additionally need to supply the proprietary FTD3XX.dll. It can be downloaded from the FTDI Website in the Application Library (DLL) column.
|
||||
|
||||
On Linux you need to check-out and compile the leechcore_ft601_driver_linux project from the LeechCore-Plugins repository. On Linux the leechcore_ft601_driver_linux.so file currently has to be placed in /usr/ or /usr/lib. Alternatively LD_LIBRARY_PATH can be set to the containing path. Check the dlopen documentation for all possible import paths.
|
||||
```
|
||||
|
||||
Clone the repo on your attacking pc:
|
||||
`git clone https://github.com/superyu1337/radarflow2.git`
|
||||
|
||||
Run radarflow:
|
||||
`cargo run --release -- -- connector pcileech`
|
||||
|
||||
For an overview of CLI commands, run this:
|
||||
`cargo run --release -- --help`
|
||||
|
||||
## Detection Status
|
||||
VAC: ✅ (Undetected)
|
||||
FaceIt: ❓ (Unknown, could work with proper spoofing on pcileech method)
|
||||
ESEA: ❓ (Unknown, could work with proper spoofing on pcileech method)
|
||||
|
@ -1,4 +0,0 @@
|
||||
cargo doc --no-deps
|
||||
rm -rf ./docs
|
||||
echo "<meta http-equiv=\"refresh\" content=\"0; url=csflow/index.html\">" > target/doc/index.html
|
||||
cp -r target/doc ./docs
|
17
csflow/build.rs → build.rs
Normal file → Executable file
17
csflow/build.rs → build.rs
Normal file → Executable file
@ -1,5 +1,7 @@
|
||||
use std::error::Error;
|
||||
|
||||
use vergen::EmitBuilder;
|
||||
|
||||
fn download(url: &str, to: &str) -> Result<(), Box<dyn Error>> {
|
||||
let content = reqwest::blocking::get(url)
|
||||
.unwrap_or_else(|_| panic!("Downloading \"{to}\""))
|
||||
@ -16,18 +18,27 @@ fn main() -> Result<(), Box<dyn Error>> {
|
||||
|
||||
download(
|
||||
"https://raw.githubusercontent.com/a2x/cs2-dumper/main/generated/client.dll.rs",
|
||||
"./src/cs2dumper/client.rs"
|
||||
"./src/dma/cs2dumper/client.rs"
|
||||
).expect("Failed to download build file \"client.dll.rs\"");
|
||||
|
||||
download(
|
||||
"https://raw.githubusercontent.com/a2x/cs2-dumper/main/generated/offsets.rs",
|
||||
"./src/cs2dumper/offsets.rs"
|
||||
"./src/dma/cs2dumper/offsets.rs"
|
||||
).expect("Failed to download build file \"offsets.rs\"");
|
||||
|
||||
download(
|
||||
"https://raw.githubusercontent.com/a2x/cs2-dumper/main/generated/engine2.dll.rs",
|
||||
"./src/cs2dumper/engine2.rs"
|
||||
"./src/dma/cs2dumper/engine2.rs"
|
||||
).expect("Failed to download build file \"engine2.dll.rs\"");
|
||||
|
||||
EmitBuilder::builder()
|
||||
.git_sha(true)
|
||||
.git_commit_date()
|
||||
.cargo_debug()
|
||||
.cargo_target_triple()
|
||||
.rustc_semver()
|
||||
.rustc_llvm_version()
|
||||
.emit()?;
|
||||
|
||||
Ok(())
|
||||
}
|
1912
csflow/Cargo.lock
generated
1912
csflow/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,28 +0,0 @@
|
||||
[package]
|
||||
name = "csflow"
|
||||
version = "0.1.2"
|
||||
authors = ["Janek S <development@superyu.xyz>"]
|
||||
edition = "2021"
|
||||
description = "SDK for CS2 cheats utilizing memflow"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
# memory
|
||||
dataview = "1.0.1"
|
||||
memflow = { git = "https://github.com/memflow/memflow.git", rev = "c19d870" }
|
||||
|
||||
# logging
|
||||
log = "0.4.19"
|
||||
|
||||
# error handling
|
||||
thiserror = "1.0.52"
|
||||
|
||||
# derive stuff
|
||||
enum-primitive-derive = "0.2.2"
|
||||
num-traits = "0.2.16"
|
||||
serde = { version = "1.0.181", features = ["derive"] }
|
||||
clap = { version = "4.3.19", features = ["derive", "string"] }
|
||||
|
||||
[build-dependencies]
|
||||
reqwest = { version = "0.11.18", features = ["blocking"] }
|
@ -1,5 +0,0 @@
|
||||
# csflow
|
||||
SDK for CS2 cheats utilizing [memflow](https://github.com/memflow/memflow)
|
||||
|
||||
## Documentation
|
||||
Documentation can be found [here](https://superyu1337.github.io/cs2-memflow/csflow/index.html)
|
@ -1,122 +0,0 @@
|
||||
use ::std::sync::{atomic::{AtomicU8, Ordering, AtomicI32}, Arc};
|
||||
|
||||
use memflow::prelude::v1::*;
|
||||
|
||||
pub const INVALIDATE_ALWAYS: u8 = 0b00000001;
|
||||
pub const INVALIDATE_TICK: u8 = 0b00000010;
|
||||
|
||||
pub struct ExternallyControlledValidator {
|
||||
validator_next_flags: Arc<AtomicU8>,
|
||||
validator_tick_count: Arc<AtomicI32>,
|
||||
}
|
||||
|
||||
impl ExternallyControlledValidator {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
validator_next_flags: Arc::new(AtomicU8::new(INVALIDATE_ALWAYS)),
|
||||
validator_tick_count: Arc::new(AtomicI32::new(0)),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_next_flags(&mut self, flags: u8) {
|
||||
self.validator_next_flags
|
||||
.store(flags as u8, Ordering::SeqCst);
|
||||
}
|
||||
|
||||
pub fn set_tick_count(&mut self, tick_count: i32) {
|
||||
self.validator_tick_count
|
||||
.store(tick_count, Ordering::SeqCst);
|
||||
}
|
||||
|
||||
pub fn validator(&self) -> CustomValidator {
|
||||
CustomValidator::new(
|
||||
self.validator_next_flags.clone(),
|
||||
self.validator_tick_count.clone(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
struct ValidatorSlot {
|
||||
value: i32,
|
||||
flags: u8,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CustomValidator {
|
||||
slots: Vec<ValidatorSlot>,
|
||||
|
||||
// The invalidation flags used for the next read or write.
|
||||
next_flags: Arc<AtomicU8>,
|
||||
next_flags_local: u8,
|
||||
|
||||
// last_count is used to quickly invalidate slots without having to
|
||||
// iterate over all slots and invalidating manually.
|
||||
last_count: usize,
|
||||
|
||||
// tick count is the externally controlled tick number that will
|
||||
// invalidate specific caches when it is increased.
|
||||
tick_count: Arc<AtomicI32>,
|
||||
tick_count_local: i32,
|
||||
}
|
||||
|
||||
impl CustomValidator {
|
||||
pub fn new(next_flags: Arc<AtomicU8>, tick_count: Arc<AtomicI32>) -> Self {
|
||||
Self {
|
||||
slots: vec![],
|
||||
next_flags,
|
||||
next_flags_local: INVALIDATE_ALWAYS,
|
||||
last_count: 0,
|
||||
tick_count,
|
||||
tick_count_local: -1,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl CacheValidator for CustomValidator {
|
||||
// Create a vector containing all slots with a predefined invalid state.
|
||||
fn allocate_slots(&mut self, slot_count: usize) {
|
||||
self.slots.resize(
|
||||
slot_count,
|
||||
ValidatorSlot {
|
||||
value: -1,
|
||||
flags: INVALIDATE_ALWAYS,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// This function is invoked on every batch of memory operations.
|
||||
// This simply updates the internal state and reads the Atomic variables for the upcoming validations.
|
||||
fn update_validity(&mut self) {
|
||||
self.last_count = self.last_count.wrapping_add(1);
|
||||
self.next_flags_local = self.next_flags.load(Ordering::SeqCst);
|
||||
self.tick_count_local = self.tick_count.load(Ordering::SeqCst);
|
||||
}
|
||||
|
||||
// This simply returns true or false if the slot is valid or not.
|
||||
// `last_count` is used here to invalidate slots quickly without requiring to iterate over the entire slot list.
|
||||
fn is_slot_valid(&self, slot_id: usize) -> bool {
|
||||
match self.slots[slot_id].flags {
|
||||
INVALIDATE_ALWAYS => self.slots[slot_id].value == self.last_count as i32,
|
||||
INVALIDATE_TICK => self.slots[slot_id].value == self.tick_count_local as i32,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
// In case the cache is being updates this function marks the slot as being valid.
|
||||
fn validate_slot(&mut self, slot_id: usize) {
|
||||
match self.next_flags_local {
|
||||
INVALIDATE_ALWAYS => self.slots[slot_id].value = self.last_count as i32,
|
||||
INVALIDATE_TICK => self.slots[slot_id].value = self.tick_count_local as i32,
|
||||
_ => (),
|
||||
}
|
||||
|
||||
self.slots[slot_id].flags = self.next_flags_local;
|
||||
}
|
||||
|
||||
// In case a slot has to be freed this function resets it to the default values.
|
||||
fn invalidate_slot(&mut self, slot_id: usize) {
|
||||
self.slots[slot_id].value = -1;
|
||||
self.slots[slot_id].flags = INVALIDATE_ALWAYS;
|
||||
}
|
||||
}
|
@ -1,144 +0,0 @@
|
||||
use memflow::{plugins::{IntoProcessInstanceArcBox, Inventory, ConnectorArgs, args::Args}, os::{ModuleInfo, Os, Process}, mem::{MemoryView, CachedView}, types::Address};
|
||||
use memflow::prelude::v1::size;
|
||||
|
||||
use crate::{error::Error, structs::{CPlayerController, CBaseEntity, GlobalVars, GameRules}, cs2dumper, traits::MemoryClass};
|
||||
|
||||
use self::cached_view::{ExternallyControlledValidator, CustomValidator, INVALIDATE_TICK};
|
||||
|
||||
pub mod cached_view;
|
||||
|
||||
pub struct CheatCtx {
|
||||
pub process: IntoProcessInstanceArcBox<'static>,
|
||||
pub memory: CachedView<'static, IntoProcessInstanceArcBox<'static>, CustomValidator>,
|
||||
pub cache_controller: ExternallyControlledValidator,
|
||||
pub client_module: ModuleInfo,
|
||||
pub engine_module: ModuleInfo,
|
||||
}
|
||||
|
||||
impl CheatCtx {
|
||||
fn check_version(&mut self) -> Result<(), Error> {
|
||||
let game_build_number: u32 = self.memory.read(self.engine_module.base + cs2dumper::offsets::engine2_dll::dwBuildNumber)?;
|
||||
let offset_build_number = cs2dumper::offsets::game_info::buildNumber;
|
||||
|
||||
if game_build_number as usize != offset_build_number {
|
||||
return Err(Error::GameVersionMismatch(game_build_number as usize, offset_build_number))
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn setup(connector: Connector, pcileech_device: String) -> Result<CheatCtx, Error> {
|
||||
let inventory = Inventory::scan();
|
||||
|
||||
let os = {
|
||||
if connector == Connector::Pcileech {
|
||||
let args = Args::new()
|
||||
.insert("device", &pcileech_device);
|
||||
|
||||
let connector_args = ConnectorArgs::new(None, args, None);
|
||||
|
||||
inventory.builder()
|
||||
.connector(&connector.to_string())
|
||||
.args(connector_args)
|
||||
.os("win32")
|
||||
.build()?
|
||||
} else {
|
||||
inventory.builder()
|
||||
.connector(&connector.to_string())
|
||||
.os("win32")
|
||||
.build()?
|
||||
}
|
||||
};
|
||||
|
||||
let mut process = os.into_process_by_name("cs2.exe")?;
|
||||
|
||||
let client_module = process.module_by_name("client.dll")?;
|
||||
|
||||
let engine_module = process.module_by_name("engine2.dll")?;
|
||||
|
||||
// Create the validator
|
||||
let mut validator_controller = ExternallyControlledValidator::new();
|
||||
let validator = validator_controller.validator();
|
||||
|
||||
// Create CachedView over the processes MemoryView
|
||||
let proc_arch = process.info().proc_arch;
|
||||
let cached_process = CachedView::builder(process.clone())
|
||||
.arch(proc_arch)
|
||||
.validator(validator)
|
||||
.cache_size(size::mb(10))
|
||||
.build()?;
|
||||
|
||||
validator_controller.set_next_flags(INVALIDATE_TICK);
|
||||
|
||||
let mut ctx = Self {
|
||||
process: process,
|
||||
memory: cached_process,
|
||||
cache_controller: validator_controller,
|
||||
client_module,
|
||||
engine_module,
|
||||
};
|
||||
|
||||
ctx.check_version()?;
|
||||
|
||||
Ok(ctx)
|
||||
}
|
||||
|
||||
pub fn get_local(&mut self) -> Result<CPlayerController, Error> {
|
||||
let ptr = self.memory.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwLocalPlayerController)?;
|
||||
Ok(CPlayerController::new(ptr))
|
||||
}
|
||||
|
||||
pub fn get_plantedc4(&mut self) -> Result<CBaseEntity, Error> {
|
||||
let ptr = self.memory.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwPlantedC4)?;
|
||||
let ptr2 = self.memory.read_addr64(ptr)?;
|
||||
Ok(CBaseEntity::new(ptr2))
|
||||
}
|
||||
|
||||
pub fn get_globals(&mut self) -> Result<GlobalVars, Error> {
|
||||
let ptr = self.memory.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGlobalVars)?;
|
||||
Ok(GlobalVars::new(ptr))
|
||||
}
|
||||
|
||||
pub fn get_gamerules(&mut self) -> Result<GameRules, Error> {
|
||||
let ptr = self.memory.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGameRules)?;
|
||||
Ok(GameRules::new(ptr))
|
||||
}
|
||||
|
||||
// todo: separate into own class
|
||||
pub fn get_entity_list(&mut self) -> Result<Address, Error> {
|
||||
let ptr = self.memory.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwEntityList)?;
|
||||
Ok(ptr)
|
||||
}
|
||||
|
||||
// todo: separate into own class
|
||||
pub fn highest_entity_index(&mut self) -> Result<i32, Error> {
|
||||
let game_entity_system = self.process.read_addr64(self.client_module.base + cs2dumper::offsets::client_dll::dwGameEntitySystem)?;
|
||||
let highest_index = self.process.read(game_entity_system + cs2dumper::offsets::client_dll::dwGameEntitySystem_getHighestEntityIndex)?;
|
||||
Ok(highest_index)
|
||||
}
|
||||
|
||||
// todo: separate into own class
|
||||
pub fn network_is_ingame(&mut self) -> Result<bool, Error> {
|
||||
let ptr = self.process.read_addr64(self.engine_module.base + cs2dumper::offsets::engine2_dll::dwNetworkGameClient)?;
|
||||
let signonstate: i32 = self.process.read(ptr + cs2dumper::offsets::engine2_dll::dwNetworkGameClient_signOnState)?;
|
||||
Ok(signonstate == 6)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, clap::ValueEnum, Default)]
|
||||
pub enum Connector {
|
||||
#[default]
|
||||
Qemu,
|
||||
Kvm,
|
||||
Pcileech
|
||||
}
|
||||
|
||||
impl ToString for Connector {
|
||||
fn to_string(&self) -> String {
|
||||
match self {
|
||||
Connector::Qemu => String::from("qemu"),
|
||||
Connector::Kvm => String::from("kvm"),
|
||||
Connector::Pcileech => String::from("pcileech"),
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
mod player_type;
|
||||
mod teamid;
|
||||
|
||||
pub use player_type::PlayerType;
|
||||
pub use teamid::TeamID;
|
@ -1,39 +0,0 @@
|
||||
use memflow::types::Address;
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::structs::Vec3;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum Error {
|
||||
/// Game version mismatch.
|
||||
/// First arg is the game version, second is the offset version.
|
||||
#[error("version mismatch, game has version {0}, but offsets have version {1}")]
|
||||
GameVersionMismatch(usize, usize),
|
||||
|
||||
#[error("memflow error: {0}")]
|
||||
Memflow(#[from] memflow::error::Error),
|
||||
|
||||
#[error("memflow partial error when reading address: {0}")]
|
||||
MemflowPartialAddress(#[from] memflow::error::PartialError<Address>),
|
||||
|
||||
#[error("memflow partial error when reading Vec3: {0}")]
|
||||
MemflowPartialVec3(#[from] memflow::error::PartialError<Vec3>),
|
||||
|
||||
#[error("memflow partial error when reading String: {0}")]
|
||||
MemflowPartialString(#[from] memflow::error::PartialError<String>),
|
||||
|
||||
#[error("memflow partial error when reading i32: {0}")]
|
||||
MemflowPartiali32(#[from] memflow::error::PartialError<i32>),
|
||||
|
||||
#[error("memflow partial error when reading u32: {0}")]
|
||||
MemflowPartialu32(#[from] memflow::error::PartialError<u32>),
|
||||
|
||||
#[error("memflow partial error when reading f32: {0}")]
|
||||
MemflowPartialf32(#[from] memflow::error::PartialError<f32>),
|
||||
|
||||
#[error("memflow partial error when reading u8: {0}")]
|
||||
MemflowPartialu8(#[from] memflow::error::PartialError<u8>),
|
||||
|
||||
#[error("memflow partial error when reading Vec<u8>: {0}")]
|
||||
MemflowPartialVecu8(#[from] memflow::error::PartialError<Vec<u8>>)
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
#![allow(dead_code)]
|
||||
|
||||
mod cs2dumper;
|
||||
mod context;
|
||||
mod error;
|
||||
|
||||
pub mod structs;
|
||||
pub mod traits;
|
||||
pub mod enums;
|
||||
|
||||
pub use context::*;
|
||||
pub use error::Error;
|
||||
|
||||
pub use memflow::prelude as memflow;
|
@ -1,82 +0,0 @@
|
||||
use memflow::{types::Address, mem::MemoryView};
|
||||
use crate::{CheatCtx, Error, cs2dumper, traits::{BaseEntity, MemoryClass}, structs::Vec3};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct CBaseEntity(Address);
|
||||
|
||||
impl MemoryClass for CBaseEntity {
|
||||
fn ptr(&self) -> Address {
|
||||
self.0
|
||||
}
|
||||
|
||||
fn new(ptr: Address) -> Self {
|
||||
Self(ptr)
|
||||
}
|
||||
}
|
||||
|
||||
impl BaseEntity for CBaseEntity {
|
||||
fn from_index(ctx: &mut CheatCtx, entity_list: Address, index: i32) -> Result<Option<CBaseEntity>, Error> {
|
||||
let list_entry = ctx.memory.read_addr64(entity_list + 8 * (index >> 9) + 16)?;
|
||||
if list_entry.is_null() && !list_entry.is_valid() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
let player_ptr = ctx.memory.read_addr64(list_entry + 120 * (index & 0x1FF))?;
|
||||
if player_ptr.is_null() && !player_ptr.is_valid() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
Ok(Some(Self::new(player_ptr)))
|
||||
}
|
||||
|
||||
fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
|
||||
let node = ctx.memory.read_addr64(self.0 + cs2dumper::client::C_BaseEntity::m_pGameSceneNode)?;
|
||||
Ok(ctx.memory.read(node + cs2dumper::client::CGameSceneNode::m_vecAbsOrigin)?)
|
||||
}
|
||||
|
||||
fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error> {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
|
||||
Ok(ctx.memory.read_char_string_n(class_name_ptr, 32)?)
|
||||
}
|
||||
|
||||
fn next_by_class(&self, ctx: &mut CheatCtx) -> Result<Self, Error> where Self: std::marker::Sized {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let next_by_class_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_pNextByClass)?;
|
||||
let entity_ptr = ctx.process.read_addr64(next_by_class_ptr)?;
|
||||
Ok(Self(entity_ptr))
|
||||
}
|
||||
|
||||
fn previous_by_class(&self, ctx: &mut CheatCtx) -> Result<Self, Error> where Self: std::marker::Sized {
|
||||
let entity_identity_ptr = ctx.memory.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let next_by_class_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_pPrevByClass)?;
|
||||
let entity_ptr = ctx.process.read_addr64(next_by_class_ptr)?;
|
||||
Ok(Self(entity_ptr))
|
||||
}
|
||||
}
|
||||
|
||||
impl CBaseEntity {
|
||||
pub fn to_player_controller(&self) -> super::CPlayerController {
|
||||
super::CPlayerController::new(self.0)
|
||||
}
|
||||
|
||||
/// Professionally engineered function to quickly check if the entity has class name "weapon_c4"
|
||||
pub fn is_dropped_c4(&self, ctx: &mut CheatCtx) -> Result<bool, Error> {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
|
||||
|
||||
let data = ctx.process.read_raw(class_name_ptr + 7, 2)?;
|
||||
let is_c4 = data == "c4".as_bytes();
|
||||
Ok(is_c4)
|
||||
}
|
||||
|
||||
/// Professionally engineered function to quickly check if the entity has class name "cs_player_controller"
|
||||
pub fn is_cs_player_controller(&self, ctx: &mut CheatCtx) -> Result<bool, Error> {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
|
||||
|
||||
let data = ctx.process.read_raw(class_name_ptr, 20)?;
|
||||
let is_controller = data == "cs_player_controller".as_bytes();
|
||||
Ok(is_controller)
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
mod base_entity;
|
||||
mod player_controller;
|
||||
mod player_pawn;
|
||||
|
||||
pub use base_entity::CBaseEntity;
|
||||
pub use player_controller::CPlayerController;
|
||||
pub use player_pawn::CPlayerPawn;
|
@ -1,114 +0,0 @@
|
||||
use memflow::{types::Address, mem::MemoryView};
|
||||
use num_traits::FromPrimitive;
|
||||
|
||||
use crate::{CheatCtx, Error, cs2dumper, structs::Vec3, traits::{MemoryClass, BaseEntity}, enums::{TeamID, PlayerType}};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct CPlayerController(Address);
|
||||
|
||||
impl MemoryClass for CPlayerController {
|
||||
fn ptr(&self) -> Address {
|
||||
self.0
|
||||
}
|
||||
|
||||
fn new(ptr: Address) -> Self {
|
||||
Self(ptr)
|
||||
}
|
||||
}
|
||||
|
||||
impl BaseEntity for CPlayerController {
|
||||
fn from_index(ctx: &mut CheatCtx, entity_list: Address, index: i32) -> Result<Option<CPlayerController>, Error> {
|
||||
let list_entry = ctx.memory.read_addr64(entity_list + 8 * (index >> 9) + 16)?;
|
||||
if list_entry.is_null() && !list_entry.is_valid() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
let player_ptr = ctx.memory.read_addr64(list_entry + 120 * (index & 0x1FF))?;
|
||||
if player_ptr.is_null() && !player_ptr.is_valid() {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
Ok(Some(Self::new(player_ptr)))
|
||||
}
|
||||
|
||||
/// This function is slower because of an additional pointer read, use pawn.pos() instead.
|
||||
fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
|
||||
let node = ctx.memory.read_addr64(self.0 + cs2dumper::client::C_BaseEntity::m_pGameSceneNode)?;
|
||||
Ok(ctx.memory.read(node + cs2dumper::client::CGameSceneNode::m_vecAbsOrigin)?)
|
||||
}
|
||||
|
||||
fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error> {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
|
||||
Ok(ctx.memory.read_char_string_n(class_name_ptr, 32)?)
|
||||
}
|
||||
|
||||
fn next_by_class(&self, ctx: &mut CheatCtx) -> Result<Self, Error> where Self: std::marker::Sized {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let next_by_class_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_pNextByClass)?;
|
||||
|
||||
let class_name_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_designerName)?;
|
||||
let class_name= ctx.process.read_char_string_n(class_name_ptr, 32)?;
|
||||
|
||||
println!("class_name: {}", class_name);
|
||||
|
||||
let stringable_index: i32 = ctx.process.read(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_nameStringableIndex)?;
|
||||
println!("stringable_index: {}", stringable_index);
|
||||
|
||||
let entity_ptr = ctx.process.read_addr64(next_by_class_ptr)?;
|
||||
println!("entity_ptr: {}", entity_ptr);
|
||||
Ok(Self(entity_ptr))
|
||||
}
|
||||
|
||||
fn previous_by_class(&self, ctx: &mut CheatCtx) -> Result<Self, Error> where Self: std::marker::Sized {
|
||||
let entity_identity_ptr = ctx.process.read_addr64(self.0 + cs2dumper::client::CEntityInstance::m_pEntity)?;
|
||||
let next_by_class_ptr = ctx.process.read_addr64(entity_identity_ptr + cs2dumper::client::CEntityIdentity::m_pPrevByClass)?;
|
||||
let entity_ptr = ctx.process.read_addr64(next_by_class_ptr)?;
|
||||
Ok(Self(entity_ptr))
|
||||
}
|
||||
}
|
||||
|
||||
impl CPlayerController {
|
||||
pub fn get_pawn(&self, ctx: &mut CheatCtx, entity_list: Address) -> Result<Option<super::CPlayerPawn>, Error> {
|
||||
let uhandle = ctx.memory.read(self.0 + cs2dumper::client::CCSPlayerController::m_hPlayerPawn)?;
|
||||
super::CPlayerPawn::from_uhandle(ctx, entity_list, uhandle)
|
||||
}
|
||||
|
||||
// Technically something that should be in the BaseEntity trait, but we are only gonna use it on CPlayerController
|
||||
pub fn get_team(&self, ctx: &mut CheatCtx) -> Result<Option<TeamID>, Error> {
|
||||
let team_num: i32 = ctx.memory.read(self.0 + cs2dumper::client::C_BaseEntity::m_iTeamNum)?;
|
||||
Ok(TeamID::from_i32(team_num))
|
||||
}
|
||||
|
||||
pub fn get_player_type(&self, ctx: &mut CheatCtx, local: &CPlayerController) -> Result<Option<PlayerType>, Error> {
|
||||
if self.0 == local.0 {
|
||||
return Ok(Some(PlayerType::Local))
|
||||
}
|
||||
|
||||
let team = {
|
||||
match self.get_team(ctx)? {
|
||||
Some(t) => t,
|
||||
None => { return Ok(None) },
|
||||
}
|
||||
};
|
||||
|
||||
let local_team = {
|
||||
match local.get_team(ctx)? {
|
||||
Some(t) => t,
|
||||
None => { return Ok(None) },
|
||||
}
|
||||
};
|
||||
|
||||
let player_type = {
|
||||
if team == TeamID::Spectator {
|
||||
PlayerType::Spectator
|
||||
} else if team != local_team {
|
||||
PlayerType::Enemy
|
||||
} else {
|
||||
PlayerType::Team
|
||||
}
|
||||
};
|
||||
|
||||
Ok(Some(player_type))
|
||||
}
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
use memflow::{types::Address, mem::MemoryView};
|
||||
|
||||
use crate::{Error, CheatCtx, cs2dumper, structs::Vec3, traits::MemoryClass};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct CPlayerPawn(Address);
|
||||
|
||||
impl MemoryClass for CPlayerPawn {
|
||||
fn ptr(&self) -> Address {
|
||||
self.0
|
||||
}
|
||||
|
||||
fn new(ptr: Address) -> Self {
|
||||
Self(ptr)
|
||||
}
|
||||
}
|
||||
|
||||
impl CPlayerPawn {
|
||||
pub fn from_uhandle(ctx: &mut CheatCtx, entity_list: Address, uhandle: u32) -> Result<Option<Self>, Error> {
|
||||
let list_entry = ctx.memory.read_addr64(entity_list + 0x8 * ((uhandle & 0x7FFF) >> 9) + 16)?;
|
||||
|
||||
if list_entry.is_null() || !list_entry.is_valid() {
|
||||
Ok(None)
|
||||
} else {
|
||||
let ptr = ctx.memory.read_addr64(list_entry + 120 * (uhandle & 0x1FF))?;
|
||||
Ok(Some(Self(ptr)))
|
||||
}
|
||||
}
|
||||
|
||||
// Todo: Optimize this function: find another way to do this
|
||||
pub fn has_c4(&self, ctx: &mut CheatCtx, entity_list: Address) -> Result<bool, Error> {
|
||||
let mut has_c4 = false;
|
||||
let wep_services = ctx.memory.read_addr64(self.0 + cs2dumper::client::C_BasePlayerPawn::m_pWeaponServices)?;
|
||||
let wep_count: i32 = ctx.memory.read(wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons)?;
|
||||
let wep_base = ctx.memory.read_addr64(wep_services + cs2dumper::client::CPlayer_WeaponServices::m_hMyWeapons + 0x8)?;
|
||||
|
||||
for wep_idx in 0..wep_count {
|
||||
let handle: i32 = ctx.memory.read(wep_base + wep_idx * 0x4)?;
|
||||
if handle == -1 {
|
||||
continue;
|
||||
}
|
||||
|
||||
let list_entry = ctx.memory.read_addr64(entity_list + 0x8 * ((handle & 0x7FFF) >> 9) + 16)?;
|
||||
if let Some(wep_ptr) = {
|
||||
if list_entry.is_null() || !list_entry.is_valid() {
|
||||
None
|
||||
} else {
|
||||
let ptr = ctx.memory.read_addr64(list_entry + 120 * (handle & 0x1FF))?;
|
||||
Some(ptr)
|
||||
}
|
||||
} {
|
||||
let wep_data = ctx.memory.read_addr64(wep_ptr + cs2dumper::client::C_BaseEntity::m_nSubclassID + 0x8)?;
|
||||
let id: i32 = ctx.memory.read(wep_data + cs2dumper::client::CCSWeaponBaseVData::m_WeaponType)?;
|
||||
|
||||
if id == 7 {
|
||||
has_c4 = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(has_c4)
|
||||
}
|
||||
|
||||
pub fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
|
||||
Ok(ctx.memory.read(self.0 + cs2dumper::client::C_BasePlayerPawn::m_vOldOrigin)?)
|
||||
}
|
||||
|
||||
pub fn angles(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error> {
|
||||
Ok(ctx.memory.read(self.0 + cs2dumper::client::C_CSPlayerPawnBase::m_angEyeAngles)?)
|
||||
}
|
||||
|
||||
pub fn health(&self, ctx: &mut CheatCtx) -> Result<u32, Error> {
|
||||
Ok(ctx.memory.read(self.0 + cs2dumper::client::C_BaseEntity::m_iHealth)?)
|
||||
}
|
||||
|
||||
/// Same as ::get_health > 0
|
||||
pub fn is_alive(&self, ctx: &mut CheatCtx) -> Result<bool, Error> {
|
||||
Ok(self.health(ctx)? > 0)
|
||||
}
|
||||
}
|
@ -1,35 +0,0 @@
|
||||
use memflow::{types::Address, mem::MemoryView};
|
||||
use crate::{traits::MemoryClass, CheatCtx, Error, cs2dumper};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct GameRules(Address);
|
||||
|
||||
impl MemoryClass for GameRules {
|
||||
fn ptr(&self) -> memflow::types::Address {
|
||||
self.0
|
||||
}
|
||||
|
||||
fn new(ptr: memflow::types::Address) -> Self {
|
||||
Self(ptr)
|
||||
}
|
||||
}
|
||||
|
||||
impl GameRules {
|
||||
pub fn bomb_dropped(&self, ctx: &mut CheatCtx) -> Result<bool, Error> {
|
||||
let data: u8 = ctx.memory.read(self.0 + cs2dumper::client::C_CSGameRules::m_bBombDropped)?;
|
||||
Ok(data != 0)
|
||||
}
|
||||
|
||||
pub fn total_rounds_played(&self, ctx: &mut CheatCtx) -> Result<i32, Error> {
|
||||
Ok(ctx.memory.read(self.0 + cs2dumper::client::C_CSGameRules::m_totalRoundsPlayed)?)
|
||||
}
|
||||
|
||||
pub fn game_phase(&self, ctx: &mut CheatCtx) -> Result<i32, Error> {
|
||||
Ok(ctx.memory.read(self.0 + cs2dumper::client::C_CSGameRules::m_gamePhase)?)
|
||||
}
|
||||
|
||||
pub fn bomb_planted(&self, ctx: &mut CheatCtx) -> Result<bool, Error> {
|
||||
let data: u8 = ctx.memory.read(self.0 + cs2dumper::client::C_CSGameRules::m_bBombPlanted)?;
|
||||
Ok(data != 0)
|
||||
}
|
||||
}
|
@ -1,68 +0,0 @@
|
||||
use memflow::{types::Address, mem::MemoryView};
|
||||
use crate::{traits::MemoryClass, CheatCtx, Error, cached_view::INVALIDATE_ALWAYS};
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct GlobalVars(Address);
|
||||
|
||||
impl MemoryClass for GlobalVars {
|
||||
fn ptr(&self) -> memflow::types::Address {
|
||||
self.0
|
||||
}
|
||||
|
||||
fn new(ptr: memflow::types::Address) -> Self {
|
||||
Self(ptr)
|
||||
}
|
||||
}
|
||||
|
||||
impl GlobalVars {
|
||||
pub fn real_time(&self, ctx: &mut CheatCtx) -> Result<f32, Error> {
|
||||
ctx.cache_controller.set_next_flags(INVALIDATE_ALWAYS);
|
||||
Ok(ctx.process.read(self.0)?)
|
||||
}
|
||||
|
||||
pub fn frame_count(&self, ctx: &mut CheatCtx) -> Result<i32, Error> {
|
||||
Ok(ctx.process.read(self.0 + 0x4)?)
|
||||
}
|
||||
|
||||
pub fn frame_time(&self, ctx: &mut CheatCtx) -> Result<f32, Error> {
|
||||
Ok(ctx.process.read(self.0 + 0x8)?)
|
||||
}
|
||||
|
||||
pub fn absolute_frame_time(&self, ctx: &mut CheatCtx) -> Result<f32, Error> {
|
||||
Ok(ctx.process.read(self.0 + 0xC)?)
|
||||
}
|
||||
|
||||
pub fn max_clients(&self, ctx: &mut CheatCtx) -> Result<i32, Error> {
|
||||
Ok(ctx.process.read(self.0 + 0x10)?)
|
||||
}
|
||||
|
||||
pub fn tick_count(&self, ctx: &mut CheatCtx) -> Result<i32, Error> {
|
||||
Ok(ctx.process.read(self.0 + 0x40)?)
|
||||
}
|
||||
|
||||
pub fn map_name(&self, ctx: &mut CheatCtx) -> Result<String, Error> {
|
||||
let ptr = ctx.memory.read_addr64(self.0 + 0x188)?;
|
||||
Ok(ctx.process.read_char_string_n(ptr, 32)?)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
struct GlobalVarsBase {
|
||||
real_time: f32, // 0x0000
|
||||
frame_count: i32, // 0x0004
|
||||
frame_time: f32, // 0x0008
|
||||
absolute_frame_time: f32, // 0x000C
|
||||
max_clients: i32, // 0x0010
|
||||
pad_0: [u8; 0x14], // 0x0014
|
||||
frame_time_2: f32, // 0x0028
|
||||
current_time: f32, // 0x002C
|
||||
current_time_2: f32, // 0x0030
|
||||
pad_1: [u8; 0xC], // 0x0034
|
||||
tick_count: f32, // 0x0040 // NO fucking idea why the fuck this "should" be an f32????
|
||||
pad_2: [u8; 0x4], // 0x0044
|
||||
network_channel: *const c_void, // 0x0048
|
||||
pad_3: [u8; 0x130], // 0x0050
|
||||
current_map: *const c_char, // 0x0180
|
||||
current_map_name: *const c_char, // 0x0188
|
||||
}
|
||||
*/
|
@ -1,9 +0,0 @@
|
||||
mod vec3;
|
||||
mod global_vars;
|
||||
mod gamerules;
|
||||
mod entity;
|
||||
|
||||
pub use vec3::Vec3;
|
||||
pub use global_vars::GlobalVars;
|
||||
pub use gamerules::GameRules;
|
||||
pub use entity::{CBaseEntity, CPlayerController, CPlayerPawn};
|
@ -1,13 +0,0 @@
|
||||
use memflow::types::Address;
|
||||
|
||||
use crate::{CheatCtx, structs::Vec3, Error};
|
||||
|
||||
/// A trait for basic functions from C_BaseEntity
|
||||
/// CCSPlayerController inherits C_BaseEntity, which is why this trait exists.
|
||||
pub trait BaseEntity {
|
||||
fn from_index(ctx: &mut CheatCtx, entity_list: Address, index: i32) -> Result<Option<Self>, Error> where Self: std::marker::Sized;
|
||||
fn pos(&self, ctx: &mut CheatCtx) -> Result<Vec3, Error>;
|
||||
fn class_name(&self, ctx: &mut CheatCtx) -> Result<String, Error>;
|
||||
fn next_by_class(&self, ctx: &mut CheatCtx) -> Result<Self, Error> where Self: std::marker::Sized;
|
||||
fn previous_by_class(&self, ctx: &mut CheatCtx) -> Result<Self, Error> where Self: std::marker::Sized;
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
use memflow::types::Address;
|
||||
|
||||
/// A trait that implements basic functions for a class represented by a single pointer
|
||||
pub trait MemoryClass {
|
||||
fn ptr(&self) -> Address;
|
||||
fn new(ptr: Address) -> Self;
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
mod base_entity;
|
||||
mod memory_class;
|
||||
|
||||
pub use base_entity::BaseEntity;
|
||||
pub use memory_class::MemoryClass;
|
@ -1 +0,0 @@
|
||||
window.ALL_CRATES = ["csflow","radarflow"];
|
@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="List of all items in this crate"><title>List of all items in this crate</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../csflow/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../csflow/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Crate csflow</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><h1>List of all items</h1><h3 id="structs">Structs</h3><ul class="all-items"><li><a href="struct.CheatCtx.html">CheatCtx</a></li><li><a href="structs/struct.CBaseEntity.html">structs::CBaseEntity</a></li><li><a href="structs/struct.CPlayerController.html">structs::CPlayerController</a></li><li><a href="structs/struct.CPlayerPawn.html">structs::CPlayerPawn</a></li><li><a href="structs/struct.Vec3.html">structs::Vec3</a></li></ul><h3 id="enums">Enums</h3><ul class="all-items"><li><a href="enum.Connector.html">Connector</a></li><li><a href="enum.Error.html">Error</a></li><li><a href="enums/enum.PlayerType.html">enums::PlayerType</a></li><li><a href="enums/enum.TeamID.html">enums::TeamID</a></li></ul><h3 id="traits">Traits</h3><ul class="all-items"><li><a href="traits/trait.BaseEntity.html">traits::BaseEntity</a></li><li><a href="traits/trait.MemoryClass.html">traits::MemoryClass</a></li></ul></section></div></main></body></html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../csflow/enum.Connector.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../csflow/enum.Connector.html">../../csflow/enum.Connector.html</a>...</p>
|
||||
<script>location.replace("../../csflow/enum.Connector.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../csflow/struct.CheatCtx.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../csflow/struct.CheatCtx.html">../../csflow/struct.CheatCtx.html</a>...</p>
|
||||
<script>location.replace("../../csflow/struct.CheatCtx.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `enums` mod in crate `csflow`."><title>csflow::enums - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Module enums</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#enums">Enums</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">csflow</a>::<wbr><a class="mod" href="#">enums</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/csflow/enums/mod.rs.html#1-5">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><h2 id="enums" class="small-section-header"><a href="#enums">Enums</a></h2><ul class="item-table"><li><div class="item-name"><a class="enum" href="enum.PlayerType.html" title="enum csflow::enums::PlayerType">PlayerType</a></div></li><li><div class="item-name"><a class="enum" href="enum.TeamID.html" title="enum csflow::enums::TeamID">TeamID</a></div></li></ul></section></div></main></body></html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../csflow/enums/enum.PlayerType.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../csflow/enums/enum.PlayerType.html">../../../csflow/enums/enum.PlayerType.html</a>...</p>
|
||||
<script>location.replace("../../../csflow/enums/enum.PlayerType.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
window.SIDEBAR_ITEMS = {"enum":["PlayerType","TeamID"]};
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../csflow/enums/enum.TeamID.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../csflow/enums/enum.TeamID.html">../../../csflow/enums/enum.TeamID.html</a>...</p>
|
||||
<script>location.replace("../../../csflow/enums/enum.TeamID.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../csflow/enum.Error.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../csflow/enum.Error.html">../../csflow/enum.Error.html</a>...</p>
|
||||
<script>location.replace("../../csflow/enum.Error.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
window.SIDEBAR_ITEMS = {"enum":["Connector","Error"],"mod":["enums","structs","traits"],"struct":["CheatCtx"]};
|
File diff suppressed because one or more lines are too long
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../../csflow/structs/struct.CBaseEntity.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../../csflow/structs/struct.CBaseEntity.html">../../../../csflow/structs/struct.CBaseEntity.html</a>...</p>
|
||||
<script>location.replace("../../../../csflow/structs/struct.CBaseEntity.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../../csflow/structs/struct.CPlayerController.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../../csflow/structs/struct.CPlayerController.html">../../../../csflow/structs/struct.CPlayerController.html</a>...</p>
|
||||
<script>location.replace("../../../../csflow/structs/struct.CPlayerController.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../../csflow/structs/struct.CPlayerPawn.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../../csflow/structs/struct.CPlayerPawn.html">../../../../csflow/structs/struct.CPlayerPawn.html</a>...</p>
|
||||
<script>location.replace("../../../../csflow/structs/struct.CPlayerPawn.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `structs` mod in crate `csflow`."><title>csflow::structs - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Module structs</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#structs">Structs</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">csflow</a>::<wbr><a class="mod" href="#">structs</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/csflow/structs/mod.rs.html#1-5">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.CBaseEntity.html" title="struct csflow::structs::CBaseEntity">CBaseEntity</a></div></li><li><div class="item-name"><a class="struct" href="struct.CPlayerController.html" title="struct csflow::structs::CPlayerController">CPlayerController</a></div></li><li><div class="item-name"><a class="struct" href="struct.CPlayerPawn.html" title="struct csflow::structs::CPlayerPawn">CPlayerPawn</a></div></li><li><div class="item-name"><a class="struct" href="struct.Vec3.html" title="struct csflow::structs::Vec3">Vec3</a></div></li></ul></section></div></main></body></html>
|
@ -1 +0,0 @@
|
||||
window.SIDEBAR_ITEMS = {"struct":["CBaseEntity","CPlayerController","CPlayerPawn","Vec3"]};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../csflow/structs/struct.Vec3.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../csflow/structs/struct.Vec3.html">../../../csflow/structs/struct.Vec3.html</a>...</p>
|
||||
<script>location.replace("../../../csflow/structs/struct.Vec3.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../csflow/traits/trait.BaseEntity.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../csflow/traits/trait.BaseEntity.html">../../../csflow/traits/trait.BaseEntity.html</a>...</p>
|
||||
<script>location.replace("../../../csflow/traits/trait.BaseEntity.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1,2 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `traits` mod in crate `csflow`."><title>csflow::traits - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Module traits</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#traits">Traits</a></li></ul></section></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Module <a href="../index.html">csflow</a>::<wbr><a class="mod" href="#">traits</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/csflow/traits/mod.rs.html#1-5">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><ul class="item-table"><li><div class="item-name"><a class="trait" href="trait.BaseEntity.html" title="trait csflow::traits::BaseEntity">BaseEntity</a></div><div class="desc docblock-short">A trait for basic functions from C_BaseEntity
|
||||
CCSPlayerController inherits C_BaseEntity, which is why this trait exists.</div></li><li><div class="item-name"><a class="trait" href="trait.MemoryClass.html" title="trait csflow::traits::MemoryClass">MemoryClass</a></div><div class="desc docblock-short">A trait that implements basic functions for a class represented by a single pointer</div></li></ul></section></div></main></body></html>
|
@ -1,11 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0;URL=../../../csflow/traits/trait.MemoryClass.html">
|
||||
<title>Redirection</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Redirecting to <a href="../../../csflow/traits/trait.MemoryClass.html">../../../csflow/traits/trait.MemoryClass.html</a>...</p>
|
||||
<script>location.replace("../../../csflow/traits/trait.MemoryClass.html" + location.search + location.hash);</script>
|
||||
</body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
window.SIDEBAR_ITEMS = {"trait":["BaseEntity","MemoryClass"]};
|
@ -1,18 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A trait for basic functions from C_BaseEntity CCSPlayerController inherits C_BaseEntity, which is why this trait exists."><title>BaseEntity in csflow::traits - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">BaseEntity</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.class_name">class_name</a></li><li><a href="#tymethod.from_index">from_index</a></li><li><a href="#tymethod.pos">pos</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In csflow::traits</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">csflow</a>::<wbr><a href="index.html">traits</a>::<wbr><a class="trait" href="#">BaseEntity</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/csflow/traits/base_entity.rs.html#7-11">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><pre class="rust item-decl"><code>pub trait BaseEntity {
|
||||
// Required methods
|
||||
fn <a href="#tymethod.from_index" class="fn">from_index</a>(
|
||||
ctx: &mut <a class="struct" href="../struct.CheatCtx.html" title="struct csflow::CheatCtx">CheatCtx</a>,
|
||||
entity_list: Address,
|
||||
index: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.i32.html">i32</a>
|
||||
) -> <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/1.74.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self>, <a class="enum" href="../enum.Error.html" title="enum csflow::Error">Error</a>>
|
||||
<span class="where">where Self: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a></span>;
|
||||
<span class="item-spacer"></span> fn <a href="#tymethod.pos" class="fn">pos</a>(&self, ctx: &mut <a class="struct" href="../struct.CheatCtx.html" title="struct csflow::CheatCtx">CheatCtx</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../structs/struct.Vec3.html" title="struct csflow::structs::Vec3">Vec3</a>, <a class="enum" href="../enum.Error.html" title="enum csflow::Error">Error</a>>;
|
||||
<span class="item-spacer"></span> fn <a href="#tymethod.class_name" class="fn">class_name</a>(&self, ctx: &mut <a class="struct" href="../struct.CheatCtx.html" title="struct csflow::CheatCtx">CheatCtx</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/1.74.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../enum.Error.html" title="enum csflow::Error">Error</a>>;
|
||||
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A trait for basic functions from C_BaseEntity
|
||||
CCSPlayerController inherits C_BaseEntity, which is why this trait exists.</p>
|
||||
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.from_index" class="method"><a class="src rightside" href="../../src/csflow/traits/base_entity.rs.html#8">source</a><h4 class="code-header">fn <a href="#tymethod.from_index" class="fn">from_index</a>(
|
||||
ctx: &mut <a class="struct" href="../struct.CheatCtx.html" title="struct csflow::CheatCtx">CheatCtx</a>,
|
||||
entity_list: Address,
|
||||
index: <a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.i32.html">i32</a>
|
||||
) -> <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/1.74.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><Self>, <a class="enum" href="../enum.Error.html" title="enum csflow::Error">Error</a>><span class="where fmt-newline">where
|
||||
Self: <a class="trait" href="https://doc.rust-lang.org/1.74.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h4></section><section id="tymethod.pos" class="method"><a class="src rightside" href="../../src/csflow/traits/base_entity.rs.html#9">source</a><h4 class="code-header">fn <a href="#tymethod.pos" class="fn">pos</a>(&self, ctx: &mut <a class="struct" href="../struct.CheatCtx.html" title="struct csflow::CheatCtx">CheatCtx</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="../structs/struct.Vec3.html" title="struct csflow::structs::Vec3">Vec3</a>, <a class="enum" href="../enum.Error.html" title="enum csflow::Error">Error</a>></h4></section><section id="tymethod.class_name" class="method"><a class="src rightside" href="../../src/csflow/traits/base_entity.rs.html#10">source</a><h4 class="code-header">fn <a href="#tymethod.class_name" class="fn">class_name</a>(&self, ctx: &mut <a class="struct" href="../struct.CheatCtx.html" title="struct csflow::CheatCtx">CheatCtx</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.74.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="struct" href="https://doc.rust-lang.org/1.74.0/alloc/string/struct.String.html" title="struct alloc::string::String">String</a>, <a class="enum" href="../enum.Error.html" title="enum csflow::Error">Error</a>></h4></section></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-BaseEntity-for-CBaseEntity" class="impl"><a class="src rightside" href="../../src/csflow/structs/entity/base_entity.rs.html#16-41">source</a><a href="#impl-BaseEntity-for-CBaseEntity" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BaseEntity.html" title="trait csflow::traits::BaseEntity">BaseEntity</a> for <a class="struct" href="../structs/struct.CBaseEntity.html" title="struct csflow::structs::CBaseEntity">CBaseEntity</a></h3></section><section id="impl-BaseEntity-for-CPlayerController" class="impl"><a class="src rightside" href="../../src/csflow/structs/entity/player_controller.rs.html#18-43">source</a><a href="#impl-BaseEntity-for-CPlayerController" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.BaseEntity.html" title="trait csflow::traits::BaseEntity">BaseEntity</a> for <a class="struct" href="../structs/struct.CPlayerController.html" title="struct csflow::structs::CPlayerController">CPlayerController</a></h3></section></div><script src="../../implementors/csflow/traits/base_entity/trait.BaseEntity.js" async></script></section></div></main></body></html>
|
@ -1,6 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A trait that implements basic functions for a class represented by a single pointer"><title>MemoryClass in csflow::traits - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../csflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">MemoryClass</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.new">new</a></li><li><a href="#tymethod.ptr">ptr</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In csflow::traits</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">csflow</a>::<wbr><a href="index.html">traits</a>::<wbr><a class="trait" href="#">MemoryClass</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/csflow/traits/memory_class.rs.html#4-7">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><pre class="rust item-decl"><code>pub trait MemoryClass {
|
||||
// Required methods
|
||||
fn <a href="#tymethod.ptr" class="fn">ptr</a>(&self) -> Address;
|
||||
<span class="item-spacer"></span> fn <a href="#tymethod.new" class="fn">new</a>(ptr: Address) -> Self;
|
||||
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A trait that implements basic functions for a class represented by a single pointer</p>
|
||||
</div></details><h2 id="required-methods" class="small-section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><section id="tymethod.ptr" class="method"><a class="src rightside" href="../../src/csflow/traits/memory_class.rs.html#5">source</a><h4 class="code-header">fn <a href="#tymethod.ptr" class="fn">ptr</a>(&self) -> Address</h4></section><section id="tymethod.new" class="method"><a class="src rightside" href="../../src/csflow/traits/memory_class.rs.html#6">source</a><h4 class="code-header">fn <a href="#tymethod.new" class="fn">new</a>(ptr: Address) -> Self</h4></section></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-MemoryClass-for-CBaseEntity" class="impl"><a class="src rightside" href="../../src/csflow/structs/entity/base_entity.rs.html#6-14">source</a><a href="#impl-MemoryClass-for-CBaseEntity" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.MemoryClass.html" title="trait csflow::traits::MemoryClass">MemoryClass</a> for <a class="struct" href="../structs/struct.CBaseEntity.html" title="struct csflow::structs::CBaseEntity">CBaseEntity</a></h3></section><section id="impl-MemoryClass-for-CPlayerController" class="impl"><a class="src rightside" href="../../src/csflow/structs/entity/player_controller.rs.html#8-16">source</a><a href="#impl-MemoryClass-for-CPlayerController" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.MemoryClass.html" title="trait csflow::traits::MemoryClass">MemoryClass</a> for <a class="struct" href="../structs/struct.CPlayerController.html" title="struct csflow::structs::CPlayerController">CPlayerController</a></h3></section><section id="impl-MemoryClass-for-CPlayerPawn" class="impl"><a class="src rightside" href="../../src/csflow/structs/entity/player_pawn.rs.html#7-15">source</a><a href="#impl-MemoryClass-for-CPlayerPawn" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.MemoryClass.html" title="trait csflow::traits::MemoryClass">MemoryClass</a> for <a class="struct" href="../structs/struct.CPlayerPawn.html" title="struct csflow::structs::CPlayerPawn">CPlayerPawn</a></h3></section></div><script src="../../implementors/csflow/traits/memory_class/trait.MemoryClass.js" async></script></section></div></main></body></html>
|
@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Documentation for Rustdoc"><title>Rustdoc help</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="./static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="./static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="./" data-static-root-path="./static.files/" data-current-crate="csflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="./static.files/storage-fec3eaa3851e447d.js"></script><script defer src="./static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="./static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="./static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="./static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="./static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="./csflow/index.html"><img class="rust-logo" src="./static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="./csflow/index.html"><img class="rust-logo" src="./static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location">Help</h2><div class="sidebar-elems"></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="./help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="./settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="./static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Rustdoc help</h1><span class="out-of-band"><a id="back" href="javascript:void(0)" onclick="history.back();">Back</a></span></div><noscript><section><p>You need to enable JavaScript to use keyboard commands or search.</p><p>For more information, browse the <a href="https://doc.rust-lang.org/rustdoc/">rustdoc handbook</a>.</p></section></noscript></section></div></main></body></html>
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/alloc/string/trait.ToString.html\" title=\"trait alloc::string::ToString\">ToString</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"radarflow":[["impl Args for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"radarflow":[["impl CommandFactory for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"radarflow":[["impl FromArgMatches for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"radarflow":[["impl Parser for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl ValueEnum for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl ValueEnum for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/clone/trait.Clone.html\" title=\"trait core::clone::Clone\">Clone</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.Eq.html\" title=\"trait core::cmp::Eq\">Eq</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.Ord.html\" title=\"trait core::cmp::Ord\">Ord</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.PartialEq.html\" title=\"trait core::cmp::PartialEq\">PartialEq</a><<a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/cmp/trait.PartialOrd.html\" title=\"trait core::cmp::PartialOrd\">PartialOrd</a><<a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PartialError<<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.i32.html\">i32</a>>> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PartialError<<a class=\"struct\" href=\"https://doc.rust-lang.org/1.74.0/alloc/string/struct.String.html\" title=\"struct alloc::string::String\">String</a>>> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PartialError<Address>> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PartialError<<a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>>> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PartialError<<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.u8.html\">u8</a>>> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><PartialError<<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.u32.html\">u32</a>>> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><Error> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.From.html\" title=\"trait core::convert::From\">From</a><<a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>> for <a class=\"enum\" href=\"https://docs.rs/log/0.4.20/log/enum.LevelFilter.html\" title=\"enum log::LevelFilter\">LevelFilter</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.i8.html\">i8</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.i64.html\">i64</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.u32.html\">u32</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.u64.html\">u64</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.u16.html\">u16</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.u8.html\">u8</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.i16.html\">i16</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/convert/trait.TryFrom.html\" title=\"trait core::convert::TryFrom\">TryFrom</a><<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.74.0/std/primitive.i32.html\">i32</a>> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/default/trait.Default.html\" title=\"trait core::default::Default\">Default</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/error/trait.Error.html\" title=\"trait core::error::Error\">Error</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Debug.html\" title=\"trait core::fmt::Debug\">Debug</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/fmt/trait.Display.html\" title=\"trait core::fmt::Display\">Display</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Copy.html\" title=\"trait core::marker::Copy\">Copy</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl Freeze for <a class=\"struct\" href=\"csflow/struct.CheatCtx.html\" title=\"struct csflow::CheatCtx\">CheatCtx</a>",1,["csflow::context::CheatCtx"]],["impl Freeze for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>",1,["csflow::context::Connector"]],["impl Freeze for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>",1,["csflow::error::Error"]],["impl Freeze for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>",1,["csflow::structs::vec3::Vec3"]],["impl Freeze for <a class=\"struct\" href=\"csflow/structs/struct.CBaseEntity.html\" title=\"struct csflow::structs::CBaseEntity\">CBaseEntity</a>",1,["csflow::structs::entity::base_entity::CBaseEntity"]],["impl Freeze for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerController.html\" title=\"struct csflow::structs::CPlayerController\">CPlayerController</a>",1,["csflow::structs::entity::player_controller::CPlayerController"]],["impl Freeze for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerPawn.html\" title=\"struct csflow::structs::CPlayerPawn\">CPlayerPawn</a>",1,["csflow::structs::entity::player_pawn::CPlayerPawn"]],["impl Freeze for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>",1,["csflow::enums::player_type::PlayerType"]],["impl Freeze for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>",1,["csflow::enums::teamid::TeamID"]]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>",1,["radarflow::comms::PlayerData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>",1,["radarflow::comms::BombData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>",1,["radarflow::comms::EntityData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>",1,["radarflow::comms::RadarData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>",1,["radarflow::cli::Cli"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>",1,["radarflow::cli::Loglevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>",1,["radarflow::dma::cache::CachedEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.Cache.html\" title=\"struct radarflow::dma::cache::Cache\">Cache</a>",1,["radarflow::dma::cache::Cache"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.CacheBuilder.html\" title=\"struct radarflow::dma::cache::CacheBuilder\">CacheBuilder</a>",1,["radarflow::dma::cache::CacheBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Freeze.html\" title=\"trait core::marker::Freeze\">Freeze</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>",1,["radarflow::websocket::AppState"]]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"csflow/struct.CheatCtx.html\" title=\"struct csflow::CheatCtx\">CheatCtx</a>",1,["csflow::context::CheatCtx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>",1,["csflow::context::Connector"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>",1,["csflow::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>",1,["csflow::structs::vec3::Vec3"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"csflow/structs/struct.CBaseEntity.html\" title=\"struct csflow::structs::CBaseEntity\">CBaseEntity</a>",1,["csflow::structs::entity::base_entity::CBaseEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerController.html\" title=\"struct csflow::structs::CPlayerController\">CPlayerController</a>",1,["csflow::structs::entity::player_controller::CPlayerController"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerPawn.html\" title=\"struct csflow::structs::CPlayerPawn\">CPlayerPawn</a>",1,["csflow::structs::entity::player_pawn::CPlayerPawn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>",1,["csflow::enums::player_type::PlayerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>",1,["csflow::enums::teamid::TeamID"]]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>",1,["radarflow::comms::PlayerData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>",1,["radarflow::comms::BombData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>",1,["radarflow::comms::EntityData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>",1,["radarflow::comms::RadarData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>",1,["radarflow::cli::Cli"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>",1,["radarflow::cli::Loglevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>",1,["radarflow::dma::cache::CachedEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.Cache.html\" title=\"struct radarflow::dma::cache::Cache\">Cache</a>",1,["radarflow::dma::cache::Cache"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.CacheBuilder.html\" title=\"struct radarflow::dma::cache::CacheBuilder\">CacheBuilder</a>",1,["radarflow::dma::cache::CacheBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Send.html\" title=\"trait core::marker::Send\">Send</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>",1,["radarflow::websocket::AppState"]]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralEq.html\" title=\"trait core::marker::StructuralEq\">StructuralEq</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.StructuralPartialEq.html\" title=\"trait core::marker::StructuralPartialEq\">StructuralPartialEq</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"csflow/struct.CheatCtx.html\" title=\"struct csflow::CheatCtx\">CheatCtx</a>",1,["csflow::context::CheatCtx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>",1,["csflow::context::Connector"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>",1,["csflow::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>",1,["csflow::structs::vec3::Vec3"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"csflow/structs/struct.CBaseEntity.html\" title=\"struct csflow::structs::CBaseEntity\">CBaseEntity</a>",1,["csflow::structs::entity::base_entity::CBaseEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerController.html\" title=\"struct csflow::structs::CPlayerController\">CPlayerController</a>",1,["csflow::structs::entity::player_controller::CPlayerController"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerPawn.html\" title=\"struct csflow::structs::CPlayerPawn\">CPlayerPawn</a>",1,["csflow::structs::entity::player_pawn::CPlayerPawn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>",1,["csflow::enums::player_type::PlayerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>",1,["csflow::enums::teamid::TeamID"]]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>",1,["radarflow::comms::PlayerData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>",1,["radarflow::comms::BombData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>",1,["radarflow::comms::EntityData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>",1,["radarflow::comms::RadarData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>",1,["radarflow::cli::Cli"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>",1,["radarflow::cli::Loglevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>",1,["radarflow::dma::cache::CachedEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.Cache.html\" title=\"struct radarflow::dma::cache::Cache\">Cache</a>",1,["radarflow::dma::cache::Cache"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.CacheBuilder.html\" title=\"struct radarflow::dma::cache::CacheBuilder\">CacheBuilder</a>",1,["radarflow::dma::cache::CacheBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Sync.html\" title=\"trait core::marker::Sync\">Sync</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>",1,["radarflow::websocket::AppState"]]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"csflow/struct.CheatCtx.html\" title=\"struct csflow::CheatCtx\">CheatCtx</a>",1,["csflow::context::CheatCtx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>",1,["csflow::context::Connector"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>",1,["csflow::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>",1,["csflow::structs::vec3::Vec3"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"csflow/structs/struct.CBaseEntity.html\" title=\"struct csflow::structs::CBaseEntity\">CBaseEntity</a>",1,["csflow::structs::entity::base_entity::CBaseEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerController.html\" title=\"struct csflow::structs::CPlayerController\">CPlayerController</a>",1,["csflow::structs::entity::player_controller::CPlayerController"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerPawn.html\" title=\"struct csflow::structs::CPlayerPawn\">CPlayerPawn</a>",1,["csflow::structs::entity::player_pawn::CPlayerPawn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>",1,["csflow::enums::player_type::PlayerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>",1,["csflow::enums::teamid::TeamID"]]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>",1,["radarflow::comms::PlayerData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>",1,["radarflow::comms::BombData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>",1,["radarflow::comms::EntityData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>",1,["radarflow::comms::RadarData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>",1,["radarflow::cli::Cli"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>",1,["radarflow::cli::Loglevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>",1,["radarflow::dma::cache::CachedEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.Cache.html\" title=\"struct radarflow::dma::cache::Cache\">Cache</a>",1,["radarflow::dma::cache::Cache"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.CacheBuilder.html\" title=\"struct radarflow::dma::cache::CacheBuilder\">CacheBuilder</a>",1,["radarflow::dma::cache::CacheBuilder"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/marker/trait.Unpin.html\" title=\"trait core::marker::Unpin\">Unpin</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>",1,["radarflow::websocket::AppState"]]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"csflow/struct.CheatCtx.html\" title=\"struct csflow::CheatCtx\">CheatCtx</a>",1,["csflow::context::CheatCtx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>",1,["csflow::context::Connector"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>",1,["csflow::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>",1,["csflow::structs::vec3::Vec3"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.CBaseEntity.html\" title=\"struct csflow::structs::CBaseEntity\">CBaseEntity</a>",1,["csflow::structs::entity::base_entity::CBaseEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerController.html\" title=\"struct csflow::structs::CPlayerController\">CPlayerController</a>",1,["csflow::structs::entity::player_controller::CPlayerController"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerPawn.html\" title=\"struct csflow::structs::CPlayerPawn\">CPlayerPawn</a>",1,["csflow::structs::entity::player_pawn::CPlayerPawn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>",1,["csflow::enums::player_type::PlayerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>",1,["csflow::enums::teamid::TeamID"]]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>",1,["radarflow::comms::PlayerData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>",1,["radarflow::comms::BombData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>",1,["radarflow::comms::EntityData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>",1,["radarflow::comms::RadarData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>",1,["radarflow::cli::Cli"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>",1,["radarflow::cli::Loglevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>",1,["radarflow::dma::cache::CachedEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.Cache.html\" title=\"struct radarflow::dma::cache::Cache\">Cache</a>",1,["radarflow::dma::cache::Cache"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.CacheBuilder.html\" title=\"struct radarflow::dma::cache::CacheBuilder\">CacheBuilder</a>",1,["radarflow::dma::cache::CacheBuilder"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.RefUnwindSafe.html\" title=\"trait core::panic::unwind_safe::RefUnwindSafe\">RefUnwindSafe</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>",1,["radarflow::websocket::AppState"]]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"csflow/struct.CheatCtx.html\" title=\"struct csflow::CheatCtx\">CheatCtx</a>",1,["csflow::context::CheatCtx"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"csflow/enum.Connector.html\" title=\"enum csflow::Connector\">Connector</a>",1,["csflow::context::Connector"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"csflow/enum.Error.html\" title=\"enum csflow::Error\">Error</a>",1,["csflow::error::Error"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>",1,["csflow::structs::vec3::Vec3"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.CBaseEntity.html\" title=\"struct csflow::structs::CBaseEntity\">CBaseEntity</a>",1,["csflow::structs::entity::base_entity::CBaseEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerController.html\" title=\"struct csflow::structs::CPlayerController\">CPlayerController</a>",1,["csflow::structs::entity::player_controller::CPlayerController"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"csflow/structs/struct.CPlayerPawn.html\" title=\"struct csflow::structs::CPlayerPawn\">CPlayerPawn</a>",1,["csflow::structs::entity::player_pawn::CPlayerPawn"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>",1,["csflow::enums::player_type::PlayerType"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>",1,["csflow::enums::teamid::TeamID"]]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>",1,["radarflow::comms::PlayerData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>",1,["radarflow::comms::BombData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>",1,["radarflow::comms::EntityData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>",1,["radarflow::comms::RadarData"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/cli/struct.Cli.html\" title=\"struct radarflow::cli::Cli\">Cli</a>",1,["radarflow::cli::Cli"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"radarflow/cli/enum.Loglevel.html\" title=\"enum radarflow::cli::Loglevel\">Loglevel</a>",1,["radarflow::cli::Loglevel"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"enum\" href=\"radarflow/dma/cache/enum.CachedEntity.html\" title=\"enum radarflow::dma::cache::CachedEntity\">CachedEntity</a>",1,["radarflow::dma::cache::CachedEntity"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.Cache.html\" title=\"struct radarflow::dma::cache::Cache\">Cache</a>",1,["radarflow::dma::cache::Cache"]],["impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/dma/cache/struct.CacheBuilder.html\" title=\"struct radarflow::dma::cache::CacheBuilder\">CacheBuilder</a>",1,["radarflow::dma::cache::CacheBuilder"]],["impl !<a class=\"trait\" href=\"https://doc.rust-lang.org/1.74.0/core/panic/unwind_safe/trait.UnwindSafe.html\" title=\"trait core::panic::unwind_safe::UnwindSafe\">UnwindSafe</a> for <a class=\"struct\" href=\"radarflow/websocket/struct.AppState.html\" title=\"struct radarflow::websocket::AppState\">AppState</a>",1,["radarflow::websocket::AppState"]]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl Pod for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://docs.rs/num-traits/0.2/num_traits/cast/trait.FromPrimitive.html\" title=\"trait num_traits::cast::FromPrimitive\">FromPrimitive</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,3 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://docs.rs/num-traits/0.2/num_traits/cast/trait.ToPrimitive.html\" title=\"trait num_traits::cast::ToPrimitive\">ToPrimitive</a> for <a class=\"enum\" href=\"csflow/enums/enum.TeamID.html\" title=\"enum csflow::enums::TeamID\">TeamID</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>"]],
|
||||
"radarflow":[["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>"],["impl<'de> <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/de/trait.Deserialize.html\" title=\"trait serde::de::Deserialize\">Deserialize</a><'de> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1,4 +0,0 @@
|
||||
(function() {var implementors = {
|
||||
"csflow":[["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"csflow/structs/struct.Vec3.html\" title=\"struct csflow::structs::Vec3\">Vec3</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"csflow/enums/enum.PlayerType.html\" title=\"enum csflow::enums::PlayerType\">PlayerType</a>"]],
|
||||
"radarflow":[["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"enum\" href=\"radarflow/comms/enum.EntityData.html\" title=\"enum radarflow::comms::EntityData\">EntityData</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"radarflow/comms/struct.BombData.html\" title=\"struct radarflow::comms::BombData\">BombData</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"radarflow/comms/struct.PlayerData.html\" title=\"struct radarflow::comms::PlayerData\">PlayerData</a>"],["impl <a class=\"trait\" href=\"https://docs.rs/serde/1.0.193/serde/ser/trait.Serialize.html\" title=\"trait serde::ser::Serialize\">Serialize</a> for <a class=\"struct\" href=\"radarflow/comms/struct.RadarData.html\" title=\"struct radarflow::comms::RadarData\">RadarData</a>"]]
|
||||
};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})()
|
@ -1 +0,0 @@
|
||||
<meta http-equiv="refresh" content="0; url=csflow/index.html">
|
File diff suppressed because one or more lines are too long
@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `POLL_RANGE` constant in crate `radarflow`."><title>POLL_RANGE in radarflow::cli - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="radarflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../radarflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../radarflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><div class="sidebar-elems"><h2><a href="index.html">In radarflow::cli</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../index.html">radarflow</a>::<wbr><a href="index.html">cli</a>::<wbr><a class="constant" href="#">POLL_RANGE</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/radarflow/cli.rs.html#7">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><pre class="rust item-decl"><code>const POLL_RANGE: <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/ops/range/struct.RangeInclusive.html" title="struct core::ops::range::RangeInclusive">RangeInclusive</a><<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.usize.html">usize</a>>;</code></pre></section></div></main></body></html>
|
@ -1 +0,0 @@
|
||||
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `PORT_RANGE` constant in crate `radarflow`."><title>PORT_RANGE in radarflow::cli - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="radarflow" data-themes="" data-resource-suffix="" data-rustdoc-version="1.74.0 (79e9716c9 2023-11-13)" data-channel="1.74.0" data-search-js="search-8be46b629f5f14a8.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc constant"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">☰</button><a class="logo-container" href="../../radarflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../radarflow/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><div class="sidebar-elems"><h2><a href="index.html">In radarflow::cli</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Constant <a href="../index.html">radarflow</a>::<wbr><a href="index.html">cli</a>::<wbr><a class="constant" href="#">PORT_RANGE</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/radarflow/cli.rs.html#6">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>−</span>]</button></span></div><pre class="rust item-decl"><code>const PORT_RANGE: <a class="struct" href="https://doc.rust-lang.org/1.74.0/core/ops/range/struct.RangeInclusive.html" title="struct core::ops::range::RangeInclusive">RangeInclusive</a><<a class="primitive" href="https://doc.rust-lang.org/1.74.0/std/primitive.usize.html">usize</a>>;</code></pre></section></div></main></body></html>
|
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user