Module pix_engine::engine
source · Expand description
Primary [PiEngine] trait and functions which drive your application.
This is the core module of the pix-engine crate and is responsible for building and running
any application using it.
EngineBuilder allows you to customize various engine features and, once built, can
run your application which must implement PixEngine::on_update.
Example
use pix_engine::prelude::*;
struct MyApp;
impl PixEngine for MyApp {
fn on_start(&mut self, s: &mut PixState) -> PixResult<()> {
// Setup App state. `PixState` contains engine specific state and
// utility functions for things like getting mouse coordinates,
// drawing shapes, etc.
s.background(220);
s.font_family(Font::NOTO)?;
s.font_size(16);
Ok(())
}
fn on_update(&mut self, s: &mut PixState) -> PixResult<()> {
// Main render loop. Called as often as possible, or based on `target frame rate`.
if s.mouse_pressed() {
s.fill(color!(0));
} else {
s.fill(color!(255));
}
let m = s.mouse_pos();
s.circle([m.x(), m.y(), 80])?;
Ok(())
}
fn on_stop(&mut self, s: &mut PixState) -> PixResult<()> {
// Teardown any state or resources before exiting.
Ok(())
}
}
fn main() -> PixResult<()> {
let mut app = MyApp;
let mut engine = Engine::builder()
.dimensions(800, 600)
.title("MyApp")
.build()?;
engine.run(&mut app)
}Structs
The core engine that maintains the render loop, state, drawing functions, event handling, etc.
Builds a
Engine instance by providing several configration functions.Traits
Trait for allowing the
Engine to drive your application and send notification of events,
passing along a &mut PixState to allow interacting with the Engine.