public bool UpdateFrame(Rectangle screenSize)
        {
            ScreenSize  = screenSize;
            IsValidGame = false;

            AllPlayers.Clear();

            if (!RPM.IsValid(gameContext.m_ClientPlayerManager))
            {
                return(false);
            }
            playerManager = RPM.Read <Frostbite.ClientPlayerManager>(gameContext.m_ClientPlayerManager);

            if (!RPM.IsValid(gameRenderer.m_RenderView))
            {
                return(false);
            }
            gameRenderview = RPM.Read <Frostbite.RenderView>(gameRenderer.m_RenderView);
            ViewProjection = gameRenderview.m_ViewProjection;

            if (!RPM.IsValid(playerManager.m_LocalPlayer))
            {
                return(false);
            }
            LocalPlayer = new Player(playerManager.m_LocalPlayer);

            if (LocalPlayer.IsValidPlayer)
            {
                if (!RPM.IsValid(playerManager.m_PlayerList))
                {
                    return(false);
                }

                for (ulong i = 0; i < maxPlayers; i++)
                {
                    Player player = new Player(RPM.Read <ulong>(playerManager.m_PlayerList + (i * sizeof(ulong))));

                    if ((player.IsValidPlayer) && (player.Name != LocalPlayer.Name))
                    {
                        if ((player.TeamId != LocalPlayer.TeamId) && (player.TeamId != 0))
                        {
                            player.ScreenPosition = (Vector2)WorldToScreen(player.Position);
                            player.Distance       = Vector3.Subtract(LocalPlayer.Position, player.Position).Length();

                            AllPlayers.Add(player);
                        }
                    }
                }
            }

            IsValidGame = true;
            return(true);
        }
        public GameManager(Process process, Rectangle screenSize)
        {
            SigScanSharp SigScan = new SigScanSharp(RPM.GetHandle());
            var          t       = process.MainModule;

            SigScan.SelectModule(process.MainModule);

            SigScan.AddPattern("GameRenderer", "48 8B 0D ? ? ? ? 48 85 C9 74 0B 48 8B 01 BA ? ? ? ? FF 50 68");
            SigScan.AddPattern("GameContext", "48 89 15 ? ? ? ? 48 89 CB");
            SigScan.AddPattern("FirstTypeInfo", "48 8B 05 ? ? ? ? 48 89 41 08 48 89 0D ? ? ? ?");

            var result = SigScan.FindPatterns(out long lTime);

            pGameContext   = SigScan.FindOffset(result["GameContext"]);
            pGameRenderer  = SigScan.FindOffset(result["GameRenderer"]);
            pFirstTypeInfo = SigScan.FindOffset(result["FirstTypeInfo"]);

            Console.WriteLine("GameRenderer  : 0x{0}", pGameRenderer.ToString("X"));
            Console.WriteLine("GameContext   : 0x{0}", pGameContext.ToString("X"));
            Console.WriteLine("FirstTypeInfo : 0x{0}", pFirstTypeInfo.ToString("X"));

            if (!RPM.IsValid(pGameContext))
            {
                IsValidGame = false; return;
            }
            if (!RPM.IsValid(pGameRenderer))
            {
                IsValidGame = false; return;
            }
            if (!RPM.IsValid(pFirstTypeInfo))
            {
                IsValidGame = false; return;
            }

            pGameContext  = RPM.Read <ulong>(pGameContext);
            pGameRenderer = RPM.Read <ulong>(pGameRenderer);

            gameContext  = RPM.Read <Frostbite.ClientGameContext>(pGameContext);
            gameRenderer = RPM.Read <Frostbite.GameRenderer>(pGameRenderer);

            pPlayerManager  = gameContext.m_ClientPlayerManager;
            pGameRenderView = gameRenderer.m_RenderView;

            if (!RPM.IsValid(gameContext.m_ClientPlayerManager))
            {
                IsValidGame = false; return;
            }
            playerManager = RPM.Read <Frostbite.ClientPlayerManager>(gameContext.m_ClientPlayerManager);

            AllPlayers = new List <Player>();

            ScreenSize = screenSize;
        }