#pragma once #include #include #include #include #include namespace F4T::RemotePlayerState { struct RemotePlayerState { std::uint32_t playerId{}; float x{}; float y{}; float z{}; float angleZ{}; std::string movementType; std::string cellId; std::string worldspaceId; std::optional clientTime; std::optional serverTime; bool isMoving{ false }; bool isSprinting{ false }; bool isSneaking{ false }; bool isJumping{ false }; bool weaponDrawn{ false }; float movementSpeed{ 0.0F }; std::chrono::steady_clock::time_point lastReceivedLocalTime{}; }; void SetAssignedPlayerId(std::uint32_t a_playerId); std::optional GetAssignedPlayerId(); bool IsAssignedPlayerId(std::uint32_t a_playerId); void ClearAssignedPlayerId(); void UpdateRemotePlayer(RemotePlayerState a_state); bool RemoveRemotePlayer(std::uint32_t a_playerId); void ClearRemotePlayers(); std::vector GetRemotePlayerSnapshot(); }