diff options
Diffstat (limited to 'src/sim/entity')
| -rw-r--r-- | src/sim/entity/mod.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/sim/entity/mod.rs b/src/sim/entity/mod.rs index af4f0dd..fda0a79 100644 --- a/src/sim/entity/mod.rs +++ b/src/sim/entity/mod.rs @@ -10,6 +10,7 @@ use crate::{ sim::{ cell::Cell, lib::marching_squares::Marchable, rb_manager::RbManager, sim_manager::SimCtx, }, + sprite_loader::load_sprite_to_cells, }; fn mass_from_cells(cells: &[Cell]) -> f32 { @@ -103,6 +104,25 @@ impl EntityDef { behaviour, } } + + pub fn from_sprite( + position: Vec2, + path: &str, + behaviour: Option<Box<dyn EntityBehaviour>>, + ) -> Self { + let sprite_cells = load_sprite_to_cells(path); + let mut entity_cells = EntityCells { + cells: sprite_cells.cells, + size: IVec2::new(sprite_cells.width as i32, sprite_cells.height as i32), + }; + + entity_cells + .cells + .iter_mut() + .for_each(|c| c.set_entity_integrated(true)); + + EntityDef::from_cells(position, entity_cells, behaviour) + } } #[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)] |
