summaryrefslogtreecommitdiff
path: root/composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt
blob: 0b4818dd931f7e707b9c2c48388f66ecbc377050 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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<TGroup> {
    val collisionGroup: TGroup
    val collideInto: Set<TGroup>
}

/**
 * @param hitboxes a collection of hitboxes to check collisions against relative to [Rect.topLeft] as the top left of
 * [Position].
 */
data class Colliding<T : Enum<*>>(
    val hitboxes: Collection<Rect>,
    val group: CollisionGroup<T>,
    val propagateMovement: Boolean = true,
) : Component