pub trait GameObject {
// Provided methods
fn activate(&mut self, context: &mut GameContext<'_>) { ... }
fn deactivate(&mut self, context: &mut GameContext<'_>) { ... }
fn process(&mut self, context: &mut GameContext<'_>, delta_time: f32) { ... }
fn draw(&mut self, context: &mut GameContext<'_>) { ... }
}