Crate egui_tetra[][src]

Expand description

egui-tetra

egui-tetra is a library that helps integrate egui, an immediate mode GUI library, with Tetra, a 2D game framework.

Usage

The easiest way to use egui-tetra is to make your main state struct implement egui-tetra’s State trait instead of Tetra’s. This will give you access to a ui callback where you can do your GUI rendering.

use std::error::Error;
use egui_tetra::egui;

struct MainState;

impl egui_tetra::State<Box<dyn Error>> for MainState {
	fn ui(
		&mut self,
		ctx: &mut tetra::Context,
		egui_ctx: &egui::CtxRef,
	) -> Result<(), Box<dyn Error>> {
		egui::Window::new("hi!").show(egui_ctx, |ui| {
			ui.label("Hello world!");
		});
		Ok(())
	}

	fn update(
		&mut self,
		ctx: &mut tetra::Context,
		egui_ctx: &egui::CtxRef,
	) -> Result<(), Box<dyn Error>> {
        /// Your update code here
		Ok(())
	}

	fn draw(
		&mut self,
		ctx: &mut tetra::Context,
		egui_ctx: &egui::CtxRef,
	) -> Result<(), Box<dyn Error>> {
        /// Your drawing code here
		Ok(())
	}

	fn event(
		&mut self,
		ctx: &mut tetra::Context,
		egui_ctx: &egui::CtxRef,
		event: tetra::Event,
	) -> Result<(), Box<dyn Error>> {
        /// Your event handling code here
		Ok(())
	}
}

When running the Tetra Context, wrap your state struct in a StateWrapper to make it compatible with Tetra’s State trait.

fn main() -> Result<(), Box<dyn Error>> {
	tetra::ContextBuilder::new("example", 800, 600)
		.build()?
		.run(|_| Ok(egui_tetra::StateWrapper::new(MainState)))
}

If you need more control, you can use EguiWrapper and manually hook up egui to Tetra’s callbacks.

Re-exports

pub use egui;

Structs

Wraps an egui context with features that are useful for integrating egui with Tetra.

An adaptor that implements tetra::State for implementors of State.

Enums

An error that can occur when using egui-tetra.

Traits

A trait analogous to tetra::State, but with the addition of a ui callback and an egui_ctx argument in the other callbacks.