summaryrefslogtreecommitdiff
path: root/src/sim/entity
diff options
context:
space:
mode:
authorKai Stevenson <kai@kaistevenson.com>2026-08-23 16:40:46 -0700
committerKai Stevenson <kai@kaistevenson.com>2026-08-23 16:40:46 -0700
commit1e0ad48c47f0c4b3c2eadc19d65e20123b931023 (patch)
tree7442dc8b13da815015a04d4093d385cac9cfc933 /src/sim/entity
parentda45c5a7dbb017c8e579d0ab66a2259a70b28f40 (diff)
bullet emitter
Diffstat (limited to 'src/sim/entity')
-rw-r--r--src/sim/entity/mod.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/sim/entity/mod.rs b/src/sim/entity/mod.rs
index 2a046c5..a86a51f 100644
--- a/src/sim/entity/mod.rs
+++ b/src/sim/entity/mod.rs
@@ -49,6 +49,7 @@ impl Marchable for EntityCells {
}
pub trait EntityBehaviour {
+ // TODO merge ctxs?
fn update(&mut self, _update_ctx: &mut EntityUpdateCtx, _ctx: &mut SimCtx, _delta_time: f32) {}
fn physics_update(
&mut self,
@@ -67,6 +68,23 @@ pub struct EntityDef {
}
impl EntityDef {
+ pub fn from_cells_and_rb(
+ cells: EntityCells,
+ rb: RigidBody,
+ behaviour: Option<Box<dyn EntityBehaviour>>,
+ ) -> Self {
+ let collider = RbManager::convex_hull_collider_from_marchable(&cells, Some(10))
+ .mass(mass_from_cells(&cells.cells))
+ .build();
+
+ EntityDef {
+ rb: Some(rb),
+ collider: Some(collider),
+ cells: Some(cells),
+ behaviour,
+ }
+ }
+
pub fn from_cells(
position: Vec2,
cells: EntityCells,