fix to make player stop on closed door
This commit is contained in:
parent
c7c3859a70
commit
c6f9557483
@ -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 {
|
for _, toggle := range EntitiesToSwitch {
|
||||||
_, _, _, door := system.DoorMapper.Get(toggle.Entity)
|
_, _, _, door := system.DoorMapper.Get(toggle.Entity)
|
||||||
door.Toggle()
|
door.Toggle()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user