diff --git a/src/characters.rs b/src/characters.rs index 167c9f5..6a13849 100644 --- a/src/characters.rs +++ b/src/characters.rs @@ -6,17 +6,13 @@ use crate::util::*; pub fn spawn_player_character(mut commands: Commands) { let (hp, _) = roll("1d6 + 3"); commands.spawn(Creature { - health: Health { - hp, - max: hp, - }, - armor: Armor { - ac: 10, - }, - position: Position { - x: 0.0, - y: 0.0, - }, - }) - .insert(PlayerCharacter); + health: Health { + hp, + max: hp, + }, + armor: Armor { + ac: 10, + }, + spatial: Default::default(), + }).insert(PlayerCharacter); } diff --git a/src/components.rs b/src/components.rs index 71c690f..a1053b2 100644 --- a/src/components.rs +++ b/src/components.rs @@ -12,17 +12,11 @@ pub struct Armor { pub ac: u32, } -#[derive(Component)] -pub struct Position { - pub x: f32, - pub y: f32, -} - #[derive(Bundle)] pub struct Creature { pub health: Health, pub armor: Armor, - pub position: Position, + pub spatial: SpatialBundle, } #[derive(Component)] diff --git a/src/main.rs b/src/main.rs index 48bf52d..d9e9842 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,13 +5,45 @@ pub mod components; pub mod systems; pub mod characters; -use crate::characters::*; +use components::*; +use characters::*; + +fn setup( + query: Query<&Transform, With>, + mut commands: Commands, + mut meshes: ResMut>, + mut materials: ResMut>, +) { + for transform in query.iter() { + commands.spawn(PbrBundle { + mesh: meshes.add(Mesh::from(shape::Capsule{ + radius: 1.0, + rings: 32, + depth: 2.0, + ..Default::default() + })), + material: materials.add(StandardMaterial { + unlit: true, + ..Default::default() + }), + transform: Transform::clone(transform), + ..Default::default() + }); + commands.spawn(DirectionalLightBundle::default()); + commands.spawn(Camera3dBundle{ + transform: Transform::from_xyz(0.0, 10.0, 0.0).looking_at(Vec3::default(), Vec3::Y), + projection: OrthographicProjection::default().into(), + ..Default::default() + }); + } +} fn main() { App::new() .add_plugins(DefaultPlugins) // Add systems, whatnot .add_systems(Startup, spawn_player_character) - .add_systems(Startup, spawn_player_character) + .add_systems(Startup, spawn_player_character) + .add_systems(Startup, setup) .run(); }