protected override NodeStates Tick(Tick tick) { NodeStates result = NodeStates.Error; Entity entity = tick.Target as Entity; if (entity != null) { SideManager sideManager = Locator.Get <SideManager>(); SideComponent sideComponent = entity.GetComponent <SideComponent>(); if (sideComponent != null) { TileMap <Cell> map = Locator.Get <MapManager>().Map; List <Entity> enemies = sideManager.GetOtherSidesActors(sideComponent.Side); result = NodeStates.Failure; int i = 0; while (result == NodeStates.Failure && i < enemies.Count) { bool isEnemyInVisibleCell = map[enemies[i].CellTransform.Position].Visibility == VisibilityType.Visible; if (isEnemyInVisibleCell && CanSeeEntity(entity, enemies[i])) { result = NodeStates.Success; } i++; } } } return(result); }
protected override NodeStates Tick(Tick tick) { NodeStates result = NodeStates.Success; Entity entity = tick.Target as Entity; SideComponent sideComponent = entity.GetComponent <SideComponent>(); List <Entity> enemies = Locator.Get <SideManager>().GetOtherSidesActors(sideComponent.Side); Entity target = FindClosestEntity(enemies, entity); tick.Blackboard.Set(targetId, target); return(result); }
private void AddSideActor(Entity actor) { SideComponent sideComponent = actor.GetComponent <SideComponent>(); if (sideComponent != null) { List <Entity> actorList; if (actors.TryGetValue(sideComponent.Side, out actorList)) { actorList.Add(actor); } } }