summaryrefslogtreecommitdiff
path: root/src/sim/entity
diff options
context:
space:
mode:
Diffstat (limited to 'src/sim/entity')
-rw-r--r--src/sim/entity/mod.rs20
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)]