From c6f9557483a74462ae4d3e7be7c86f7a508dfacd Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Fri, 29 Mar 2024 18:54:47 +0100 Subject: [PATCH] fix to make player stop on closed door --- systems/pair_system.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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()