summaryrefslogtreecommitdiff
path: root/src/sim/entity/mod.rs
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2026-08-27 00:26:35 -0700
committerKai Stevenson <kai@kaistevenson.com>2026-08-27 00:26:35 -0700
commit6fcf3b4e085ab8009ff1b0fd34e3f0ff8765465b (patch)
tree38e451957e95f3063332883e37a05d31e80e245b /src/sim/entity/mod.rs
parenta272aa9d9b2c642871abe2dc3379e6ffcce8bf56 (diff)
chair, performance improvement
Diffstat (limited to 'src/sim/entity/mod.rs')
-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)]