void CreateLineInfos() { currentLineInfos = new List <LineOfSightInfo> [mapDiagonal * 2, mapDiagonal * 2]; List <LineOfSightInfo> centerInfos = new List <LineOfSightInfo>(); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 1, 0)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 1, -1)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 0, -1)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, -1, -1)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, -1, 0)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, -1, 1)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 0, 1)); centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 1, 1)); currentLineInfos[0, 0] = centerInfos; for (int i = 0; i < centerInfos.Count; i++) { LineOfSightInfo lineInfo = centerInfos[i]; lineInfo.GeneratePoints(mapDiagonal); for (int j = 1; j < lineInfo.Points.Length; j++) { PointInfo point = lineInfo.GetNextPoint(); List <LineOfSightInfo> infos = new List <LineOfSightInfo>(); Vector2 direction = new Vector2(lineInfo.DirectionX, lineInfo.DirectionY).Rotate(-45).Round(); infos.Add(new LineOfSightInfo(point.coordinateX, point.coordinateY, (int)direction.x, (int)direction.y)); direction = new Vector2(lineInfo.DirectionX, lineInfo.DirectionY).Rotate(45).Round(); infos.Add(new LineOfSightInfo(point.coordinateX, point.coordinateY, (int)direction.x, (int)direction.y)); infos.ForEach(info => info.GeneratePoints(mapDiagonal)); currentLineInfos[point.coordinateX, point.coordinateY] = infos; } } }
private void HandleTargetInSightChanged(LineOfSightInfo los) { StopAllCoroutines(); StartCoroutine(FadeColorRoutine(isLookingAtEnemy: los.isEnemyInSight)); }