private void UpdatePhysics() { if (_physicsFile == null) { return; } try { var physics = _physicsFile.ToStruct <AcSharedPhysics>(AcSharedPhysics.Buffer); if (physics.PacketId != _previousPacketId) { IsPaused = false; _previousPacketId = physics.PacketId; _previousPacketTime = DateTime.Now; if (Status != AcSharedMemoryStatus.Live) { Status = AcSharedMemoryStatus.Live; _gameProcess = TryToFindGameProcess(); KnownProcess = _gameProcess != null; } var graphics = _graphicsFile.ToStruct <AcSharedGraphics>(AcSharedGraphics.Buffer); var staticInfo = _staticInfoFile.ToStruct <AcSharedStaticInfo>(AcSharedStaticInfo.Buffer); Shared = new AcShared(physics, graphics, staticInfo); } else if (_gameProcess?.HasExitedSafe() ?? (DateTime.Now - _previousPacketTime).TotalSeconds > 1d) { IsPaused = false; Status = AcSharedMemoryStatus.Connected; Shared = null; } else { IsPaused = Shared != null && Shared.Graphics.Status == AcGameStatus.AcPause; } } catch (Exception ex) { Logging.Error(ex); Status = AcSharedMemoryStatus.Disabled; } }