diff --git a/examples/prefabs.rs b/examples/prefabs.rs index d4e6513..cc585c2 100644 --- a/examples/prefabs.rs +++ b/examples/prefabs.rs @@ -4,7 +4,7 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) { // Initialize the texture atlas renderer.init_atlas(); - // Register components + // Register needed components app.register_component::(); app.register_component::(); @@ -13,33 +13,33 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) { app, "player", Position2D::from_vec(v2::new(0.0, 0.0)), - Color::new(0.0, 1.0, 0.0, 1.0) // Green player + Color::new(0.0, 1.0, 0.0, 1.0) ); register_prefab!( app, "enemy", Position2D::from_vec(v2::new(5.0, 5.0)), - Color::new(1.0, 0.0, 0.0, 1.0) // Red enemy + Color::new(1.0, 0.0, 0.0, 1.0) ); register_prefab!( app, "pickup", Position2D::from_vec(v2::new(-5.0, -5.0)), - Color::new(1.0, 1.0, 0.0, 1.0) // Yellow pickup + Color::new(1.0, 1.0, 0.0, 1.0) ); if let Some(player_id) = app.spawn_prefab("player") { - debug!("Spawned player with ID: {}", player_id); + debug!("Spawned player with ID: {:?}", player_id); } if let Some(enemy_id) = app.spawn_prefab("enemy") { - debug!("Spawned enemy with ID: {}", enemy_id); + debug!("Spawned enemy with ID: {:?}", enemy_id); } if let Some(pickup_id) = app.spawn_prefab("pickup") { - debug!("Spawned pickup with ID: {}", pickup_id); + debug!("Spawned pickup with ID: {:?}", pickup_id); } } diff --git a/examples/simple_move_2d.rs b/examples/simple_move_2d.rs index 42a182a..8ae4fdb 100644 --- a/examples/simple_move_2d.rs +++ b/examples/simple_move_2d.rs @@ -33,7 +33,8 @@ fn handle_input(app: &mut App, dt: f32) { { update_position( app.input_manager().clone(), - app.get_component_mut::(1).unwrap(), + app.get_component_mut::(EntityId { index: 1, gen: 0 }) + .unwrap(), dt, ); } diff --git a/examples/simple_text.rs b/examples/simple_text.rs index ebea0ec..2c54303 100644 --- a/examples/simple_text.rs +++ b/examples/simple_text.rs @@ -1,5 +1,12 @@ use comet::prelude::*; +// A general state struct that caches known/static EntityIds +// In this example we just cache the EntityId for the text entity +#[derive(Default)] +struct TextState { + text: EntityId, +} + fn setup(app: &mut App, renderer: &mut Renderer2D) { renderer.init_atlas(); // Loading the font from the res/fonts directory with a rendered size of 77px @@ -24,6 +31,11 @@ fn setup(app: &mut App, renderer: &mut Renderer2D) { sRgba::::from_hex("#abb2bfff"), // Color of the text ), ); + + // Cache text entity in game state + if let Some(state) = app.game_state_mut::() { + state.text = text; + } } #[allow(unused_variables)] @@ -32,9 +44,12 @@ fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) { let size = renderer.size(); // Recalculating the position of the text every frame to ensure the same relative position - let transform = app.get_component_mut::(1).unwrap(); - transform.position_mut().set_x(-((size.width - 50) as f32)); - transform.position_mut().set_y((size.height - 100) as f32); + if let Some(state) = app.game_state::() { + if let Some(transform) = app.get_component_mut::(state.text) { + transform.position_mut().set_x(-((size.width - 50) as f32)); + transform.position_mut().set_y((size.height - 100) as f32); + } + } renderer.render_scene_2d(app.scene_mut()); } @@ -42,6 +57,7 @@ fn update(app: &mut App, renderer: &mut Renderer2D, dt: f32) { fn main() { App::new() .with_preset(App2D) + .with_game_state(TextState::default()) .with_title("Simple Text") .run::(setup, update); }