29 lines
736 B
Go
29 lines
736 B
Go
package land
|
|
|
|
type PositionedObject interface {
|
|
GetPosition() Vector2D
|
|
GetSize() Vector2D
|
|
}
|
|
|
|
func IsOverlapWithPoint(obj PositionedObject, point Vector2D) bool {
|
|
return point.X >= obj.GetPosition().X && point.X <= obj.GetPosition().X+obj.GetSize().X &&
|
|
point.Y >= obj.GetPosition().Y && point.Y <= obj.GetPosition().Y+obj.GetSize().Y
|
|
}
|
|
|
|
type CollidableObject interface {
|
|
GetPosition() Vector2D
|
|
GetSize() Vector2D
|
|
OnCollide(other CollidableObject)
|
|
}
|
|
|
|
func checkCollisionBetweenObject(a, b CollidableObject) bool {
|
|
aPos := a.GetPosition()
|
|
aSize := a.GetSize()
|
|
bPos := b.GetPosition()
|
|
bSize := b.GetSize()
|
|
return aPos.X < bPos.X+bSize.X &&
|
|
aPos.X+aSize.X > bPos.X &&
|
|
aPos.Y < bPos.Y+bSize.Y &&
|
|
aPos.Y+aSize.Y > bPos.Y
|
|
}
|