コード例 #1
0
        void SetVision(Team targetTeam, Team enemyTeam)
        {
            Dictionary <Body, UnitEntity> targetPlayers = new Dictionary <Body, UnitEntity>(units[targetTeam]);
            Dictionary <Body, UnitEntity> enemyPlayers  = new Dictionary <Body, UnitEntity>(units[enemyTeam]);

            foreach (var enemyPlayer in enemyPlayers)
            {
                if (targetPlayers.Count == 0)
                {
                    break;
                }

                var bodies = collision.GetCircleBodies(((DynamicBody)enemyPlayer.Key).GetPosition(), visionRadius);
                foreach (var body in bodies)
                {
                    if (targetPlayers.Any(x => x.Key == body))
                    {
                        if (collision.CheckLineOfSight(((DynamicBody)enemyPlayer.Key).GetPosition(), ((DynamicBody)body).GetPosition()))
                        {
                            var item = targetPlayers.First(x => x.Key == body);
                            targetPlayers[item.Key].GetComponent <VisionComponent>().SetVision(enemyTeam, true);
                            targetPlayers.Remove(item.Key);
                        }
                    }
                }
            }

            foreach (var targetPlayer in targetPlayers.Values)
            {
                targetPlayer.GetComponent <VisionComponent>().SetVision(enemyTeam, false);
            }
        }