diff --git a/systems/pair_system.go b/systems/pair_system.go index 37d8276..c1735f0 100644 --- a/systems/pair_system.go +++ b/systems/pair_system.go @@ -84,6 +84,26 @@ func (system *PairSystem) Update() error { } } + doorquery := system.DoorSelector.Query(system.World) + for doorquery.Next() { + doorpos, _, _, door := doorquery.Get() + + for _, player := range observer.GetPlayers() { + if !system.World.Alive(player) { + continue + } + + playerposition := (*Position)(system.World.Get(player, posID)) + playervelocity := (*Velocity)(system.World.Get(player, veloID)) + + ok, newpos := doorpos.Intersects(playerposition, playervelocity) + if ok && !door.IsOpen { + playervelocity.Change(Stop) + playerposition.Set(newpos) + } + } + } + for _, toggle := range EntitiesToSwitch { _, _, _, door := system.DoorMapper.Get(toggle.Entity) door.Toggle()