1#![allow(unknown_lints)]
2#![allow(clippy::suboptimal_flops)]
3#![allow(clippy::similar_names)]
4#![allow(clippy::many_single_char_names)]
5#![allow(clippy::multiple_crate_versions)]
6#![allow(clippy::implicit_hasher)]
7#![allow(clippy::unsafe_derive_deserialize)]
8#![allow(clippy::redundant_pub_crate)]
9
10use crate::collisions::{CollisionChecker, Triangle};
11use crate::nav::{
12 DynamicAttributeFlags, InvalidNavFileError, Nav, NavArea, PathResult, py_group_nav_areas,
13 py_regularize_nav_areas,
14};
15use crate::position::{Position, idw_py};
16use pyo3::{
17 Python,
18 prelude::{Bound, PyModule, PyResult, pymodule},
19 types::PyModuleMethods,
20 wrap_pyfunction,
21};
22
23pub mod collisions;
24pub mod constants;
25pub mod nav;
26pub mod position;
27pub mod spread;
28pub mod utils;
29
30#[pymodule]
31fn cs2_nav(py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> {
32 m.add_class::<Position>()?;
33 m.add_function(wrap_pyfunction!(idw_py, m)?)?;
34 m.add_class::<DynamicAttributeFlags>()?;
35 m.add_class::<NavArea>()?;
36 m.add_class::<Nav>()?;
37 m.add_class::<PathResult>()?;
38 m.add_function(wrap_pyfunction!(py_group_nav_areas, m)?)?;
39 m.add_function(wrap_pyfunction!(py_regularize_nav_areas, m)?)?;
40 m.add_class::<Triangle>()?;
41 m.add_class::<CollisionChecker>()?;
42 m.add("InvalidNavFileError", py.get_type::<InvalidNavFileError>())?;
43 Ok(())
44}