diff --git a/src/lib.rs b/src/lib.rs index 3cb41f4..1ac1443 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,33 +1,74 @@ -pub use winit::keyboard as keyboard; +#![doc( + html_logo_url = "https://raw.githubusercontent.com/lisk77/comet/refs/heads/main/res/textures/comet-1024.png", + html_favicon_url = "https://raw.githubusercontent.com/lisk77/comet/refs/heads/main/res/textures/comet-1024.png" +)] + +//! Comet is an open source game engine which provides a modular interface to customize and extend its functionality. +//! +//! # Simple example +//! +//! ```rust +//!// main.rs example +//!use comet::prelude::*; +//! +//!struct GameState {} +//! +//!impl GameState { +//! pub fn new() -> Self { +//! Self {} +//! } +//!} +//! +//!// This function will be called once before the event loop starts +//!fn setup(app: &mut App, renderer: &mut Renderer2D) {} +//!// This function will be called every tick +//!fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) {} +//! +//!fn main() { +//! App::new() // Generate a basic 2D app +//! .with_preset(App2D) // Pre-registers the `Transform2D` component in the scene +//! .with_title("Comet App") // Sets the window title +//! .with_icon(r"res/textures/comet_icon.png") // Sets the window icon +//! .with_size(1920, 1080) // Sets the window size +//! .with_game_state(GameState::new()) // Adds a custom game state struct +//! .run::(setup, update) // Starts app with the given renderer and functions +//!} +//!``` +//! # Subcrates +//! +//! The Comet crate is structured into several subcrates: +//! +//! | Subcrate | Description | +//! |----------|-------------| +//! | `comet_app` | Provides the core functionality for creating and managing applications. | +//! | `comet_colors` | Offers a variety of color representations and utilities. | +//! | `comet_ecs` | Implements an Entity-Component-System (ECS) architecture for game development. | +//! | `comet_input` | Handles input events and provides utilities for keyboard and mouse input (as well as gamepad input in the future). | +//! | `comet_log` | Provides logging functionality for debugging and error reporting. | +//! | `comet_math` | Includes mathematical utilities and data structures like vectors, matrices, and quaternions. | +//! | `comet_renderer` | (right now) implements a simple 2D renderer for drawing graphics and text. | +//! | `comet_resources` | Manages resources such as textures, shaders and fonts. | +//! +pub use comet_app as app; +pub use comet_colors as colors; +pub use comet_ecs as ecs; +pub use comet_input as input; +pub use comet_log as log; pub use comet_math as math; pub use comet_renderer as renderer; pub use comet_resources as resources; -pub use comet_ecs as ecs; -pub use comet_app as app; -pub use comet_colors as colors; -pub use comet_input as input; -pub use comet_log as log; +/// Everything you normally need to get started with Comet. pub mod prelude { - pub use comet_app::App; - pub use comet_app::ApplicationType::App2D; - pub use comet_renderer::renderer2d::Renderer2D; - pub use comet_input::keyboard::Key; - pub use winit_input_helper::WinitInputHelper as InputManager; - pub use comet_log::*; - pub use comet_colors::{ - LinearRgba, - sRgba, - Hsla, - Hsva, - Hwba, - Laba, - Lcha, - Oklaba, - Oklcha, - Xyza, - Color as CometColor - }; - pub use comet_ecs::*; - pub use comet_math::*; + pub use comet_app::App; + pub use comet_app::ApplicationType::App2D; + pub use comet_colors::{ + sRgba, Color as CometColor, Hsla, Hsva, Hwba, Laba, Lcha, LinearRgba, Oklaba, Oklcha, Xyza, + }; + pub use comet_ecs::*; + pub use comet_input::keyboard::Key; + pub use comet_log::*; + pub use comet_math::*; + pub use comet_renderer::renderer2d::Renderer2D; + pub use winit_input_helper::WinitInputHelper as InputManager; }