Files
old-9heroja/collision/world.go
2023-11-30 21:01:49 +01:00

33 lines
641 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 _, other := range w.Entities[i+1:] {
if entity.CollisionShape().Overlaps(other.CollisionShape()) {
entity.HandleCollisionEvent(other)
other.HandleCollisionEvent(entity)
}
}
}
}
func NewWorld() *World {
return &World{}
}