honeycomb_render/
lib.rs

1//! # honeycomb-render
2//!
3//! This crate implements a graphical debugging tool using the `bevy` crate. The [`App`] structure
4//! can be used to render a given combinatorial map, using underlying ECS logic to render map
5//! items.
6//!
7//! All the ECS code used to render maps is left public, allowing advanced user to customize the
8//! rendering tool to account for user-defined attributes.
9//!
10//! Note that rendering large maps may require running the program in `release` mode.
11//!
12
13// ------ CUSTOM LINTS
14
15// more lints
16#![warn(clippy::pedantic)]
17#![warn(missing_docs)]
18// some exceptions
19#![allow(clippy::module_name_repetitions)]
20#![allow(clippy::cast_possible_truncation)]
21#![allow(clippy::cast_sign_loss)]
22#![allow(clippy::cast_precision_loss)]
23#![allow(clippy::similar_names)]
24#![allow(clippy::must_use_candidate)]
25#![allow(clippy::needless_pass_by_value)] // all ECS systems are flagged with this one
26
27// ------ MODULE DECLARATIONS
28
29mod app;
30mod capture;
31mod gui;
32mod inspector;
33mod options;
34mod render;
35
36// ------ PUBLIC API
37
38// out of the box render tool
39
40pub use app::App;
41
42// item for custom composition
43
44/// plugins used to build the default [`App`]
45pub mod plugins {
46    pub use crate::capture::CapturePlugin;
47    pub use crate::gui::GuiPlugin;
48    pub use crate::options::OptionsPlugin;
49    pub use crate::render::ScenePlugin;
50}
51
52/// bundles used to build the default [`App`]
53pub mod bundles {
54    pub use crate::capture::ecs_data::{
55        DartBodyBundle, DartHeadBundle, EdgeBundle, FaceBundle, VertexBundle,
56    };
57}
58
59/// components used to build the default [`App`]
60pub mod components {
61    pub use crate::capture::ecs_data::{
62        Beta, CaptureId, DartBody, DartHead, DartId, Edge, EdgeId, Face, FaceId, Vertex, VertexId,
63        Volume, VolumeId,
64    };
65    pub use crate::render::camera::PanOrbitCamera;
66}
67
68/// resources used to build the default [`App`]
69pub mod resources {
70    pub use crate::capture::ecs_data::{FaceNormals, MapVertices};
71    pub use crate::options::resource::*;
72}
73
74/// systems used to build the default [`App`]
75pub mod systems {
76    pub use crate::capture::system::*;
77    pub use crate::inspector::tab::draw_inspected_data;
78    pub use crate::options::tab::draw_options;
79    pub use crate::render::{
80        camera::{cursor_in_render, update_camera},
81        picking::update_picking,
82        scene::setup_scene,
83        update::*,
84    };
85}