summaryrefslogtreecommitdiff
path: root/composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt
diff options
context:
space:
mode:
Diffstat (limited to 'composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt')
-rw-r--r--composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt25
1 files changed, 21 insertions, 4 deletions
diff --git a/composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt b/composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt
index ffae10b..0b4818d 100644
--- a/composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt
+++ b/composeApp/src/commonMain/kotlin/coffee/liz/ecs/physics/Components.kt
@@ -4,12 +4,29 @@ import coffee.liz.ecs.Component
import coffee.liz.ecs.Rect
import coffee.liz.ecs.Vec2
-data class Position(val vec2: Vec2): Component
-data class Velocity(val vec2: Vec2) : Component
-data class Acceleration(val vec2: Vec2) : Component
+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 Collidable(val hitboxes: Collection<Rect>): Component
+data class Colliding<T : Enum<*>>(
+ val hitboxes: Collection<Rect>,
+ val group: CollisionGroup<T>,
+ val propagateMovement: Boolean = true,
+) : Component