Files
old-9heroja/collision/world.go
2023-12-28 14:42:20 +01:00

36 lines
668 B
Go

package collision
type World struct {
Entities []Collidable
}
func (w *World) AddEntity(e Collidable) {
w.Entities = append(w.Entities, e)
}
func (w *World) RemoveEntity(e Collidable) {
for i, entity := range w.Entities {
if entity == e {
w.Entities = append(w.Entities[:i], w.Entities[i+1:]...)
}
}
}
func (w *World) NotifyAboutCollisions() {
for i, entity := range w.Entities {
for j, other := range w.Entities {
if i == j {
continue
}
if entity.CollisionShape().Overlaps(other.CollisionShape()) {
entity.HandleCollisionEvent(other)
other.HandleCollisionEvent(entity)
}
}
}
}
func NewWorld() *World {
return &World{}
}