package coffee.liz.ecs.physics import coffee.liz.ecs.Component import coffee.liz.ecs.Rect import coffee.liz.ecs.Vec2 data class Position( val position: Vec2, ) : Component data class Velocity( val velocity: Vec2, ) : Component data class Acceleration( val acceleration: Vec2, ) : Component interface CollisionGroup { val collisionGroup: TGroup val collideInto: Set } /** * @param hitboxes a collection of hitboxes to check collisions against relative to [Rect.topLeft] as the top left of * [Position]. */ data class Colliding>( val hitboxes: Collection, val group: CollisionGroup, val propagateMovement: Boolean = true, ) : Component