fix to make player stop on closed door

This commit is contained in:
Thomas von Dein 2024-03-29 18:54:47 +01:00
parent c7c3859a70
commit c6f9557483

View File

@ -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()