2026-07-25 12:39:32 +02:00
|
|
|
internal import CPlaydate
|
|
|
|
|
|
|
|
|
|
extension Sprite {
|
2026-09-18 13:15:08 +00:00
|
|
|
/// How a moving sprite reacts to a collision. Wraps `SpriteCollisionResponseType`.
|
2026-07-25 12:39:32 +02:00
|
|
|
public enum CollisionResponse: UInt32, Sendable {
|
2026-09-18 13:15:08 +00:00
|
|
|
/// Slides along the other sprite.
|
2026-07-25 12:39:32 +02:00
|
|
|
case slide = 0
|
2026-09-18 13:15:08 +00:00
|
|
|
/// Stops at the point of collision.
|
2026-07-25 12:39:32 +02:00
|
|
|
case freeze = 1
|
2026-09-18 13:15:08 +00:00
|
|
|
/// Passes through; the collision is still reported.
|
2026-07-25 12:39:32 +02:00
|
|
|
case overlap = 2
|
|
|
|
|
case bounce = 3
|
|
|
|
|
|
2026-09-18 13:15:08 +00:00
|
|
|
/// Unknown C values map to `.freeze`.
|
2026-07-25 12:39:32 +02:00
|
|
|
init(_ response: SpriteCollisionResponseType) {
|
|
|
|
|
self = CollisionResponse(rawValue: UInt32(response.rawValue)) ?? .freeze
|
|
|
|
|
}
|
|
|
|
|
var cValue: SpriteCollisionResponseType { SpriteCollisionResponseType(SpriteCollisionResponseType.RawValue(rawValue)) }
|
|
|
|
|
}
|
|
|
|
|
}
|