NPCs can open doors (#7909)
This commit is contained in:
@@ -172,11 +172,12 @@ namespace Content.Server.AI.Pathfinding.Accessible
|
||||
/// <returns></returns>
|
||||
public bool CanAccess(EntityUid entity, EntityUid target, float range = 0.0f)
|
||||
{
|
||||
var xform = EntityManager.GetComponent<TransformComponent>(target);
|
||||
// TODO: Handle this gracefully instead of just failing.
|
||||
if (!EntityManager.GetComponent<TransformComponent>(target).GridID.IsValid())
|
||||
if (!xform.GridID.IsValid())
|
||||
return false;
|
||||
|
||||
var targetTile = _mapManager.GetGrid(EntityManager.GetComponent<TransformComponent>(target).GridID).GetTileRef(EntityManager.GetComponent<TransformComponent>(target).Coordinates);
|
||||
var targetTile = _mapManager.GetGrid(xform.GridID).GetTileRef(xform.Coordinates);
|
||||
var targetNode = _pathfindingSystem.GetNode(targetTile);
|
||||
|
||||
var collisionMask = 0;
|
||||
@@ -209,12 +210,12 @@ namespace Content.Server.AI.Pathfinding.Accessible
|
||||
|
||||
public bool CanAccess(EntityUid entity, PathfindingNode targetNode)
|
||||
{
|
||||
if (EntityManager.GetComponent<TransformComponent>(entity).GridID != targetNode.TileRef.GridIndex)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
var xform = EntityManager.GetComponent<TransformComponent>(entity);
|
||||
|
||||
var entityTile = _mapManager.GetGrid(EntityManager.GetComponent<TransformComponent>(entity).GridID).GetTileRef(EntityManager.GetComponent<TransformComponent>(entity).Coordinates);
|
||||
if (xform.GridID != targetNode.TileRef.GridIndex)
|
||||
return false;
|
||||
|
||||
var entityTile = _mapManager.GetGrid(xform.GridID).GetTileRef(xform.Coordinates);
|
||||
var entityNode = _pathfindingSystem.GetNode(entityTile);
|
||||
var entityRegion = GetRegion(entityNode);
|
||||
var targetRegion = GetRegion(targetNode);
|
||||
@@ -424,12 +425,14 @@ namespace Content.Server.AI.Pathfinding.Accessible
|
||||
/// <returns></returns>
|
||||
public PathfindingRegion? GetRegion(EntityUid entity)
|
||||
{
|
||||
if (!EntityManager.GetComponent<TransformComponent>(entity).GridID.IsValid())
|
||||
var xform = EntityManager.GetComponent<TransformComponent>(entity);
|
||||
|
||||
if (!xform.GridID.IsValid())
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var entityTile = _mapManager.GetGrid(EntityManager.GetComponent<TransformComponent>(entity).GridID).GetTileRef(EntityManager.GetComponent<TransformComponent>(entity).Coordinates);
|
||||
var entityTile = _mapManager.GetGrid(xform.GridID).GetTileRef(xform.Coordinates);
|
||||
var entityNode = _pathfindingSystem.GetNode(entityTile);
|
||||
return GetRegion(entityNode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user