public bool IsEmptyAt(Vector3Int position) { for (var index = 0; index < LayersKeys.Length; index++) { LayerType layer = LayersKeys[index]; if (layer != LayerType.Objects && HasTile(position, layer)) { return(false); } if (layer == LayerType.Objects) { var objects = ((ObjectLayer)LayersValues[index]).Objects.Get(position); for (var i = 0; i < objects.Count; i++) { RegisterTile o = objects[i]; if (!o.IsPassable()) { return(false); } } } } return(true); }
public override bool IsPassableAt(Vector3Int origin, Vector3Int to, bool inclPlayers = true, GameObject context = null) { //Targeting windoors here List <RegisterTile> objectsOrigin = Objects.Get(origin); for (var i = 0; i < objectsOrigin.Count; i++) { if (!objectsOrigin[i].IsPassableTo(to) && (!context || objectsOrigin[i].gameObject != context)) { //Can't get outside the tile because windoor doesn't allow us return(false); } } List <RegisterTile> objectsTo = Objects.Get(to); for (var i = 0; i < objectsTo.Count; i++) { RegisterTile o = objectsTo[i]; if ((inclPlayers || o.ObjectType != ObjectType.Player) && !o.IsPassable(origin) && (!context || o.gameObject != context)) { return(false); } } return(base.IsPassableAt(origin, to, inclPlayers)); }
public override bool IsPassableAt(Vector3Int origin, Vector3Int to, bool inclPlayers = true, GameObject context = null) { //Targeting windoors here List <RegisterTile> objectsOrigin = Objects.Get(origin); for (var i = 0; i < objectsOrigin.Count; i++) { if (!objectsOrigin[i].IsPassableTo(to) && (!context || objectsOrigin[i].gameObject != context)) { //Can't get outside the tile because windoor doesn't allow us return(false); } } List <RegisterTile> objectsTo = Objects.Get(to); bool toPass; if (inclPlayers) { toPass = true; for (var i = 0; i < objectsTo.Count; i++) { RegisterTile o = objectsTo[i]; if (!o.IsPassable(origin) && (!context || o.gameObject != context)) { toPass = false; break; } } } else { toPass = true; for (var i = 0; i < objectsTo.Count; i++) { RegisterTile o = objectsTo[i]; if (o.ObjectType != ObjectType.Player && !o.IsPassable(origin) && (!context || o.gameObject != context)) { toPass = false; break; } } } bool rods = base.IsPassableAt(origin, to, inclPlayers); // Logger.Log( $"IPA = {toPass} && {rods} @ {MatrixManager.Instance.LocalToWorldInt( origin, MatrixManager.Get(0).Matrix )} -> {MatrixManager.Instance.LocalToWorldInt( to, MatrixManager.Get(0).Matrix )} " + // $" (in local: {origin} -> {to})", Category.Matrix ); return(toPass && rods); }
public override bool IsPassableAt(Vector3Int origin, Vector3Int to) { RegisterTile objTo = Objects.GetFirst <RegisterTile>(to); if (objTo && !objTo.IsPassable(origin)) { return(false); } RegisterTile objOrigin = Objects.GetFirst <RegisterTile>(origin); if (objOrigin && !objOrigin.IsPassable(to)) { return(false); } return(base.IsPassableAt(origin, to)); }
public bool IsEmptyAt(GameObject[] context, Vector3Int position) { for (var i1 = 0; i1 < LayersKeys.Length; i1++) { LayerType layer = LayersKeys[i1]; if (layer != LayerType.Objects && HasTile(position, layer)) { return(false); } if (layer == LayerType.Objects) { var objects = ((ObjectLayer)LayersValues[i1]).Objects.Get(position); for (var i = 0; i < objects.Count; i++) { RegisterTile o = objects[i]; if (!o.IsPassable()) { bool isExcluded = false; for (var index = 0; index < context.Length; index++) { if (o.gameObject == context[index]) { isExcluded = true; break; } } if (!isExcluded) { return(false); } } } } } return(true); }