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