/// <summary>
        /// Update data from process.
        /// </summary>
        public void Update(GameProcess gameProcess)
        {
            var addressBase = gameProcess.ModuleClient.Read <IntPtr>(Offsets.dwLocalPlayer);

            if (addressBase == IntPtr.Zero)
            {
                return;
            }

            // get matrices
            MatrixViewport = GfxMath.GetMatrixViewport(gameProcess.WindowRectangleClient.Size);

            // read data
            Origin        = gameProcess.Process.Read <Vector3>(addressBase + Offsets.m_vecOrigin);
            ViewOffset    = gameProcess.Process.Read <Vector3>(addressBase + Offsets.m_vecViewOffset);
            EyePosition   = Origin + ViewOffset;
            ViewAngles    = gameProcess.Process.Read <Vector3>(gameProcess.ModuleEngine.Read <IntPtr>(Offsets.dwClientState) + Offsets.dwClientState_ViewAngles);
            AimPunchAngle = gameProcess.Process.Read <Vector3>(addressBase + Offsets.m_aimPunchAngle);
            Fov           = gameProcess.Process.Read <int>(addressBase + Offsets.m_iFOV);
            if (Fov == 0)
            {
                Fov = 90;           // correct for default
            }
            // calc data
            AimDirection = GetAimDirection(ViewAngles, AimPunchAngle);
        }
        /// <summary>
        /// Update data from process.
        /// </summary>
        public void Update(GameProcess gameProcess)
        {
            var addressBase = gameProcess.ModuleClient.Read <IntPtr>(Offsets.dwLocalPlayer);

            if (addressBase == IntPtr.Zero)
            {
                return;
            }

            var origin      = gameProcess.Process.Read <Vector3>(addressBase + Offsets.m_vecOrigin);
            var viewOffset  = gameProcess.Process.Read <Vector3>(addressBase + Offsets.m_vecViewOffset);
            var eyePosition = origin + viewOffset;

            Console.WriteLine($"{eyePosition.X:0.00} {eyePosition.Y:0.00} {eyePosition.Z:0.00}");
        }
 /// <summary />
 public GameData(GameProcess gameProcess)
 {
     GameProcess = gameProcess;
     Player      = new Player();
     Entities    = Enumerable.Range(0, 64).Select(index => new Entity(index)).ToArray();
 }
 /// <summary />
 public GameData(GameProcess gameProcess)
 {
     GameProcess = gameProcess;
     Player      = new Player();
 }