1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
//! # 🐶 KEESHOND Game Engine 🐶
//!
//! Keeshond is a 2D game engine with a focus on quickly bringing ideas onscreen.
//!
//!
//! # Goals
//!
//! - Runs reasonably well on hardware from 2010
//! - Deterministic game logic across systems, important for speedrunners
//! - Implements features games need, without adding unneeded complexity
//! - First-class Linux support via SDL2
//!
//! # How to use this documentation
//!
//! The document you see here serves as an API reference. It is not intended as a
//! starting point for new users. If you're looking to get started, it is suggested
//! that you look at other material instead, such as the included examples.
//!
//! # Points of interest
//!
//! You might be interested in API documentation for the following:
//!
//! - [gameloop::GameControl] - For accessing various functionality about the game while it's running
//! - [input::Input] - For player input bindings and detecting key/button presses and axes.
//! - [scene::Component], [scene::ThinkerSystem], and [scene::DrawerSystem] - For defining components and systems
//! - [scene::SceneType] - For defining information about a scene such as spawnable objects
//! - [scene::SceneControl] - For adding and removing [Entities](scene::Entity)
//! and [Components](scene::Component) while the scene is running
//! - [scene::ComponentControl] - For accessing [Components](scene::Component) while the scene is running
//! - [renderer::Renderer] - For functionality regarding the window and global rendering state
//! - [renderer::DrawControl] - For basic rendering functionality including sprite drawing (this might not be relevant if you're using keeshond_treats)
//! - [audio::Audio] - For playing audio
//!
//! And for Keeshond Datapack:
//!
//! - [datapack::DataHandle] - For keeping track of data resources in use
//! - [datapack::DataMultistore] and [datapack::DataStore] - For loading and retrieving data resources
//! - [datapack::source::Source] and [datapack::source::SourceManager] - For defining where resources are loaded from
//!
//! See the documentation for keeshond_treats for the higher level APIs included in that package.
#[cfg(test)] extern crate rand;
#[cfg(feature = "graphical_panic")] extern crate backtrace;
#[cfg(feature = "imgui_feature")] extern crate imgui;
#[cfg(feature = "imgui_feature")] extern crate imgui_sys;
#[cfg(feature = "imgui_feature")] extern crate imgui_glium_renderer;
#[cfg(feature = "imgui_feature")] #[macro_use] extern crate cstr_macro;
extern crate failure;
#[macro_use] extern crate failure_derive;
#[macro_use] extern crate log;
#[macro_use] extern crate downcast_rs;
extern crate getopts;
extern crate sdl2;
extern crate sdl2_sys;
extern crate serde;
extern crate serde_json;
extern crate rustc_hash;
extern crate smallvec;
extern crate bit_set;
extern crate bitarray_set;
extern crate typenum;
extern crate generic_array;
extern crate bitflags;
extern crate cgmath;
#[macro_use] extern crate glium;
#[cfg(windows)] extern crate winapi;
mod thirdparty;
#[cfg(test)] mod tests;
pub extern crate keeshond_datapack as datapack;
pub mod crate_reexport;
pub mod doglog;
pub mod util;
#[cfg(feature = "imgui_feature")] mod imgui_handler;
#[cfg(feature = "audio")] pub extern crate keeshond_audio as audio;
pub mod input;
pub mod scene;
pub mod renderer;
pub mod gameloop;