BlindPrediction.Program.Drawing_OnEndScene C# (CSharp) Метод

Drawing_OnEndScene() статический приватный Метод

static private Drawing_OnEndScene ( EventArgs args ) : void
args System.EventArgs
Результат void
        static void Drawing_OnEndScene(EventArgs args)
        {
            if (!Menu.Item("toggle").GetValue<bool>()) return;
            if (Drawing.Direct3DDevice9 == null || Drawing.Direct3DDevice9.IsDisposed || !Game.IsInGame)
                return;

            var player = ObjectMgr.LocalPlayer;
            if (player == null || player.Team == Team.Observer) return;

            try {
                foreach (var v in HeroList) {
                    if (!v.Key.IsVisible && v.Key.IsAlive) {
                        if (Menu.Item("predict").GetValue<bool>())
                        {
                            Vector3 ePos =
                                new Vector3(
                                    v.Key.NetworkPosition.X +
                                    (float) Math.Cos(v.Key.NetworkRotationRad)*v.Key.MovementSpeed*
                                    (Game.GameTime - v.Value),
                                    v.Key.NetworkPosition.Y +
                                    (float) Math.Sin(v.Key.NetworkRotationRad)*v.Key.MovementSpeed*
                                    (Game.GameTime - v.Value),
                                    v.Key.NetworkPosition.Z + 50);
                            if (v.Key.NetworkActivity != NetworkActivity.Move) ePos = v.Key.NetworkPosition;
                            Text.DrawText(null,
                                FirstCharToUpper(v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5)),
                                (int) Math.Round(WorldToMiniMap(ePos).X, MidpointRounding.AwayFromZero) -
                                (int) (v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5).Length*3*ScaleX),
                                (int) Math.Round(WorldToMiniMap(ePos).Y, MidpointRounding.AwayFromZero) -
                                (int) (5*ScaleY),
                                Color.White);

                        }
                        else
                        {
                            Vector3 ePos =
                                new Vector3(
                                    v.Key.NetworkPosition.X,
                                    v.Key.NetworkPosition.Y,
                                    v.Key.NetworkPosition.Z);
                            if (v.Key.NetworkActivity != NetworkActivity.Move) ePos = v.Key.NetworkPosition;
                            Text.DrawText(null,
                                FirstCharToUpper(v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5)),
                                (int)Math.Round(WorldToMiniMap(ePos).X, MidpointRounding.AwayFromZero) -
                                (int)(v.Key.Name.Substring(v.Key.Name.LastIndexOf("hero_") + 5).Length * 3 * ScaleX),
                                (int)Math.Round(WorldToMiniMap(ePos).Y, MidpointRounding.AwayFromZero) -
                                (int)(5 * ScaleY),
                                Color.White);

                        }

                    }
                }
            } catch (Exception) {
                // Do nothing, HeroList has simply been modified during this foreach loop.
            }
        }