diff options
Diffstat (limited to 'src/sim/entity')
| -rw-r--r-- | src/sim/entity/mod.rs | 18 |
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, |
